Mercurial > games > semicongine
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() |
