Mercurial > games > semicongine
annotate tests/test_matrix.nim @ 212:77755701bf49
fix: tests
| author | Sam <sam@basx.dev> |
|---|---|
| date | Tue, 09 May 2023 20:39:49 +0700 |
| parents | 8287a91e5d56 |
| children | 67081fbaf636 |
| rev | line source |
|---|---|
|
13
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
1 import random |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
2 import math |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
3 |
| 212 | 4 import semicongine |
|
13
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
5 |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
6 |
| 57 | 7 proc echoInfo(v: TVec) = |
|
13
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
8 echo v |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
9 echo " Length: ", v.length |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
10 echo " Normlized: ", v.normalized |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
11 echo " negated: ", -v |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
12 |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
13 proc echoAdd[T, U](v1: T, v2: U) = |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
14 echo v1, " + ", v2, " = ", v1 + v2 |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
15 proc echoSub[T, U](v1: T, v2: U) = |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
16 echo v1, " - ", v2, " = ", v1 - v2 |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
17 proc echoMul[T, U](v1: T, v2: U) = |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
18 echo v1, " * ", v2, " = ", v1 * v2 |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
19 proc echoDiv[T, U](v1: T, v2: U) = |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
20 echo v1, " / ", v2, " = ", v1 / v2 |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
21 proc echoDot[T, U](v1: T, v2: U) = |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
22 echo v1, " o ", v2, " = ", v1.dot(v2) |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
23 proc echoCross[T, U](v1: T, v2: U) = |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
24 echo v1, " x ", v2, " = ", v1.cross(v2) |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
25 |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
26 proc randVec2I(): auto = newVec2(rand(1 .. 10), rand(1 .. 10)) |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
27 proc randVec2F(): auto = newVec2(rand(10'f) + 0.01, rand(10'f) + 0.01) |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
28 proc randVec3I(): auto = newVec3(rand(1 .. 10), rand(1 .. 10), rand(1 .. 10)) |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
29 proc randVec3F(): auto = newVec3(rand(10'f) + 0.01, rand(10'f) + 0.01, rand(10'f) + 0.01) |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
30 proc randVec4I(): auto = newVec4(rand(1 .. 10), rand(1 .. 10), rand(1 .. 10), rand(1 .. 10)) |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
31 proc randVec4F(): auto = newVec4(rand(10'f) + 0.01, rand(10'f) + 0.01, rand(10'f) + 0.01, rand(10'f) + 0.01) |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
32 |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
33 |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
34 template withAllIntegerMats(stuff: untyped) = |
| 212 | 35 stuff(TMat2[int32]) |
| 58 | 36 stuff(TMat23[int32]) |
| 37 stuff(TMat32[int32]) | |
| 212 | 38 stuff(TMat3[int32]) |
| 58 | 39 stuff(TMat34[int32]) |
| 40 stuff(TMat43[int32]) | |
| 212 | 41 stuff(TMat4[int32]) |
| 42 stuff(TMat2[int64]) | |
| 58 | 43 stuff(TMat23[int64]) |
| 44 stuff(TMat32[int64]) | |
| 212 | 45 stuff(TMat3[int64]) |
| 58 | 46 stuff(TMat34[int64]) |
| 47 stuff(TMat43[int64]) | |
| 212 | 48 stuff(TMat4[int64]) |
|
13
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
49 |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
50 template withAllFloatMats(stuff: untyped) = |
| 212 | 51 stuff(TMat2[float32]) |
| 58 | 52 stuff(TMat23[float32]) |
| 53 stuff(TMat32[float32]) | |
| 212 | 54 stuff(TMat3[float32]) |
| 58 | 55 stuff(TMat34[float32]) |
| 56 stuff(TMat43[float32]) | |
| 212 | 57 stuff(TMat4[float32]) |
| 58 stuff(TMat2[float64]) | |
| 58 | 59 stuff(TMat23[float64]) |
| 60 stuff(TMat32[float64]) | |
| 212 | 61 stuff(TMat3[float64]) |
| 58 | 62 stuff(TMat34[float64]) |
| 63 stuff(TMat43[float64]) | |
| 212 | 64 stuff(TMat4[float64]) |
|
13
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
65 |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
66 template withAllMats(stuff: untyped) = |
| 212 | 67 stuff(TMat2[int]) |
| 58 | 68 stuff(TMat23[int]) |
| 69 stuff(TMat32[int]) | |
| 212 | 70 stuff(TMat3[int]) |
| 58 | 71 stuff(TMat34[int]) |
| 72 stuff(TMat43[int]) | |
| 212 | 73 stuff(TMat4[int]) |
| 74 stuff(TMat2[float]) | |
| 58 | 75 stuff(TMat23[float]) |
| 76 stuff(TMat32[float]) | |
| 212 | 77 stuff(TMat3[float]) |
| 58 | 78 stuff(TMat34[float]) |
| 79 stuff(TMat43[float]) | |
| 212 | 80 stuff(TMat4[float]) |
|
13
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
81 |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
82 template testTranspose(t: typedesc) = |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
83 echo "testTranspose: ", t |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
84 let m = t().randomized() |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
85 assert m == m.transposed().transposed() |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
86 |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
87 template testAssignI(t: typedesc) = |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
88 echo "testAssignI: ", t |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
89 var m = t() |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
90 for i in 0 ..< t.data.len: |
| 16 | 91 m[rand(0 ..< t.rowCount), rand(0 ..< t.columnCount)] = rand(0'i32 .. 100'i32) |
|
13
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
92 |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
93 template testAssignF(t: typedesc) = |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
94 echo "testAssignF: ", t |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
95 var m = t() |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
96 for i in 0 ..< t.data.len: |
| 16 | 97 m[rand(0 ..< t.rowCount), rand(0 ..< t.columnCount)] = rand(100'f) |
|
13
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
98 |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
99 template testRowCols(t: typedesc) = |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
100 echo "testRowCols: ", t |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
101 var m = t().randomized() |
| 16 | 102 for i in 0 ..< t.rowCount: |
|
13
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
103 echo m.row(i) |
| 16 | 104 for i in 0 ..< t.columnCount: |
|
13
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
105 echo m.col(i) |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
106 |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
107 |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
108 proc testMatrix() = |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
109 withAllMats(testTranspose) |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
110 withAllIntegerMats(testAssignI) |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
111 withAllFloatMats(testAssignF) |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
112 withAllMats(testRowCols) |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
113 |
| 212 | 114 echo Unit2 |
| 115 echo Unit2i | |
| 116 echo Unit2i8 | |
| 117 echo Unit2i16 | |
| 118 echo Unit2i32 | |
| 119 echo Unit2i64 | |
| 16 | 120 |
| 212 | 121 echo Unit3 |
| 122 echo Unit3i | |
| 123 echo Unit3i8 | |
| 124 echo Unit3i16 | |
| 125 echo Unit3i32 | |
| 126 echo Unit3i64 | |
| 16 | 127 |
| 212 | 128 echo Unit4 |
| 129 echo Unit4i | |
| 130 echo Unit4i8 | |
| 131 echo Unit4i16 | |
| 132 echo Unit4i32 | |
| 133 echo Unit4i64 | |
| 16 | 134 |
| 212 | 135 echo TMat2[float32]().randomized() * One2.randomized() |
| 136 echo TMat3[float32]().randomized() * One3.randomized() | |
| 137 echo TMat4[float32]().randomized() * One4.randomized() | |
| 16 | 138 |
|
13
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
139 randomize() |
|
a571db114152
add: vector/matrix modules, tests, nim config script
Sam <sam@basx.dev>
parents:
diff
changeset
|
140 testMatrix() |
