From 736ebaaf23ee8dd7dfafc1ba032286df02d2acf8 Mon Sep 17 00:00:00 2001 From: Ben Visness Date: Sun, 23 Feb 2025 17:24:18 -0600 Subject: [PATCH] Test and fix _Generic --- HandmadeMath.h | 149 ++++++++++++++++--------------- test/categories/Addition.h | 50 +++++++---- test/categories/Division.h | 40 ++++++--- test/categories/Equality.h | 12 ++- test/categories/MatrixOps.h | 6 +- test/categories/Multiplication.h | 73 ++++++++++----- test/categories/QuaternionOps.h | 6 +- test/categories/Subtraction.h | 29 ++++-- test/categories/VectorOps.h | 20 ++--- 9 files changed, 239 insertions(+), 146 deletions(-) diff --git a/HandmadeMath.h b/HandmadeMath.h index a576baf..a803e22 100644 --- a/HandmadeMath.h +++ b/HandmadeMath.h @@ -1431,10 +1431,10 @@ static inline HMM_Mat3 HMM_MulM3F(HMM_Mat3 Matrix, float Scalar) return Result; } -COVERAGE(HMM_DivM3, 1) +COVERAGE(HMM_DivM3F, 1) static inline HMM_Mat3 HMM_DivM3F(HMM_Mat3 Matrix, float Scalar) { - ASSERT_COVERED(HMM_DivM3); + ASSERT_COVERED(HMM_DivM3F); HMM_Mat3 Result; @@ -3803,124 +3803,131 @@ static inline HMM_Vec4 operator-(HMM_Vec4 In) #endif /* __cplusplus*/ #ifdef HANDMADE_MATH__USE_C11_GENERICS + +void __hmm_invalid_generic(); + #define HMM_Add(A, B) _Generic((A), \ - HMM_Vec2: HMM_AddV2, \ - HMM_Vec3: HMM_AddV3, \ - HMM_Vec4: HMM_AddV4, \ - HMM_Mat2: HMM_AddM2, \ - HMM_Mat3: HMM_AddM3, \ - HMM_Mat4: HMM_AddM4, \ - HMM_Quat: HMM_AddQ \ + HMM_Vec2: HMM_AddV2, \ + HMM_Vec3: HMM_AddV3, \ + HMM_Vec4: HMM_AddV4, \ + HMM_Mat2: HMM_AddM2, \ + HMM_Mat3: HMM_AddM3, \ + HMM_Mat4: HMM_AddM4, \ + HMM_Quat: HMM_AddQ \ )(A, B) #define HMM_Sub(A, B) _Generic((A), \ - HMM_Vec2: HMM_SubV2, \ - HMM_Vec3: HMM_SubV3, \ - HMM_Vec4: HMM_SubV4, \ - HMM_Mat2: HMM_SubM2, \ - HMM_Mat3: HMM_SubM3, \ - HMM_Mat4: HMM_SubM4, \ - HMM_Quat: HMM_SubQ \ + HMM_Vec2: HMM_SubV2, \ + HMM_Vec3: HMM_SubV3, \ + HMM_Vec4: HMM_SubV4, \ + HMM_Mat2: HMM_SubM2, \ + HMM_Mat3: HMM_SubM3, \ + HMM_Mat4: HMM_SubM4, \ + HMM_Quat: HMM_SubQ \ )(A, B) #define HMM_Mul(A, B) _Generic((B), \ - float: _Generic((A), \ + float: _Generic((A), \ HMM_Vec2: HMM_MulV2F, \ HMM_Vec3: HMM_MulV3F, \ HMM_Vec4: HMM_MulV4F, \ HMM_Mat2: HMM_MulM2F, \ HMM_Mat3: HMM_MulM3F, \ HMM_Mat4: HMM_MulM4F, \ - HMM_Quat: HMM_MulQF \ - ), \ - HMM_Mat2: HMM_MulM2, \ - HMM_Mat3: HMM_MulM3, \ - HMM_Mat4: HMM_MulM4, \ - HMM_Quat: HMM_MulQ, \ - default: _Generic((A), \ + HMM_Quat: HMM_MulQF, \ + default: __hmm_invalid_generic \ + ), \ + HMM_Vec2: _Generic((A), \ HMM_Vec2: HMM_MulV2, \ - HMM_Vec3: HMM_MulV3, \ - HMM_Vec4: HMM_MulV4, \ HMM_Mat2: HMM_MulM2V2, \ + default: __hmm_invalid_generic \ + ), \ + HMM_Vec3: _Generic((A), \ + HMM_Vec3: HMM_MulV3, \ HMM_Mat3: HMM_MulM3V3, \ - HMM_Mat4: HMM_MulM4V4 \ - ) \ + default: __hmm_invalid_generic \ + ), \ + HMM_Vec4: _Generic((A), \ + HMM_Vec4: HMM_MulV4, \ + HMM_Mat4: HMM_MulM4V4, \ + default: __hmm_invalid_generic \ + ), \ + HMM_Mat2: HMM_MulM2, \ + HMM_Mat3: HMM_MulM3, \ + HMM_Mat4: HMM_MulM4, \ + HMM_Quat: HMM_MulQ \ )(A, B) #define HMM_Div(A, B) _Generic((B), \ - float: _Generic((A), \ - HMM_Mat2: HMM_DivM2F, \ - HMM_Mat3: HMM_DivM3F, \ - HMM_Mat4: HMM_DivM4F, \ + float: _Generic((A), \ HMM_Vec2: HMM_DivV2F, \ HMM_Vec3: HMM_DivV3F, \ HMM_Vec4: HMM_DivV4F, \ - HMM_Quat: HMM_DivQF \ - ), \ - HMM_Mat2: HMM_DivM2, \ - HMM_Mat3: HMM_DivM3, \ - HMM_Mat4: HMM_DivM4, \ - HMM_Quat: HMM_DivQ, \ - default: _Generic((A), \ - HMM_Vec2: HMM_DivV2, \ - HMM_Vec3: HMM_DivV3, \ - HMM_Vec4: HMM_DivV4 \ - ) \ + HMM_Mat2: HMM_DivM2F, \ + HMM_Mat3: HMM_DivM3F, \ + HMM_Mat4: HMM_DivM4F, \ + HMM_Quat: HMM_DivQF \ + ), \ + HMM_Vec2: HMM_DivV2, \ + HMM_Vec3: HMM_DivV3, \ + HMM_Vec4: HMM_DivV4 \ )(A, B) #define HMM_Len(A) _Generic((A), \ - HMM_Vec2: HMM_LenV2, \ - HMM_Vec3: HMM_LenV3, \ - HMM_Vec4: HMM_LenV4 \ + HMM_Vec2: HMM_LenV2, \ + HMM_Vec3: HMM_LenV3, \ + HMM_Vec4: HMM_LenV4 \ )(A) #define HMM_LenSqr(A) _Generic((A), \ - HMM_Vec2: HMM_LenSqrV2, \ - HMM_Vec3: HMM_LenSqrV3, \ - HMM_Vec4: HMM_LenSqrV4 \ + HMM_Vec2: HMM_LenSqrV2, \ + HMM_Vec3: HMM_LenSqrV3, \ + HMM_Vec4: HMM_LenSqrV4 \ )(A) #define HMM_Norm(A) _Generic((A), \ - HMM_Vec2: HMM_NormV2, \ - HMM_Vec3: HMM_NormV3, \ - HMM_Vec4: HMM_NormV4 \ + HMM_Vec2: HMM_NormV2, \ + HMM_Vec3: HMM_NormV3, \ + HMM_Vec4: HMM_NormV4, \ + HMM_Quat: HMM_NormQ \ )(A) #define HMM_Dot(A, B) _Generic((A), \ - HMM_Vec2: HMM_DotV2, \ - HMM_Vec3: HMM_DotV3, \ - HMM_Vec4: HMM_DotV4 \ + HMM_Vec2: HMM_DotV2, \ + HMM_Vec3: HMM_DotV3, \ + HMM_Vec4: HMM_DotV4, \ + HMM_Quat: HMM_DotQ \ )(A, B) #define HMM_Lerp(A, T, B) _Generic((A), \ - float: HMM_Lerp, \ - HMM_Vec2: HMM_LerpV2, \ - HMM_Vec3: HMM_LerpV3, \ - HMM_Vec4: HMM_LerpV4 \ + float: HMM_Lerp, \ + HMM_Vec2: HMM_LerpV2, \ + HMM_Vec3: HMM_LerpV3, \ + HMM_Vec4: HMM_LerpV4 \ )(A, T, B) #define HMM_Eq(A, B) _Generic((A), \ - HMM_Vec2: HMM_EqV2, \ - HMM_Vec3: HMM_EqV3, \ - HMM_Vec4: HMM_EqV4 \ + HMM_Vec2: HMM_EqV2, \ + HMM_Vec3: HMM_EqV3, \ + HMM_Vec4: HMM_EqV4 \ )(A, B) #define HMM_Transpose(M) _Generic((M), \ - HMM_Mat2: HMM_TransposeM2, \ - HMM_Mat3: HMM_TransposeM3, \ - HMM_Mat4: HMM_TransposeM4 \ + HMM_Mat2: HMM_TransposeM2, \ + HMM_Mat3: HMM_TransposeM3, \ + HMM_Mat4: HMM_TransposeM4 \ )(M) #define HMM_Determinant(M) _Generic((M), \ - HMM_Mat2: HMM_DeterminantM2, \ - HMM_Mat3: HMM_DeterminantM3, \ - HMM_Mat4: HMM_DeterminantM4 \ + HMM_Mat2: HMM_DeterminantM2, \ + HMM_Mat3: HMM_DeterminantM3, \ + HMM_Mat4: HMM_DeterminantM4 \ )(M) #define HMM_InvGeneral(M) _Generic((M), \ - HMM_Mat2: HMM_InvGeneralM2, \ - HMM_Mat3: HMM_InvGeneralM3, \ - HMM_Mat4: HMM_InvGeneralM4 \ + HMM_Mat2: HMM_InvGeneralM2, \ + HMM_Mat3: HMM_InvGeneralM3, \ + HMM_Mat4: HMM_InvGeneralM4 \ )(M) #endif diff --git a/test/categories/Addition.h b/test/categories/Addition.h index 730de9b..3ff7531 100644 --- a/test/categories/Addition.h +++ b/test/categories/Addition.h @@ -10,12 +10,14 @@ TEST(Addition, Vec2) EXPECT_FLOAT_EQ(result.X, 4.0f); EXPECT_FLOAT_EQ(result.Y, 6.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec2 result = HMM_Add(v2_1, v2_2); EXPECT_FLOAT_EQ(result.X, 4.0f); EXPECT_FLOAT_EQ(result.Y, 6.0f); } +#endif +#ifdef __cplusplus { HMM_Vec2 result = v2_1 + v2_2; EXPECT_FLOAT_EQ(result.X, 4.0f); @@ -39,13 +41,15 @@ TEST(Addition, Vec3) EXPECT_FLOAT_EQ(result.Y, 7.0f); EXPECT_FLOAT_EQ(result.Z, 9.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec3 result = HMM_Add(v3_1, v3_2); EXPECT_FLOAT_EQ(result.X, 5.0f); EXPECT_FLOAT_EQ(result.Y, 7.0f); EXPECT_FLOAT_EQ(result.Z, 9.0f); } +#endif +#ifdef __cplusplus { HMM_Vec3 result = v3_1 + v3_2; EXPECT_FLOAT_EQ(result.X, 5.0f); @@ -72,7 +76,7 @@ TEST(Addition, Vec4) EXPECT_FLOAT_EQ(result.Z, 10.0f); EXPECT_FLOAT_EQ(result.W, 12.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec4 result = HMM_Add(v4_1, v4_2); EXPECT_FLOAT_EQ(result.X, 6.0f); @@ -80,6 +84,8 @@ TEST(Addition, Vec4) EXPECT_FLOAT_EQ(result.Z, 10.0f); EXPECT_FLOAT_EQ(result.W, 12.0f); } +#endif +#ifdef __cplusplus { HMM_Vec4 result = v4_1 + v4_2; EXPECT_FLOAT_EQ(result.X, 6.0f); @@ -125,14 +131,16 @@ TEST(Addition, Mat2) EXPECT_FLOAT_EQ(result.Elements[1][1], 12.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Mat2 result = HMM_Add(a, b); - EXPECT_FLOAT_EQ(result.Elements[0][0], 6.0f); - EXPECT_FLOAT_EQ(result.Elements[0][1], 8.0f); - EXPECT_FLOAT_EQ(result.Elements[1][0], 10.0f); - EXPECT_FLOAT_EQ(result.Elements[1][1], 12.0f); + EXPECT_FLOAT_EQ(result.Elements[0][0], 6.0f); + EXPECT_FLOAT_EQ(result.Elements[0][1], 8.0f); + EXPECT_FLOAT_EQ(result.Elements[1][0], 10.0f); + EXPECT_FLOAT_EQ(result.Elements[1][1], 12.0f); } +#endif +#ifdef __cplusplus { HMM_Mat2 result = a + b; EXPECT_FLOAT_EQ(result.Elements[0][0], 6.0f); @@ -182,19 +190,21 @@ TEST(Addition, Mat3) EXPECT_FLOAT_EQ(result.Elements[2][2], 27.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Mat3 result = HMM_Add(a, b); - EXPECT_FLOAT_EQ(result.Elements[0][0], 11.0f); - EXPECT_FLOAT_EQ(result.Elements[0][1], 13.0f); - EXPECT_FLOAT_EQ(result.Elements[0][2], 15.0f); - EXPECT_FLOAT_EQ(result.Elements[1][0], 17.0f); + EXPECT_FLOAT_EQ(result.Elements[0][0], 11.0f); + EXPECT_FLOAT_EQ(result.Elements[0][1], 13.0f); + EXPECT_FLOAT_EQ(result.Elements[0][2], 15.0f); + EXPECT_FLOAT_EQ(result.Elements[1][0], 17.0f); EXPECT_FLOAT_EQ(result.Elements[1][1], 19.0f); - EXPECT_FLOAT_EQ(result.Elements[1][2], 21.0f); - EXPECT_FLOAT_EQ(result.Elements[2][0], 23.0f); + EXPECT_FLOAT_EQ(result.Elements[1][2], 21.0f); + EXPECT_FLOAT_EQ(result.Elements[2][0], 23.0f); EXPECT_FLOAT_EQ(result.Elements[2][1], 25.0f); - EXPECT_FLOAT_EQ(result.Elements[2][2], 27.0f); + EXPECT_FLOAT_EQ(result.Elements[2][2], 27.0f); } +#endif +#ifdef __cplusplus { HMM_Mat3 result = a + b; EXPECT_FLOAT_EQ(result.Elements[0][0], 11.0f); @@ -257,7 +267,7 @@ TEST(Addition, Mat4) } } } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Mat4 result = HMM_Add(m4_1, m4_2); float Expected = 18.0f; @@ -270,6 +280,8 @@ TEST(Addition, Mat4) } } } +#endif +#ifdef __cplusplus { HMM_Mat4 result = m4_1 + m4_2; float Expected = 18.0f; @@ -308,7 +320,7 @@ TEST(Addition, Quaternion) EXPECT_FLOAT_EQ(result.Z, 10.0f); EXPECT_FLOAT_EQ(result.W, 12.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Quat result = HMM_Add(q1, q2); EXPECT_FLOAT_EQ(result.X, 6.0f); @@ -316,6 +328,8 @@ TEST(Addition, Quaternion) EXPECT_FLOAT_EQ(result.Z, 10.0f); EXPECT_FLOAT_EQ(result.W, 12.0f); } +#endif +#ifdef __cplusplus { HMM_Quat result = q1 + q2; EXPECT_FLOAT_EQ(result.X, 6.0f); diff --git a/test/categories/Division.h b/test/categories/Division.h index c7411cf..41d46d2 100644 --- a/test/categories/Division.h +++ b/test/categories/Division.h @@ -10,12 +10,14 @@ TEST(Division, Vec2Vec2) EXPECT_FLOAT_EQ(result.X, 0.5f); EXPECT_FLOAT_EQ(result.Y, 0.75f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec2 result = HMM_Div(v2_1, v2_2); EXPECT_FLOAT_EQ(result.X, 0.5f); EXPECT_FLOAT_EQ(result.Y, 0.75f); } +#endif +#ifdef __cplusplus { HMM_Vec2 result = v2_1 / v2_2; EXPECT_FLOAT_EQ(result.X, 0.5f); @@ -38,12 +40,14 @@ TEST(Division, Vec2Scalar) EXPECT_FLOAT_EQ(result.X, 0.5f); EXPECT_FLOAT_EQ(result.Y, 1.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec2 result = HMM_Div(v2, s); EXPECT_FLOAT_EQ(result.X, 0.5f); EXPECT_FLOAT_EQ(result.Y, 1.0f); } +#endif +#ifdef __cplusplus { HMM_Vec2 result = v2 / s; EXPECT_FLOAT_EQ(result.X, 0.5f); @@ -67,13 +71,15 @@ TEST(Division, Vec3Vec3) EXPECT_FLOAT_EQ(result.Y, 0.75f); EXPECT_FLOAT_EQ(result.Z, 10.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec3 result = HMM_Div(v3_1, v3_2); EXPECT_FLOAT_EQ(result.X, 0.5f); EXPECT_FLOAT_EQ(result.Y, 0.75f); EXPECT_FLOAT_EQ(result.Z, 10.0f); } +#endif +#ifdef __cplusplus { HMM_Vec3 result = v3_1 / v3_2; EXPECT_FLOAT_EQ(result.X, 0.5f); @@ -99,13 +105,15 @@ TEST(Division, Vec3Scalar) EXPECT_FLOAT_EQ(result.Y, 1.0f); EXPECT_FLOAT_EQ(result.Z, 1.5f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec3 result = HMM_Div(v3, s); EXPECT_FLOAT_EQ(result.X, 0.5f); EXPECT_FLOAT_EQ(result.Y, 1.0f); EXPECT_FLOAT_EQ(result.Z, 1.5f); } +#endif +#ifdef __cplusplus { HMM_Vec3 result = v3 / s; EXPECT_FLOAT_EQ(result.X, 0.5f); @@ -132,7 +140,7 @@ TEST(Division, Vec4Vec4) EXPECT_FLOAT_EQ(result.Z, 10.0f); EXPECT_FLOAT_EQ(result.W, 0.25f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec4 result = HMM_Div(v4_1, v4_2); EXPECT_FLOAT_EQ(result.X, 0.5f); @@ -140,6 +148,8 @@ TEST(Division, Vec4Vec4) EXPECT_FLOAT_EQ(result.Z, 10.0f); EXPECT_FLOAT_EQ(result.W, 0.25f); } +#endif +#ifdef __cplusplus { HMM_Vec4 result = v4_1 / v4_2; EXPECT_FLOAT_EQ(result.X, 0.5f); @@ -168,7 +178,7 @@ TEST(Division, Vec4Scalar) EXPECT_FLOAT_EQ(result.Z, 1.5f); EXPECT_FLOAT_EQ(result.W, 2.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec4 result = HMM_Div(v4, s); EXPECT_FLOAT_EQ(result.X, 0.5f); @@ -176,6 +186,8 @@ TEST(Division, Vec4Scalar) EXPECT_FLOAT_EQ(result.Z, 1.5f); EXPECT_FLOAT_EQ(result.W, 2.0f); } +#endif +#ifdef __cplusplus { HMM_Vec4 result = v4 / s; EXPECT_FLOAT_EQ(result.X, 0.5f); @@ -212,7 +224,7 @@ TEST(Division, Mat2Scalar) EXPECT_FLOAT_EQ(result.Elements[1][1], 8.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Mat2 result = HMM_Div(m, s); EXPECT_FLOAT_EQ(result.Elements[0][0], 2.0f); @@ -220,7 +232,9 @@ TEST(Division, Mat2Scalar) EXPECT_FLOAT_EQ(result.Elements[1][0], 6.0f); EXPECT_FLOAT_EQ(result.Elements[1][1], 8.0f); } +#endif +#ifdef __cplusplus { HMM_Mat2 result = m / s; EXPECT_FLOAT_EQ(result.Elements[0][0], 2.0f); @@ -257,7 +271,7 @@ TEST(Division, Mat3Scalar) EXPECT_FLOAT_EQ(result.Elements[2][2], 18.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Mat3 result = HMM_Div(m, s); EXPECT_FLOAT_EQ(result.Elements[0][0], 2.0f); @@ -270,7 +284,9 @@ TEST(Division, Mat3Scalar) EXPECT_FLOAT_EQ(result.Elements[2][1], 16.0f); EXPECT_FLOAT_EQ(result.Elements[2][2], 18.0f); } +#endif +#ifdef __cplusplus { HMM_Mat3 result = m / s; EXPECT_FLOAT_EQ(result.Elements[0][0], 2.0f); @@ -322,7 +338,7 @@ TEST(Division, Mat4Scalar) EXPECT_FLOAT_EQ(result.Elements[3][2], 7.5f); EXPECT_FLOAT_EQ(result.Elements[3][3], 8.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Mat4 result = HMM_Div(m4, s); EXPECT_FLOAT_EQ(result.Elements[0][0], 0.5f); @@ -342,6 +358,8 @@ TEST(Division, Mat4Scalar) EXPECT_FLOAT_EQ(result.Elements[3][2], 7.5f); EXPECT_FLOAT_EQ(result.Elements[3][3], 8.0f); } +#endif +#ifdef __cplusplus { HMM_Mat4 result = m4 / s; EXPECT_FLOAT_EQ(result.Elements[0][0], 0.5f); @@ -394,7 +412,7 @@ TEST(Division, QuaternionScalar) EXPECT_FLOAT_EQ(result.Z, 1.5f); EXPECT_FLOAT_EQ(result.W, 2.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Quat result = HMM_Div(q, f); EXPECT_FLOAT_EQ(result.X, 0.5f); @@ -402,6 +420,8 @@ TEST(Division, QuaternionScalar) EXPECT_FLOAT_EQ(result.Z, 1.5f); EXPECT_FLOAT_EQ(result.W, 2.0f); } +#endif +#ifdef __cplusplus { HMM_Quat result = q / f; EXPECT_FLOAT_EQ(result.X, 0.5f); diff --git a/test/categories/Equality.h b/test/categories/Equality.h index 878cb19..b060614 100644 --- a/test/categories/Equality.h +++ b/test/categories/Equality.h @@ -9,10 +9,12 @@ TEST(Equality, Vec2) EXPECT_TRUE(HMM_EqV2(a, b)); EXPECT_FALSE(HMM_EqV2(a, c)); -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) EXPECT_TRUE(HMM_Eq(a, b)); EXPECT_FALSE(HMM_Eq(a, c)); +#endif +#ifdef __cplusplus EXPECT_TRUE(a == b); EXPECT_FALSE(a == c); @@ -30,10 +32,12 @@ TEST(Equality, Vec3) EXPECT_TRUE(HMM_EqV3(a, b)); EXPECT_FALSE(HMM_EqV3(a, c)); -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) EXPECT_TRUE(HMM_Eq(a, b)); EXPECT_FALSE(HMM_Eq(a, c)); +#endif +#ifdef __cplusplus EXPECT_TRUE(a == b); EXPECT_FALSE(a == c); @@ -51,10 +55,12 @@ TEST(Equality, Vec4) EXPECT_TRUE(HMM_EqV4(a, b)); EXPECT_FALSE(HMM_EqV4(a, c)); -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) EXPECT_TRUE(HMM_Eq(a, b)); EXPECT_FALSE(HMM_Eq(a, c)); +#endif +#ifdef __cplusplus EXPECT_TRUE(a == b); EXPECT_FALSE(a == c); diff --git a/test/categories/MatrixOps.h b/test/categories/MatrixOps.h index 6e6fdf8..b7d5129 100644 --- a/test/categories/MatrixOps.h +++ b/test/categories/MatrixOps.h @@ -19,7 +19,7 @@ TEST(InvMatrix, Transpose) EXPECT_FLOAT_EQ(result.Elements[1][0], Expect.Elements[1][0]); EXPECT_FLOAT_EQ(result.Elements[1][1], Expect.Elements[1][1]); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Mat2 result = HMM_Transpose(Matrix); EXPECT_FLOAT_EQ(result.Elements[0][0], Expect.Elements[0][0]); @@ -54,7 +54,7 @@ TEST(InvMatrix, Transpose) EXPECT_FLOAT_EQ(result.Elements[2][1], Expect.Elements[2][1]); EXPECT_FLOAT_EQ(result.Elements[2][2], Expect.Elements[2][2]); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Mat3 result = HMM_Transpose(Matrix); EXPECT_FLOAT_EQ(result.Elements[0][0], Expect.Elements[0][0]); @@ -94,7 +94,7 @@ TEST(InvMatrix, Transpose) EXPECT_FLOAT_EQ(result.Elements[2][1], Expect.Elements[2][1]); EXPECT_FLOAT_EQ(result.Elements[2][2], Expect.Elements[2][2]); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Mat4 result = HMM_Transpose(Matrix); EXPECT_FLOAT_EQ(result.Elements[0][0], Expect.Elements[0][0]); diff --git a/test/categories/Multiplication.h b/test/categories/Multiplication.h index bdce418..a9563ba 100644 --- a/test/categories/Multiplication.h +++ b/test/categories/Multiplication.h @@ -10,12 +10,14 @@ TEST(Multiplication, Vec2Vec2) EXPECT_FLOAT_EQ(result.X, 3.0f); EXPECT_FLOAT_EQ(result.Y, 8.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec2 result = HMM_Mul(v2_1, v2_2); EXPECT_FLOAT_EQ(result.X, 3.0f); EXPECT_FLOAT_EQ(result.Y, 8.0f); } +#endif +#ifdef __cplusplus { HMM_Vec2 result = v2_1 * v2_2; EXPECT_FLOAT_EQ(result.X, 3.0f); @@ -38,12 +40,14 @@ TEST(Multiplication, Vec2Scalar) EXPECT_FLOAT_EQ(result.X, 3.0f); EXPECT_FLOAT_EQ(result.Y, 6.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec2 result = HMM_Mul(v2, s); EXPECT_FLOAT_EQ(result.X, 3.0f); EXPECT_FLOAT_EQ(result.Y, 6.0f); } +#endif +#ifdef __cplusplus { HMM_Vec2 result = v2 * s; EXPECT_FLOAT_EQ(result.X, 3.0f); @@ -72,13 +76,15 @@ TEST(Multiplication, Vec3Vec3) EXPECT_FLOAT_EQ(result.Y, 10.0f); EXPECT_FLOAT_EQ(result.Z, 18.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec3 result = HMM_Mul(v3_1, v3_2); EXPECT_FLOAT_EQ(result.X, 4.0f); EXPECT_FLOAT_EQ(result.Y, 10.0f); EXPECT_FLOAT_EQ(result.Z, 18.0f); } +#endif +#ifdef __cplusplus { HMM_Vec3 result = v3_1 * v3_2; EXPECT_FLOAT_EQ(result.X, 4.0f); @@ -104,13 +110,15 @@ TEST(Multiplication, Vec3Scalar) EXPECT_FLOAT_EQ(result.Y, 6.0f); EXPECT_FLOAT_EQ(result.Z, 9.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec3 result = HMM_Mul(v3, s); EXPECT_FLOAT_EQ(result.X, 3.0f); EXPECT_FLOAT_EQ(result.Y, 6.0f); EXPECT_FLOAT_EQ(result.Z, 9.0f); } +#endif +#ifdef __cplusplus { HMM_Vec3 result = v3 * s; EXPECT_FLOAT_EQ(result.X, 3.0f); @@ -143,7 +151,7 @@ TEST(Multiplication, Vec4Vec4) EXPECT_FLOAT_EQ(result.Z, 21.0f); EXPECT_FLOAT_EQ(result.W, 32.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec4 result = HMM_Mul(v4_1, v4_2); EXPECT_FLOAT_EQ(result.X, 5.0f); @@ -151,6 +159,8 @@ TEST(Multiplication, Vec4Vec4) EXPECT_FLOAT_EQ(result.Z, 21.0f); EXPECT_FLOAT_EQ(result.W, 32.0f); } +#endif +#ifdef __cplusplus { HMM_Vec4 result = v4_1 * v4_2; EXPECT_FLOAT_EQ(result.X, 5.0f); @@ -179,7 +189,7 @@ TEST(Multiplication, Vec4Scalar) EXPECT_FLOAT_EQ(result.Z, 9.0f); EXPECT_FLOAT_EQ(result.W, 12.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec4 result = HMM_Mul(v4, s); EXPECT_FLOAT_EQ(result.X, 3.0f); @@ -187,6 +197,8 @@ TEST(Multiplication, Vec4Scalar) EXPECT_FLOAT_EQ(result.Z, 9.0f); EXPECT_FLOAT_EQ(result.W, 12.0f); } +#endif +#ifdef __cplusplus { HMM_Vec4 result = v4 * s; EXPECT_FLOAT_EQ(result.X, 3.0f); @@ -234,15 +246,17 @@ TEST(Multiplication, Mat2Mat2) { EXPECT_FLOAT_EQ(result.Elements[1][1], 46.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Mat2 result = HMM_Mul(a,b); EXPECT_FLOAT_EQ(result.Elements[0][0], 23.0f); EXPECT_FLOAT_EQ(result.Elements[0][1], 34.0f); EXPECT_FLOAT_EQ(result.Elements[1][0], 31.0f); - EXPECT_FLOAT_EQ(result.Elements[1][1], 46.0f); + EXPECT_FLOAT_EQ(result.Elements[1][1], 46.0f); } +#endif +#ifdef __cplusplus { HMM_Mat2 result = a * b; EXPECT_FLOAT_EQ(result.Elements[0][0], 23.0f); @@ -271,7 +285,7 @@ TEST(Multiplication, Mat2Scalar) { EXPECT_FLOAT_EQ(result.Elements[1][0], 30.0f); EXPECT_FLOAT_EQ(result.Elements[1][1], 40.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Mat2 result = HMM_Mul(m, s); EXPECT_FLOAT_EQ(result.Elements[0][0], 10.0f); @@ -279,6 +293,8 @@ TEST(Multiplication, Mat2Scalar) { EXPECT_FLOAT_EQ(result.Elements[1][0], 30.0f); EXPECT_FLOAT_EQ(result.Elements[1][1], 40.0f); } +#endif +#ifdef __cplusplus { HMM_Mat2 result = m * s; EXPECT_FLOAT_EQ(result.Elements[0][0], 10.0f); @@ -322,13 +338,15 @@ TEST(Multiplication, Mat2Vec2) { EXPECT_FLOAT_EQ(result.Elements[1], 34.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec2 result = HMM_Mul(m, v); EXPECT_FLOAT_EQ(result.Elements[0], 23.0f); EXPECT_FLOAT_EQ(result.Elements[1], 34.0f); } - +#endif + +#ifdef __cplusplus { HMM_Vec2 result = m * v; EXPECT_FLOAT_EQ(result.Elements[0], 23.0f); @@ -368,7 +386,7 @@ TEST(Multiplication, Mat3Mat3) EXPECT_FLOAT_EQ(result.Elements[2][2], 312.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Mat3 result = HMM_Mul(a,b); EXPECT_FLOAT_EQ(result.Elements[0][0], 138.0f); @@ -381,7 +399,9 @@ TEST(Multiplication, Mat3Mat3) EXPECT_FLOAT_EQ(result.Elements[2][1], 261.0f); EXPECT_FLOAT_EQ(result.Elements[2][2], 312.0f); } +#endif +#ifdef __cplusplus { HMM_Mat3 result = a * b; EXPECT_FLOAT_EQ(result.Elements[0][0], 138.0f); @@ -420,7 +440,7 @@ TEST(Multiplication, Mat3Scalar) { EXPECT_FLOAT_EQ(result.Elements[2][1], 80.0f); EXPECT_FLOAT_EQ(result.Elements[2][2], 90.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Mat3 result = HMM_Mul(m, s); EXPECT_FLOAT_EQ(result.Elements[0][0], 10.0f); @@ -433,6 +453,8 @@ TEST(Multiplication, Mat3Scalar) { EXPECT_FLOAT_EQ(result.Elements[2][1], 80.0f); EXPECT_FLOAT_EQ(result.Elements[2][2], 90.0f); } +#endif +#ifdef __cplusplus { HMM_Mat3 result = m * s; EXPECT_FLOAT_EQ(result.Elements[0][0], 10.0f); @@ -491,14 +513,15 @@ TEST(Multiplication, Mat3Vec3) { EXPECT_FLOAT_EQ(result.Elements[1], 171.0f); EXPECT_FLOAT_EQ(result.Elements[2], 204.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec3 result = HMM_Mul(m, v); EXPECT_FLOAT_EQ(result.Elements[0], 138.0f); EXPECT_FLOAT_EQ(result.Elements[1], 171.0f); EXPECT_FLOAT_EQ(result.Elements[2], 204.0f); } - +#endif +#ifdef __cplusplus { HMM_Vec3 result = m * v; EXPECT_FLOAT_EQ(result.Elements[0], 138.0f); @@ -552,7 +575,7 @@ TEST(Multiplication, Mat4Mat4) EXPECT_FLOAT_EQ(result.Elements[3][2], 1118.0f); EXPECT_FLOAT_EQ(result.Elements[3][3], 1240.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Mat4 result = HMM_Mul(m4_1, m4_2); EXPECT_FLOAT_EQ(result.Elements[0][0], 538.0f); @@ -572,6 +595,8 @@ TEST(Multiplication, Mat4Mat4) EXPECT_FLOAT_EQ(result.Elements[3][2], 1118.0f); EXPECT_FLOAT_EQ(result.Elements[3][3], 1240.0f); } +#endif +#ifdef __cplusplus { HMM_Mat4 result = m4_1 * m4_2; EXPECT_FLOAT_EQ(result.Elements[0][0], 538.0f); @@ -634,7 +659,7 @@ TEST(Multiplication, Mat4Scalar) EXPECT_FLOAT_EQ(result.Elements[3][2], 45.0f); EXPECT_FLOAT_EQ(result.Elements[3][3], 48.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Mat4 result = HMM_Mul(m4, s); EXPECT_FLOAT_EQ(result.Elements[0][0], 3.0f); @@ -654,6 +679,8 @@ TEST(Multiplication, Mat4Scalar) EXPECT_FLOAT_EQ(result.Elements[3][2], 45.0f); EXPECT_FLOAT_EQ(result.Elements[3][3], 48.0f); } +#endif +#ifdef __cplusplus { HMM_Mat4 result = m4 * s; EXPECT_FLOAT_EQ(result.Elements[0][0], 3.0f); @@ -737,7 +764,7 @@ TEST(Multiplication, Mat4Vec4) EXPECT_FLOAT_EQ(result.Z, 110.0f); EXPECT_FLOAT_EQ(result.W, 120.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec4 result = HMM_Mul(m4, v4); EXPECT_FLOAT_EQ(result.X, 90.0f); @@ -745,6 +772,8 @@ TEST(Multiplication, Mat4Vec4) EXPECT_FLOAT_EQ(result.Z, 110.0f); EXPECT_FLOAT_EQ(result.W, 120.0f); } +#endif +#ifdef __cplusplus { HMM_Vec4 result = m4 * v4; EXPECT_FLOAT_EQ(result.X, 90.0f); @@ -769,7 +798,7 @@ TEST(Multiplication, QuaternionQuaternion) EXPECT_FLOAT_EQ(result.Z, 48.0f); EXPECT_FLOAT_EQ(result.W, -6.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Quat result = HMM_Mul(q1, q2); EXPECT_FLOAT_EQ(result.X, 24.0f); @@ -777,6 +806,8 @@ TEST(Multiplication, QuaternionQuaternion) EXPECT_FLOAT_EQ(result.Z, 48.0f); EXPECT_FLOAT_EQ(result.W, -6.0f); } +#endif +#ifdef __cplusplus { HMM_Quat result = q1 * q2; EXPECT_FLOAT_EQ(result.X, 24.0f); @@ -803,7 +834,7 @@ TEST(Multiplication, QuaternionScalar) EXPECT_FLOAT_EQ(result.Z, 6.0f); EXPECT_FLOAT_EQ(result.W, 8.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Quat result = HMM_Mul(q, f); EXPECT_FLOAT_EQ(result.X, 2.0f); @@ -811,6 +842,8 @@ TEST(Multiplication, QuaternionScalar) EXPECT_FLOAT_EQ(result.Z, 6.0f); EXPECT_FLOAT_EQ(result.W, 8.0f); } +#endif +#ifdef __cplusplus { HMM_Quat result = q * f; EXPECT_FLOAT_EQ(result.X, 2.0f); diff --git a/test/categories/QuaternionOps.h b/test/categories/QuaternionOps.h index 57927c4..803c2a7 100644 --- a/test/categories/QuaternionOps.h +++ b/test/categories/QuaternionOps.h @@ -22,7 +22,7 @@ TEST(QuaternionOps, Dot) float result = HMM_DotQ(q1, q2); EXPECT_FLOAT_EQ(result, 70.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { float result = HMM_Dot(q1, q2); EXPECT_FLOAT_EQ(result, 70.0f); @@ -41,7 +41,7 @@ TEST(QuaternionOps, Normalize) EXPECT_NEAR(result.Z, 0.5477225575f, 0.001f); EXPECT_NEAR(result.W, 0.7302967433f, 0.001f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Quat result = HMM_Norm(q); EXPECT_NEAR(result.X, 0.1825741858f, 0.001f); @@ -97,7 +97,7 @@ TEST(QuaternionOps, SLerp) EXPECT_NEAR(result.Z, -0.40824830f, 0.001f); EXPECT_NEAR(result.W, 0.70710676f, 0.001f); } - { + { HMM_Quat result = HMM_SLerp(from, 1.0f, to); EXPECT_NEAR(result.X, 0.5f, 0.001f); EXPECT_NEAR(result.Y, 0.5f, 0.001f); diff --git a/test/categories/Subtraction.h b/test/categories/Subtraction.h index 20ba286..24f2146 100644 --- a/test/categories/Subtraction.h +++ b/test/categories/Subtraction.h @@ -10,12 +10,14 @@ TEST(Subtraction, Vec2) EXPECT_FLOAT_EQ(result.X, -2.0f); EXPECT_FLOAT_EQ(result.Y, -2.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec2 result = HMM_Sub(v2_1, v2_2); EXPECT_FLOAT_EQ(result.X, -2.0f); EXPECT_FLOAT_EQ(result.Y, -2.0f); } +#endif +#ifdef __cplusplus { HMM_Vec2 result = v2_1 - v2_2; EXPECT_FLOAT_EQ(result.X, -2.0f); @@ -39,13 +41,15 @@ TEST(Subtraction, Vec3) EXPECT_FLOAT_EQ(result.Y, -3.0f); EXPECT_FLOAT_EQ(result.Z, -3.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec3 result = HMM_Sub(v3_1, v3_2); EXPECT_FLOAT_EQ(result.X, -3.0f); EXPECT_FLOAT_EQ(result.Y, -3.0f); EXPECT_FLOAT_EQ(result.Z, -3.0f); } +#endif +#ifdef __cplusplus { HMM_Vec3 result = v3_1 - v3_2; EXPECT_FLOAT_EQ(result.X, -3.0f); @@ -72,7 +76,7 @@ TEST(Subtraction, Vec4) EXPECT_FLOAT_EQ(result.Z, -4.0f); EXPECT_FLOAT_EQ(result.W, -4.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec4 result = HMM_Sub(v4_1, v4_2); EXPECT_FLOAT_EQ(result.X, -4.0f); @@ -80,6 +84,8 @@ TEST(Subtraction, Vec4) EXPECT_FLOAT_EQ(result.Z, -4.0f); EXPECT_FLOAT_EQ(result.W, -4.0f); } +#endif +#ifdef __cplusplus { HMM_Vec4 result = v4_1 - v4_2; EXPECT_FLOAT_EQ(result.X, -4.0f); @@ -124,7 +130,7 @@ TEST(Subtraction, Mat2) EXPECT_FLOAT_EQ(result.Elements[1][0], 4.0); EXPECT_FLOAT_EQ(result.Elements[1][1], 4.0); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Mat2 result = HMM_Sub(b,a); EXPECT_FLOAT_EQ(result.Elements[0][0], 4.0); @@ -132,7 +138,8 @@ TEST(Subtraction, Mat2) EXPECT_FLOAT_EQ(result.Elements[1][0], 4.0); EXPECT_FLOAT_EQ(result.Elements[1][1], 4.0); } - +#endif +#ifdef __cplusplus { HMM_Mat2 result = b - a; EXPECT_FLOAT_EQ(result.Elements[0][0], 4.0); @@ -183,7 +190,7 @@ TEST(Subtraction, Mat3) EXPECT_FLOAT_EQ(result.Elements[2][1], 9.0); EXPECT_FLOAT_EQ(result.Elements[2][2], 9.0); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Mat3 result = HMM_Sub(b,a); EXPECT_FLOAT_EQ(result.Elements[0][0], 9.0); @@ -196,7 +203,9 @@ TEST(Subtraction, Mat3) EXPECT_FLOAT_EQ(result.Elements[2][1], 9.0); EXPECT_FLOAT_EQ(result.Elements[2][2], 9.0); } +#endif +#ifdef __cplusplus b -= a; EXPECT_FLOAT_EQ(b.Elements[0][0], 9.0); EXPECT_FLOAT_EQ(b.Elements[0][1], 9.0); @@ -245,7 +254,7 @@ TEST(Subtraction, Mat4) } } } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Mat4 result = HMM_Sub(m4_1, m4_2); for (int Column = 0; Column < 4; ++Column) @@ -256,6 +265,8 @@ TEST(Subtraction, Mat4) } } } +#endif +#ifdef __cplusplus { HMM_Mat4 result = m4_1 - m4_2; for (int Column = 0; Column < 4; ++Column) @@ -290,7 +301,7 @@ TEST(Subtraction, Quaternion) EXPECT_FLOAT_EQ(result.Z, -4.0f); EXPECT_FLOAT_EQ(result.W, -4.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Quat result = HMM_Sub(q1, q2); EXPECT_FLOAT_EQ(result.X, -4.0f); @@ -298,6 +309,8 @@ TEST(Subtraction, Quaternion) EXPECT_FLOAT_EQ(result.Z, -4.0f); EXPECT_FLOAT_EQ(result.W, -4.0f); } +#endif +#ifdef __cplusplus { HMM_Quat result = q1 - q2; EXPECT_FLOAT_EQ(result.X, -4.0f); diff --git a/test/categories/VectorOps.h b/test/categories/VectorOps.h index a207c2c..2eeb84d 100644 --- a/test/categories/VectorOps.h +++ b/test/categories/VectorOps.h @@ -10,7 +10,7 @@ TEST(VectorOps, LengthSquared) EXPECT_FLOAT_EQ(HMM_LenSqrV3(v3), 14.0f); EXPECT_FLOAT_EQ(HMM_LenSqrV4(v4), 15.0f); -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) EXPECT_FLOAT_EQ(HMM_LenSqr(v2), 5.0f); EXPECT_FLOAT_EQ(HMM_LenSqr(v3), 14.0f); EXPECT_FLOAT_EQ(HMM_LenSqr(v4), 15.0f); @@ -27,7 +27,7 @@ TEST(VectorOps, Length) EXPECT_FLOAT_EQ(HMM_LenV3(v3), 7.0f); EXPECT_FLOAT_EQ(HMM_LenV4(v4), 13.892444f); -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) EXPECT_FLOAT_EQ(HMM_Len(v2), 9.0553856f); EXPECT_FLOAT_EQ(HMM_Len(v3), 7.0f); EXPECT_FLOAT_EQ(HMM_Len(v4), 13.892444f); @@ -62,7 +62,7 @@ TEST(VectorOps, Normalize) EXPECT_LT(result.W, 0.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec2 result = HMM_Norm(v2); EXPECT_NEAR(HMM_LenV2(result), 1.0f, 0.001f); @@ -112,7 +112,7 @@ TEST(VectorOps, NormalizeZero) EXPECT_FLOAT_EQ(result.W, 0.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec2 result = HMM_Norm(v2); EXPECT_FLOAT_EQ(result.X, 0.0f); @@ -152,7 +152,7 @@ TEST(VectorOps, DotVec2) HMM_Vec2 v2 = HMM_V2(3.0f, 4.0f); EXPECT_FLOAT_EQ(HMM_DotV2(v1, v2), 11.0f); -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) EXPECT_FLOAT_EQ(HMM_Dot(v1, v2), 11.0f); #endif } @@ -163,7 +163,7 @@ TEST(VectorOps, DotVec3) HMM_Vec3 v2 = HMM_V3(4.0f, 5.0f, 6.0f); EXPECT_FLOAT_EQ(HMM_DotV3(v1, v2), 32.0f); -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) EXPECT_FLOAT_EQ(HMM_Dot(v1, v2), 32.0f); #endif } @@ -174,7 +174,7 @@ TEST(VectorOps, DotVec4) HMM_Vec4 v2 = HMM_V4(5.0f, 6.0f, 7.0f, 8.0f); EXPECT_FLOAT_EQ(HMM_DotV4(v1, v2), 70.0f); -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) EXPECT_FLOAT_EQ(HMM_Dot(v1, v2), 70.0f); #endif } @@ -189,7 +189,7 @@ TEST(VectorOps, LerpV2) EXPECT_FLOAT_EQ(result.X, 0.5f); EXPECT_FLOAT_EQ(result.Y, 0.5f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec2 result = HMM_Lerp(v1, 0.5, v2); EXPECT_FLOAT_EQ(result.X, 0.5f); @@ -209,7 +209,7 @@ TEST(VectorOps, LerpV3) EXPECT_FLOAT_EQ(result.Y, 1.0f); EXPECT_FLOAT_EQ(result.Z, 0.5f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec3 result = HMM_Lerp(v1, 0.5, v2); EXPECT_FLOAT_EQ(result.X, 0.5f); @@ -231,7 +231,7 @@ TEST(VectorOps, LerpV4) EXPECT_FLOAT_EQ(result.Z, 0.5f); EXPECT_FLOAT_EQ(result.W, 1.0f); } -#ifdef __cplusplus +#if HANDMADE_MATH__USE_C11_GENERICS || defined(__cplusplus) { HMM_Vec4 result = HMM_Lerp(v1, 0.5, v2); EXPECT_FLOAT_EQ(result.X, 0.5f);