- Added unit tests and debugged them
This commit is contained in:
@@ -22,7 +22,6 @@
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include <fennec/lang/types.h>
|
||||
#include <fennec/math/vector.h>
|
||||
|
||||
#include "../../test.h"
|
||||
@@ -39,38 +38,6 @@ inline void fennec_test_math_vector()
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run((component_count_v<bool_t&> == 1), true);
|
||||
fennec_test_run((component_count_v<int_t&> == 1), true);
|
||||
fennec_test_run((component_count_v<uint_t&> == 1), true);
|
||||
fennec_test_run((component_count_v<float_t&> == 1), true);
|
||||
fennec_test_run((component_count_v<double_t&> == 1), true);
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run((component_count_v<const bool_t&> == 1), true);
|
||||
fennec_test_run((component_count_v<const int_t&> == 1), true);
|
||||
fennec_test_run((component_count_v<const uint_t&> == 1), true);
|
||||
fennec_test_run((component_count_v<const float_t&> == 1), true);
|
||||
fennec_test_run((component_count_v<const double_t&> == 1), true);
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run((component_count_v<volatile bool_t&> == 1), true);
|
||||
fennec_test_run((component_count_v<volatile int_t&> == 1), true);
|
||||
fennec_test_run((component_count_v<volatile uint_t&> == 1), true);
|
||||
fennec_test_run((component_count_v<volatile float_t&> == 1), true);
|
||||
fennec_test_run((component_count_v<volatile double_t&> == 1), true);
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run((component_count_v<const volatile bool_t&> == 1), true);
|
||||
fennec_test_run((component_count_v<const volatile int_t&> == 1), true);
|
||||
fennec_test_run((component_count_v<const volatile uint_t&> == 1), true);
|
||||
fennec_test_run((component_count_v<const volatile float_t&> == 1), true);
|
||||
fennec_test_run((component_count_v<const volatile double_t&> == 1), true);
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run((component_count_v<bvec2> == 2), true);
|
||||
fennec_test_run((component_count_v<bvec3> == 3), true);
|
||||
fennec_test_run((component_count_v<bvec4> == 4), true);
|
||||
@@ -146,6 +113,19 @@ inline void fennec_test_math_vector()
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
|
||||
|
||||
fennec_test_section("vec2 equivalency operator");
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run((vec2() == vec2()), true);
|
||||
fennec_test_run((vec2() != vec2()), false);
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
|
||||
|
||||
fennec_test_section("vec2 constructors");
|
||||
|
||||
fennec_test_spacer(1);
|
||||
@@ -161,6 +141,8 @@ inline void fennec_test_math_vector()
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
|
||||
|
||||
fennec_test_section("vec2 swizzles");
|
||||
|
||||
fennec_test_spacer(1);
|
||||
@@ -172,6 +154,8 @@ inline void fennec_test_math_vector()
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
|
||||
|
||||
fennec_test_section("vec3 constructors");
|
||||
|
||||
fennec_test_spacer(1);
|
||||
@@ -187,6 +171,8 @@ inline void fennec_test_math_vector()
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
|
||||
|
||||
fennec_test_section("vec3 swizzles");
|
||||
|
||||
fennec_test_spacer(1);
|
||||
@@ -233,10 +219,24 @@ inline void fennec_test_math_vector()
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
fennec_test_section("scalar-vector operations");
|
||||
|
||||
|
||||
fennec_test_section("scalar-vector arithmetic operations");
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run(2.0 + vec2(1, 2), vec2(3, 4));
|
||||
fennec_test_run(2.0 + vec3(1, 2, 3), vec3(3, 4, 5));
|
||||
fennec_test_run(2.0 + vec4(1, 2, 3, 4), vec4(3, 4, 5, 6));
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
fennec_test_run(2.0 - vec2(1, 2), vec2(1, 0));
|
||||
fennec_test_run(2.0 - vec3(1, 2, 3), vec3(1, 0, -1));
|
||||
fennec_test_run(2.0 - vec4(1, 2, 3, 4), vec4(1, 0, -1, -2));
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
fennec_test_run(2.0 * vec2(1, 2), vec2(2, 4));
|
||||
fennec_test_run(2.0 * vec3(1, 2, 3), vec3(2, 4, 6));
|
||||
fennec_test_run(2.0 * vec4(1, 2, 3, 4), vec4(2, 4, 6, 8));
|
||||
@@ -247,9 +247,87 @@ inline void fennec_test_math_vector()
|
||||
fennec_test_run(2.0 / vec3(1, 2, 4), vec3(2.0, 1.0, 0.5));
|
||||
fennec_test_run(2.0 / vec4(1, 2, 4, 8), vec4(2.0, 1.0, 0.5, 0.25));
|
||||
|
||||
fennec_test_run(2 % ivec2(1, 2), ivec2(0, 0));
|
||||
fennec_test_run(2 % ivec3(1, 2, 3), ivec3(0, 0, 2));
|
||||
fennec_test_run(2 % ivec4(1, 2, 3, 4), ivec4(0, 0, 2, 2));
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
fennec_test_section("vector-vector operations");
|
||||
|
||||
|
||||
fennec_test_section("vector-scalar arithmetic operations");
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run(vec2(1, 2) + 2.0, vec2(3, 4));
|
||||
fennec_test_run(vec3(1, 2, 3) + 2.0, vec3(3, 4, 5));
|
||||
fennec_test_run(vec4(1, 2, 3, 4) + 2.0, vec4(3, 4, 5, 6));
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
fennec_test_run(vec2(1, 2) - 2.0, vec2(-1, 0));
|
||||
fennec_test_run(vec3(1, 2, 3) - 2.0, vec3(-1, 0, 1));
|
||||
fennec_test_run(vec4(1, 2, 3, 4) - 2.0, vec4(-1, 0, 1, 2));
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
fennec_test_run(vec2(1, 2) * 2.0, vec2(2, 4));
|
||||
fennec_test_run(vec3(1, 2, 3) * 2.0, vec3(2, 4, 6));
|
||||
fennec_test_run(vec4(1, 2, 3, 4) * 2.0, vec4(2, 4, 6, 8));
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
fennec_test_run(vec2(1, 2) / 2.0, vec2(0.5, 1.0));
|
||||
fennec_test_run(vec3(1, 2, 4) / 2.0, vec3(0.5, 1.0, 2.0));
|
||||
fennec_test_run(vec4(1, 2, 4, 8) / 2.0, vec4(0.5, 1.0, 2.0, 4.0));
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
fennec_test_run(ivec2(1, 2) % 2, ivec2(1, 0));
|
||||
fennec_test_run(ivec3(1, 2, 3) % 2, ivec3(1, 0, 1));
|
||||
fennec_test_run(ivec4(1, 2, 3, 4) % 2, ivec4(1, 0, 1, 0));
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
|
||||
|
||||
fennec_test_section("vector-scalar arithmetic assignment operations");
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run(([]() -> vec2 { vec2 v{ 1, 2 }; return v += 2.0; }()), vec2(3, 4));
|
||||
fennec_test_run(([]() -> vec3 { vec3 v{ 1, 2, 3 }; return v += 2.0; }()), vec3(3, 4, 5));
|
||||
fennec_test_run(([]() -> vec4 { vec4 v{ 1, 2, 3, 4 }; return v += 2.0; }()), vec4(3, 4, 5, 6));
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
fennec_test_run(([]() -> vec2 { vec2 v{ 1, 2 }; return v -= 2.0; }()), vec2(-1, 0));
|
||||
fennec_test_run(([]() -> vec3 { vec3 v{ 1, 2, 3 }; return v -= 2.0; }()), vec3(-1, 0, 1));
|
||||
fennec_test_run(([]() -> vec4 { vec4 v{ 1, 2, 3, 4 }; return v -= 2.0; }()), vec4(-1, 0, 1, 2));
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
fennec_test_run(([]() -> vec2 { vec2 v{ 1, 2 }; return v *= 2.0; }()), vec2(2, 4));
|
||||
fennec_test_run(([]() -> vec3 { vec3 v{ 1, 2, 3 }; return v *= 2.0; }()), vec3(2, 4, 6));
|
||||
fennec_test_run(([]() -> vec4 { vec4 v{ 1, 2, 3, 4 }; return v *= 2.0; }()), vec4(2, 4, 6, 8));
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
fennec_test_run(([]() -> vec2 { vec2 v{ 1, 2 }; return v /= 2.0; }()), vec2(0.5, 1.0));
|
||||
fennec_test_run(([]() -> vec3 { vec3 v{ 1, 2, 3 }; return v /= 2.0; }()), vec3(0.5, 1.0, 1.5));
|
||||
fennec_test_run(([]() -> vec4 { vec4 v{ 1, 2, 3, 4 }; return v /= 2.0; }()), vec4(0.5, 1.0, 1.5, 2.0));
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
fennec_test_run(([]() -> ivec2 { ivec2 v{ 1, 2 }; return v %= 2; }()), ivec2(1, 0));
|
||||
fennec_test_run(([]() -> ivec3 { ivec3 v{ 1, 2, 3 }; return v %= 2; }()), ivec3(1, 0, 1));
|
||||
fennec_test_run(([]() -> ivec4 { ivec4 v{ 1, 2, 3, 4 }; return v %= 2; }()), ivec4(1, 0, 1, 0));
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
|
||||
|
||||
fennec_test_section("vector-vector arithmetic operations");
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
@@ -281,6 +359,122 @@ inline void fennec_test_math_vector()
|
||||
fennec_test_run(ivec3(1, 2, 4) % ivec3(1, 2, 4), ivec3(0, 0, 0));
|
||||
fennec_test_run(ivec4(1, 2, 4, 8) % ivec4(1, 2, 4, 8), ivec4(0, 0, 0, 0));
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
|
||||
|
||||
fennec_test_section("vector-vector arithmetic assignment operations");
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run(([]() -> vec2 { vec2 v(1, 2); return v += vec2(1, 2); }()), vec2(2, 4));
|
||||
fennec_test_run(([]() -> vec3 { vec3 v(1, 2, 3); return v += vec3(1, 2, 3); }()), vec3(2, 4, 6));
|
||||
fennec_test_run(([]() -> vec4 { vec4 v(1, 2, 3, 4); return v += vec4(1, 2, 3, 4); }()), vec4(2, 4, 6, 8));
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run(([]() -> vec2 { vec2 v(1, 2); return v -= vec2(1, 2); }()), vec2(0, 0));
|
||||
fennec_test_run(([]() -> vec3 { vec3 v(1, 2, 3); return v -= vec3(1, 2, 3); }()), vec3(0, 0, 0));
|
||||
fennec_test_run(([]() -> vec4 { vec4 v(1, 2, 3, 4); return v -= vec4(1, 2, 3, 4); }()), vec4(0, 0, 0, 0));
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run(([]() -> vec2 { vec2 v(1, 2); return v *= vec2(1, 2); }()), vec2(1, 4));
|
||||
fennec_test_run(([]() -> vec3 { vec3 v(1, 2, 3); return v *= vec3(1, 2, 3); }()), vec3(1, 4, 9));
|
||||
fennec_test_run(([]() -> vec4 { vec4 v(1, 2, 3, 4); return v *= vec4(1, 2, 3, 4); }()), vec4(1, 4, 9, 16));
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run(([]() -> vec2 { vec2 v(1, 2); return v /= vec2(1, 2); }()), vec2(1, 1));
|
||||
fennec_test_run(([]() -> vec3 { vec3 v(1, 2, 4); return v /= vec3(1, 2, 4); }()), vec3(1, 1, 1));
|
||||
fennec_test_run(([]() -> vec4 { vec4 v(1, 2, 4, 8); return v /= vec4(1, 2, 4, 8); }()), vec4(1, 1, 1, 1));
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run(([]() -> ivec2 { ivec2 v(1, 2); return v %= ivec2(1, 2); }()), ivec2(0, 0));
|
||||
fennec_test_run(([]() -> ivec3 { ivec3 v(1, 2, 4); return v %= ivec3(1, 2, 4); }()), ivec3(0, 0, 0));
|
||||
fennec_test_run(([]() -> ivec4 { ivec4 v(1, 2, 4, 8); return v %= ivec4(1, 2, 4, 8); }()), ivec4(0, 0, 0, 0));
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
|
||||
|
||||
fennec_test_section("boolean operations");
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run(bvec2(false, false) && true, bvec2(false, false));
|
||||
fennec_test_run(bvec3(false, false, true) && true, bvec3(false, false, true));
|
||||
fennec_test_run(bvec4(false, false, true, true) && true, bvec4(false, false, true, true));
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run(bvec2(false, false) && bvec2(false, true), bvec2(false, false));
|
||||
fennec_test_run(bvec3(false, false, true) && bvec3(false, true, false), bvec3(false, false, false));
|
||||
fennec_test_run(bvec4(false, false, true, true) && bvec4(false, true, false, true), bvec4(false, false, false, true));
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
fennec_test_run(bvec2(false, false) || true, bvec2(true, true));
|
||||
fennec_test_run(bvec3(false, false, true) || true, bvec3(true, true, true));
|
||||
fennec_test_run(bvec4(false, false, true, true) || true, bvec4(true, true, true, true));
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run(bvec2(false, false) || bvec2(false, true), bvec2(false, true));
|
||||
fennec_test_run(bvec3(false, false, true) || bvec3(false, true, false), bvec3(false, true, true));
|
||||
fennec_test_run(bvec4(false, false, true, true) || bvec4(false, true, false, true), bvec4(false, true, true, true));
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
|
||||
|
||||
fennec_test_section("boolean operations");
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run(0b0101 & ivec2(0b0001, 0b0010), ivec2(0b0001, 0b0000));
|
||||
fennec_test_run(0b0101 & ivec3(0b0001, 0b0010, 0b0011), ivec3(0b0001, 0b0000, 0b0001));
|
||||
fennec_test_run(0b0101 & ivec4(0b0001, 0b0010, 0b0011, 0b0100), ivec4(0b0001, 0b0000, 0b0001, 0b0100));
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run(ivec2(0b0001, 0b0010) & 0b0101, ivec2(0b0001, 0b0000));
|
||||
fennec_test_run(ivec3(0b0001, 0b0010, 0b0011) & 0b0101, ivec3(0b0001, 0b0000, 0b0001));
|
||||
fennec_test_run(ivec4(0b0001, 0b0010, 0b0011, 0b0100) & 0b0101, ivec4(0b0001, 0b0000, 0b0001, 0b0100));
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run(([]() -> ivec2 { ivec2 v(0b0001, 0b0010); return v &= 0b0101; }()), ivec2(0b0001, 0b0000));
|
||||
fennec_test_run(([]() -> ivec3 { ivec3 v(0b0001, 0b0010, 0b0011); return v &= 0b0101; }()), ivec3(0b0001, 0b0000, 0b0001));
|
||||
fennec_test_run(([]() -> ivec4 { ivec4 v(0b0001, 0b0010, 0b0011, 0b0100); return v &= 0b0101; }()), ivec4(0b0001, 0b0000, 0b0001, 0b0100));
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run(ivec2(0b0001, 0b0010) & ivec2(0b1000, 0b0100), ivec2(0b0000));
|
||||
fennec_test_run(ivec3(0b0001, 0b0010, 0b0011) & ivec3(0b1000, 0b0100, 0b1100), ivec3(0b0000));
|
||||
fennec_test_run(ivec4(0b0001, 0b0010, 0b0011, 0b0100) & ivec4(0b1000, 0b0100, 0b1100, 0b0010), ivec4(0b0000));
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run(([]() -> ivec2 { ivec2 v(0b0001, 0b0010); return v &= ivec2(0b1000, 0b0100); }()), ivec2(0b0000));
|
||||
fennec_test_run(([]() -> ivec3 { ivec3 v(0b0001, 0b0010, 0b0011); return v &= ivec3(0b1000, 0b0100, 0b1100); }()), ivec3(0b0000));
|
||||
fennec_test_run(([]() -> ivec4 { ivec4 v(0b0001, 0b0010, 0b0011, 0b0100); return v &= ivec4(0b1000, 0b0100, 0b1100, 0b0010); }()), ivec4(0b0000));
|
||||
|
||||
|
||||
fennec_test_spacer(2);
|
||||
|
||||
|
||||
fennec_test_run(ivec2(0b0001, 0b0010) & ivec2(0b1000, 0b0100), ivec2(0b0000));
|
||||
fennec_test_run(ivec3(0b0001, 0b0010, 0b0011) & ivec3(0b1000, 0b0100, 0b1100), ivec3(0b0000));
|
||||
fennec_test_run(ivec4(0b0001, 0b0010, 0b0011, 0b0100) & ivec4(0b1000, 0b0100, 0b1100, 0b0010), ivec4(0b0000));
|
||||
|
||||
fennec_test_spacer(1);
|
||||
|
||||
fennec_test_run(([]() -> ivec2 { ivec2 v(0b0001, 0b0010); return v &= ivec2(0b1000, 0b0100); }()), ivec2(0b0000));
|
||||
fennec_test_run(([]() -> ivec3 { ivec3 v(0b0001, 0b0010, 0b0011); return v &= ivec3(0b1000, 0b0100, 0b1100); }()), ivec3(0b0000));
|
||||
fennec_test_run(([]() -> ivec4 { ivec4 v(0b0001, 0b0010, 0b0011, 0b0100); return v &= ivec4(0b1000, 0b0100, 0b1100, 0b0010); }()), ivec4(0b0000));
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user