Explorar el Código

Added test for inheritance #650

Christophe Riccio hace 8 años
padre
commit
cdb28edcaa
Se han modificado 1 ficheros con 39 adiciones y 12 borrados
  1. 39 12
      test/core/core_type_vec4.cpp

+ 39 - 12
test/core/core_type_vec4.cpp

@@ -1,5 +1,6 @@
 #define GLM_FORCE_ALIGNED
 #define GLM_FORCE_SWIZZLE
+#include <glm/gtc/epsilon.hpp>
 #include <glm/vector_relational.hpp>
 #include <glm/vec2.hpp>
 #include <glm/vec3.hpp>
@@ -33,7 +34,7 @@ enum comp
 //	return _mm_shuffle_ps(Src, Src, mask<(int(W) << 6) | (int(Z) << 4) | (int(Y) << 2) | (int(X) << 0)>::value);
 //}
 
-int test_vec4_ctor()
+static int test_vec4_ctor()
 {
 	int Error = 0;
 
@@ -128,7 +129,7 @@ int test_vec4_ctor()
 	return Error;
 }
 
-int test_bvec4_ctor()
+static int test_bvec4_ctor()
 {
 	int Error = 0;
 
@@ -148,7 +149,7 @@ int test_bvec4_ctor()
 	return Error;
 }
 
-int test_vec4_operators()
+static int test_vec4_operators()
 {
 	int Error = 0;
 	
@@ -284,7 +285,7 @@ int test_vec4_operators()
 	return Error;
 }
 
-int test_vec4_equal()
+static int test_vec4_equal()
 {
 	int Error = 0;
 
@@ -305,7 +306,7 @@ int test_vec4_equal()
 	return Error;
 }
 
-int test_vec4_size()
+static int test_vec4_size()
 {
 	int Error = 0;
 
@@ -330,7 +331,7 @@ int test_vec4_size()
 	return Error;
 }
 
-int test_vec4_swizzle_partial()
+static int test_vec4_swizzle_partial()
 {
 	int Error = 0;
 
@@ -367,7 +368,7 @@ int test_vec4_swizzle_partial()
 	return Error;
 }
 
-int test_operator_increment()
+static int test_operator_increment()
 {
 	int Error(0);
 
@@ -402,7 +403,7 @@ struct AoS
 	glm::vec2 D;
 };
 
-int test_vec4_perf_AoS(std::size_t Size)
+static int test_vec4_perf_AoS(std::size_t Size)
 {
 	int Error(0);
 
@@ -423,7 +424,7 @@ int test_vec4_perf_AoS(std::size_t Size)
 	return Error;
 }
 
-int test_vec4_perf_SoA(std::size_t Size)
+static int test_vec4_perf_SoA(std::size_t Size)
 {
 	int Error(0);
 
@@ -475,7 +476,7 @@ namespace heap
 		glm::vec4 v;
 	};
 
-	int test()
+	static int test()
 	{
 		int Error = 0;
 
@@ -489,7 +490,7 @@ namespace heap
 	}
 }//namespace heap
 
-int test_vec4_simd()
+static int test_vec4_simd()
 {
 	int Error = 0;
 
@@ -504,9 +505,34 @@ int test_vec4_simd()
 	return Error;
 }
 
+static int test_inheritance()
+{
+	struct my_vec4 : public glm::vec4
+	{
+		my_vec4()
+			: glm::vec4(76.f, 75.f, 74.f, 73.f)
+			, data(82)
+		{}
+
+		int data;
+	};
+
+	int Error = 0;
+
+	my_vec4 v;
+
+	Error += v.data == 82 ? 0 : 1;
+	Error += glm::epsilonEqual(v.x, 76.f, glm::epsilon<float>()) ? 0 : 1;
+	Error += glm::epsilonEqual(v.y, 75.f, glm::epsilon<float>()) ? 0 : 1;
+	Error += glm::epsilonEqual(v.z, 74.f, glm::epsilon<float>()) ? 0 : 1;
+	Error += glm::epsilonEqual(v.w, 73.f, glm::epsilon<float>()) ? 0 : 1;
+
+	return Error;
+}
+
 int main()
 {
-	int Error(0);
+	int Error = 0;
 
 /*
 	{
@@ -565,6 +591,7 @@ int main()
 	Error += test_vec4_simd();
 	Error += test_operator_increment();
 	Error += heap::test();
+	Error += test_inheritance();
 
 	return Error;
 }