comparison old_tests/test_vector.nim @ 1203:6360c8d17ce0 compiletime-tests

did: preprations to add rendering tests
author sam <sam@basx.dev>
date Mon, 15 Jul 2024 20:06:42 +0700
parents tests/test_vector.nim@71315636ba82
children
comparison
equal deleted inserted replaced
1202:a8864fe6fe6e 1203:6360c8d17ce0
1 import random
2
3 import semicongine
4
5
6 proc echoInfo[T](v: TVec2[T] or TVec3[T] or TVec4[T]) =
7 echo v
8 echo " Length: ", v.Length
9 when T is SomeFloat:
10 echo " Normlized: ", v.Normalized
11 echo " negated: ", -v
12
13 proc echoAdd[T, U](v1: T, v2: U) =
14 echo v1, " + ", v2, " = ", v1 + v2
15 proc echoSub[T, U](v1: T, v2: U) =
16 echo v1, " - ", v2, " = ", v1 - v2
17 proc echoMul[T, U](v1: T, v2: U) =
18 echo v1, " * ", v2, " = ", v1 * v2
19 proc echoDiv[T, U](v1: T, v2: U) =
20 echo v1, " / ", v2, " = ", v1 / v2
21 proc echoDot[T, U](v1: T, v2: U) =
22 echo v1, " o ", v2, " = ", v1.Dot(v2)
23 proc echoCross[T, U](v1: T, v2: U) =
24 echo v1, " x ", v2, " = ", v1.Cross(v2)
25
26 proc randVec2I(): auto = NewVec2(rand(1 .. 10), rand(1 .. 10))
27 proc randVec2F(): auto = NewVec2(rand(10'f) + 0.01, rand(10'f) + 0.01)
28 proc randVec3I(): auto = NewVec3(rand(1 .. 10), rand(1 .. 10), rand(1 .. 10))
29 proc randVec3F(): auto = NewVec3(rand(10'f) + 0.01, rand(10'f) + 0.01, rand(
30 10'f) + 0.01)
31 proc randVec4I(): auto = NewVec4(rand(1 .. 10), rand(1 .. 10), rand(1 .. 10),
32 rand(1 .. 10))
33 proc randVec4F(): auto = NewVec4(rand(10'f) + 0.01, rand(10'f) + 0.01, rand(
34 10'f) + 0.01, rand(10'f) + 0.01)
35
36
37 proc testVector() =
38 echoInfo(randVec2I())
39 echoInfo(randVec2F())
40 echoInfo(randVec3I())
41 echoInfo(randVec3F())
42 echoInfo(randVec4I())
43 echoInfo(randVec4F())
44
45 # test math operations vector-vector
46 echoAdd(randVec2I(), randVec2I())
47 echoAdd(randVec2F(), randVec2F())
48 echoAdd(randVec3I(), randVec3I())
49 echoAdd(randVec3F(), randVec3F())
50 echoAdd(randVec4I(), randVec4I())
51 echoAdd(randVec4F(), randVec4F())
52 echoSub(randVec2I(), randVec2I())
53 echoSub(randVec2F(), randVec2F())
54 echoSub(randVec3I(), randVec3I())
55 echoSub(randVec3F(), randVec3F())
56 echoSub(randVec4I(), randVec4I())
57 echoSub(randVec4F(), randVec4F())
58 echoMul(randVec2I(), randVec2I())
59 echoMul(randVec2F(), randVec2F())
60 echoMul(randVec3I(), randVec3I())
61 echoMul(randVec3F(), randVec3F())
62 echoMul(randVec4I(), randVec4I())
63 echoMul(randVec4F(), randVec4F())
64 echoDiv(randVec2I(), randVec2I())
65 echoDiv(randVec2F(), randVec2F())
66 echoDiv(randVec3I(), randVec3I())
67 echoDiv(randVec3F(), randVec3F())
68 echoDiv(randVec4I(), randVec4I())
69 echoDiv(randVec4F(), randVec4F())
70 echoDot(randVec2I(), randVec2I())
71 echoDot(randVec2F(), randVec2F())
72 echoDot(randVec3I(), randVec3I())
73 echoDot(randVec3F(), randVec3F())
74 echoDot(randVec4I(), randVec4I())
75 echoDot(randVec4F(), randVec4F())
76 echoCross(randVec3I(), randVec3I())
77 echoCross(randVec3F(), randVec3F())
78
79
80 # test math operations vector-scalar
81 echoAdd(randVec2I(), rand(1 .. 10))
82 echoAdd(randVec2F(), rand(10'f))
83 echoAdd(randVec3I(), rand(1 .. 10))
84 echoAdd(randVec3F(), rand(10'f))
85 echoAdd(randVec4I(), rand(1 .. 10))
86 echoAdd(randVec4F(), rand(10'f))
87 echoSub(randVec2I(), rand(1 .. 10))
88 echoSub(randVec2F(), rand(10'f))
89 echoSub(randVec3I(), rand(1 .. 10))
90 echoSub(randVec3F(), rand(10'f))
91 echoSub(randVec4I(), rand(1 .. 10))
92 echoSub(randVec4F(), rand(10'f))
93 echoMul(randVec2I(), rand(1 .. 10))
94 echoMul(randVec2F(), rand(10'f))
95 echoMul(randVec3I(), rand(1 .. 10))
96 echoMul(randVec3F(), rand(10'f))
97 echoMul(randVec4I(), rand(1 .. 10))
98 echoMul(randVec4F(), rand(10'f))
99 echoDiv(randVec2I(), rand(1 .. 10))
100 echoDiv(randVec2F(), rand(10'f))
101 echoDiv(randVec3I(), rand(1 .. 10))
102 echoDiv(randVec3F(), rand(10'f))
103 echoDiv(randVec4I(), rand(1 .. 10))
104 echoDiv(randVec4F(), rand(10'f))
105
106 # test math operations scalar-vector
107 echoAdd(rand(1 .. 10), randVec2I())
108 echoAdd(rand(10'f), randVec2F())
109 echoAdd(rand(1 .. 10), randVec3I())
110 echoAdd(rand(10'f), randVec3F())
111 echoAdd(rand(1 .. 10), randVec4I())
112 echoAdd(rand(10'f), randVec4F())
113 echoSub(rand(1 .. 10), randVec2I())
114 echoSub(rand(10'f), randVec2F())
115 echoSub(rand(1 .. 10), randVec3I())
116 echoSub(rand(10'f), randVec3F())
117 echoSub(rand(1 .. 10), randVec4I())
118 echoSub(rand(10'f), randVec4F())
119 echoMul(rand(1 .. 10), randVec2I())
120 echoMul(rand(10'f), randVec2F())
121 echoMul(rand(1 .. 10), randVec3I())
122 echoMul(rand(10'f), randVec3F())
123 echoMul(rand(1 .. 10), randVec4I())
124 echoMul(rand(10'f), randVec4F())
125 echoDiv(rand(1 .. 10), randVec2I())
126 echoDiv(rand(10'f), randVec2F())
127 echoDiv(rand(1 .. 10), randVec3I())
128 echoDiv(rand(10'f), randVec3F())
129 echoDiv(rand(1 .. 10), randVec4I())
130 echoDiv(rand(10'f), randVec4F())
131
132 # test attribute syntax sugar
133 echo "float2int ", To[int](randVec2F())
134 echo "int2float ", To[float](randVec2I())
135 echo "float2int ", To[int](randVec3F())
136 echo "int2float ", To[float](randVec3I())
137 echo "float2int ", To[int](randVec3F())
138 echo "int2float ", To[float](randVec3I())
139
140 echo "V3I.x: ", randVec3I().x
141 echo "V3I.y: ", randVec3I().y
142 echo "V3F.z: ", randVec3F().z
143 echo "V3I.r: ", randVec3I().r
144 echo "V3I.g: ", randVec3I().g
145 echo "V3F.b: ", randVec3F().b
146
147 # test setters
148 var v1 = randVec2I(); v1.x = 1; v1.y = 2; v1.r = 3; v1.g = 4
149 v1.xy = randVec2I(); v1.yx = randVec2I(); v1.rg = randVec2I(); v1.gr = randVec2I()
150 var v2 = randVec2F(); v2.x = 1.0; v2.y = 2.0; v2.r = 3.0; v2.g = 4.0
151 v2.xy = randVec2F(); v2.yx = randVec2F(); v2.rg = randVec2F(); v2.gr = randVec2F()
152
153 var v3 = randVec3I(); v3.x = 1; v3.y = 2; v3.z = 3; v3.r = 4; v3.g = 5; v3.b = 6
154 v3.xyz = randVec3I(); v3.rgb = randVec3I()
155 var v4 = randVec3F(); v4.x = 1.0; v4.y = 2.0; v4.z = 3.0; v4.r = 4.0; v4.g = 5.0; v4.b = 6.0
156 v4.xyz = randVec3F(); v4.rgb = randVec3F()
157
158 var v5 = randVec4I(); v5.x = 1; v5.y = 2; v5.z = 3; v5.w = 4; v5.r = 5; v5.g = 6; v5.b = 7; v5.a = 8
159 v5.xyzw = randVec4I(); v5.rgba = randVec4I()
160 var v6 = randVec4F(); v6.x = 1.0; v6.y = 2.0; v6.z = 3.0; v6.w = 4.0; v6.r = 5.0; v6.g = 6.0; v6.b = 7.0; v6.a = 8.0
161 v6.xyzw = randVec4F(); v6.rgba = randVec4F()
162
163 echo "V2I.xx: ", randVec2I().xx
164 echo "V2I.yx: ", randVec2I().xy
165 echo "V2F.xx: ", randVec2F().xx
166 echo "V2F.yx: ", randVec2F().yx
167 echo "V2I.rr: ", randVec2I().rr
168 echo "V2I.gr: ", randVec2I().gr
169 echo "V2F.rr: ", randVec2F().rr
170 echo "V2F.gr: ", randVec2F().gr
171
172 echo "V3I.yyy: ", randVec3I().yyy
173 echo "V3I.yxz: ", randVec3I().xyz
174 echo "V3F.yyy: ", randVec3F().yyy
175 echo "V3F.yxz: ", randVec3F().yxz
176 echo "V3I.ggg: ", randVec3I().ggg
177 echo "V3I.grb: ", randVec3I().grb
178 echo "V3F.ggg: ", randVec3F().ggg
179 echo "V3F.grb: ", randVec3F().grb
180
181 echo "V4I.zzzz: ", randVec4I().zzzz
182 echo "V4I.yxzw: ", randVec4I().xyzw
183 echo "V4F.zzzz: ", randVec4F().zzzz
184 echo "V4F.yxzw: ", randVec4F().yxzw
185 echo "V4I.bbbb: ", randVec4I().bbbb
186 echo "V4I.grba: ", randVec4I().grba
187 echo "V4F.bbbb: ", randVec4F().bbbb
188 echo "V4F.grba: ", randVec4F().grba
189
190 echo "X: ", X
191 echo "Y: ", Y
192 echo "Z: ", Z
193 echo "X: ", Xi
194 echo "Y: ", Yi
195 echo "Z: ", Zi
196
197
198 randomize()
199 testVector()