Index: tests/vector/.expect/vec3_int.txt
===================================================================
--- tests/vector/.expect/vec3_int.txt	(revision 1712f542a5ea4d2772859a9d4ca18e5f865db7cb)
+++ tests/vector/.expect/vec3_int.txt	(revision 1712f542a5ea4d2772859a9d4ca18e5f865db7cb)
@@ -0,0 +1,37 @@
+ctor(x,y):<1,2,3>
+copy ctor:<1,2,3>
+?/?(vec)<5,-1,1>
+?/=?(vec)<5,-1,1>
+++?<2,-2,101>
+--?<0,-4,99>
+?++(part 1)<1,-3,100>
+?++(part 2)<2,-2,101>
+?--(part 1)<1,-3,100>
+?--(part 2)<0,-4,99>
+?%?(int)<0,1,0>
+?%=?(int)<0,1,0>
+?%?(vec)<-2,3,9>
+?%=?(vec)<-2,3,9>
+?&?(int)<0,0,8>
+?&=?(int)<0,0,8>
+?&?(vec)<1,6,1>
+?&=?(vec)<1,6,1>
+?|?(int)<7,3,7>
+?|=?(int)<7,3,7>
+?|?(vec)<7,1,7>
+?|=?(vec)<7,1,7>
+?^?(int)<12,0,13>
+?^=?(int)<12,0,13>
+?^?(vec)<12,5,9>
+?^=?(vec)<12,5,9>
+?<<?(int)<4,2,8>
+?<<=?(int)<4,2,8>
+?<<?(vec)<32,4,2>
+?<<=?(vec)<32,4,2>
+?>>?(int)<1,0,2>
+?>>=?(int)<1,0,2>
+?>>?(vec)<2,1,2>
+?>>=?(vec)<2,1,2>
+~?<-6,-3,-2>
+dot:4
+length_squared:29
Index: tests/vector/vec3_int.cfa
===================================================================
--- tests/vector/vec3_int.cfa	(revision 1712f542a5ea4d2772859a9d4ca18e5f865db7cb)
+++ tests/vector/vec3_int.cfa	(revision 1712f542a5ea4d2772859a9d4ca18e5f865db7cb)
@@ -0,0 +1,130 @@
+#include "../../libcfa/src/vec/vec3.hfa"
+#include <fstream.hfa>
+#include <limits.hfa>
+
+int main(void) {
+    vec3(int) v1 = {1,2,3};
+    sout | "ctor(x,y):" | v1;
+
+    vec3(int) v2 = v1;
+    sout | "copy ctor:" | v2;
+
+    {
+        vec3(int) u = {11, -5, 7};
+        vec3(int) v = {2, 3, 7};
+        sout | "?/?(vec)" | (u / v);
+        sout | "?/=?(vec)" | (u /= v);
+    }
+
+    {
+        vec3(int) u = {1, -3, 100};
+        sout | "++?" | ++u;
+    }
+
+    {
+        vec3(int) u = {1, -3, 100};
+        sout | "--?" | --u;
+    }
+    {
+        vec3(int) u = {1, -3, 100};
+        sout | "?++(part 1)" | u++;
+        sout | "?++(part 2)" | u;
+    }
+    {
+        vec3(int) u = {1, -3, 100};
+        sout | "?--(part 1)" | u--;
+        sout | "?--(part 2)" | u;
+    }
+
+    // %
+    {
+        vec3(int) u = {-12, 123, 100};
+        sout | "?%?(int)" | (u % 2);
+        sout | "?%=?(int)" | (u %= 2);
+    }
+    {
+        vec3(int) u = {-12, 27, 100};
+        vec3(int) v = {5, 4, 13};
+        sout | "?%?(vec)" | (u % v);
+        sout | "?%=?(vec)" | (u %= v);
+    }
+
+
+    // &
+    {
+        vec3(int) u = {5, 1, 8};
+        sout | "?&?(int)" | (u & (1 << 3));
+        sout | "?&=?(int)" | (u &= (1 << 3));
+    }
+    {
+        vec3(int) u = {5, 6, 5};
+        vec3(int) v = {3, 7, 3};
+        sout | "?&?(vec)" | (u & v);
+        sout | "?&=?(vec)" | (u &= v);
+    }
+
+    // |
+    {
+        vec3(int) u = {5, 1, 5};
+        sout | "?|?(int)" | (u | 2);
+        sout | "?|=?(int)" | (u |= 2);
+    }
+    {
+        vec3(int) u = {5, 1, 5};
+        vec3(int) v = {2, 1, 2};
+        sout | "?|?(vec)" | (u | v);
+        sout | "?|=?(vec)" | (u |= v);
+    }
+
+    // ^
+    {
+        vec3(int) u = {9, 5, 8};
+        sout | "?^?(int)" | (u ^ 5);
+        sout | "?^=?(int)" | (u ^= 5);
+    }
+    {
+        vec3(int) u = {9, 5, 8};
+        vec3(int) v = {5, 0, 1};
+        sout | "?^?(vec)" | (u ^ v);
+        sout | "?^=?(vec)" | (u ^= v);
+    }
+
+    // <<
+    {
+        vec3(int) u = {2, 1, 4};
+        sout | "?<<?(int)" | (u << 1);
+        sout | "?<<=?(int)" | (u <<= 1);
+    }
+    {
+        vec3(int) u = {1, 1, 1};
+        vec3(int) v = {5, 2, 1};
+        sout | "?<<?(vec)" | (u << v);
+        sout | "?<<=?(vec)" | (u <<= v);
+    }
+
+    // >>
+    {
+        vec3(int) u = {2, 1, 4};
+        sout | "?>>?(int)" | (u >> 1);
+        sout | "?>>=?(int)" | (u >>= 1);
+    }
+    {
+        vec3(int) u = {5, 7, 8};
+        vec3(int) v = {1, 2, 2};
+        sout | "?>>?(vec)" | (u >> v);
+        sout | "?>>=?(vec)" | (u >>= v);
+    }
+
+    // ~
+    {
+        vec3(int) u = {5, 2, 1};
+        sout | "~?" | (~u);
+    }
+
+    v1 = (vec3(int)){2, 3, 4};
+    v2 = (vec3(int)){13, 2, -7};
+    sout | "dot:" | dot(v1, v2);
+
+    v1 = (vec3(int)){2,3,4};
+    sout | "length_squared:" | length_squared(v1);
+}
