Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(268)

Side by Side Diff: third_party/go/src/golang.org/x/mobile/f32/affine_test.go

Issue 1275153002: Remove third_party/golang.org/x/mobile as it is no longer used with Go 1.5. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Remove golang.org/x/mobile Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 package f32
2
3 import (
4 "math"
5 "testing"
6 )
7
8 var xyTests = []struct {
9 x, y float32
10 }{
11 {0, 0},
12 {1, 1},
13 {2, 3},
14 {6.5, 4.3},
15 }
16
17 var a = Affine{
18 {3, 4, 5},
19 {6, 7, 8},
20 }
21
22 func TestInverse(t *testing.T) {
23 wantInv := Affine{
24 {-2.33333, 1.33333, 1},
25 {2, -1, -2},
26 }
27 var gotInv Affine
28 gotInv.Inverse(&a)
29 if !gotInv.Eq(&wantInv, 0.01) {
30 t.Errorf("Inverse: got %s want %s", gotInv, wantInv)
31 }
32
33 var wantId, gotId Affine
34 wantId.Identity()
35 gotId.Mul(&a, &wantInv)
36 if !gotId.Eq(&wantId, 0.01) {
37 t.Errorf("Identity #0: got %s want %s", gotId, wantId)
38 }
39 gotId.Mul(&wantInv, &a)
40 if !gotId.Eq(&wantId, 0.01) {
41 t.Errorf("Identity #1: got %s want %s", gotId, wantId)
42 }
43 }
44
45 func TestAffineScale(t *testing.T) {
46 for _, test := range xyTests {
47 want := a
48 want.Mul(&want, &Affine{{test.x, 0, 0}, {0, test.y, 0}})
49 got := a
50 got.Scale(&got, test.x, test.y)
51
52 if !got.Eq(&want, 0.01) {
53 t.Errorf("(%.2f, %.2f): got %s want %s", test.x, test.y, got, want)
54 }
55 }
56 }
57
58 func TestAffineTranslate(t *testing.T) {
59 for _, test := range xyTests {
60 want := a
61 want.Mul(&want, &Affine{{1, 0, test.x}, {0, 1, test.y}})
62 got := a
63 got.Translate(&got, test.x, test.y)
64
65 if !got.Eq(&want, 0.01) {
66 t.Errorf("(%.2f, %.2f): got %s want %s", test.x, test.y, got, want)
67 }
68 }
69
70 }
71
72 func TestAffineRotate(t *testing.T) {
73 want := Affine{
74 {-4.000, 3.000, 5.000},
75 {-7.000, 6.000, 8.000},
76 }
77 got := a
78 got.Rotate(&got, math.Pi/2)
79 if !got.Eq(&want, 0.01) {
80 t.Errorf("rotate π: got %s want %s", got, want)
81 }
82
83 want = a
84 got = a
85 got.Rotate(&got, 2*math.Pi)
86 if !got.Eq(&want, 0.01) {
87 t.Errorf("rotate 2π: got %s want %s", got, want)
88 }
89
90 got = a
91 got.Rotate(&got, math.Pi)
92 got.Rotate(&got, math.Pi)
93 if !got.Eq(&want, 0.01) {
94 t.Errorf("rotate π then π: got %s want %s", got, want)
95 }
96
97 got = a
98 got.Rotate(&got, math.Pi/3)
99 got.Rotate(&got, -math.Pi/3)
100 if !got.Eq(&want, 0.01) {
101 t.Errorf("rotate π/3 then -π/3: got %s want %s", got, want)
102 }
103 }
104
105 func TestAffineScaleTranslate(t *testing.T) {
106 mulVec := func(m *Affine, v [2]float32) (mv [2]float32) {
107 mv[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]
108 mv[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]
109 return mv
110 }
111 v := [2]float32{1, 10}
112
113 var sThenT Affine
114 sThenT.Identity()
115 sThenT.Scale(&sThenT, 13, 17)
116 sThenT.Translate(&sThenT, 101, 151)
117 wantSTT := [2]float32{
118 13 * (101 + 1),
119 17 * (151 + 10),
120 }
121 if got := mulVec(&sThenT, v); got != wantSTT {
122 t.Errorf("S then T: got %v, want %v", got, wantSTT)
123 }
124
125 var tThenS Affine
126 tThenS.Identity()
127 tThenS.Translate(&tThenS, 101, 151)
128 tThenS.Scale(&tThenS, 13, 17)
129 wantTTS := [2]float32{
130 101 + (13 * 1),
131 151 + (17 * 10),
132 }
133 if got := mulVec(&tThenS, v); got != wantTTS {
134 t.Errorf("T then S: got %v, want %v", got, wantTTS)
135 }
136 }
OLDNEW
« no previous file with comments | « third_party/go/src/golang.org/x/mobile/f32/affine.go ('k') | third_party/go/src/golang.org/x/mobile/f32/f32.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698