aboutsummaryrefslogtreecommitdiff
path: root/test/source/TestMeta.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/source/TestMeta.cpp')
-rw-r--r--test/source/TestMeta.cpp120
1 files changed, 120 insertions, 0 deletions
diff --git a/test/source/TestMeta.cpp b/test/source/TestMeta.cpp
new file mode 100644
index 0000000..8d2e9d1
--- /dev/null
+++ b/test/source/TestMeta.cpp
@@ -0,0 +1,120 @@
+/////////////////////////////////////////////////////////////////////////////
+// Copyright (c) Electronic Arts Inc. All rights reserved.
+/////////////////////////////////////////////////////////////////////////////
+
+
+#include "EASTLTest.h"
+
+#ifdef EA_COMPILER_CPP14_ENABLED
+#include "ConceptImpls.h"
+#include <EASTL/meta.h>
+
+
+int TestGetTypeIndex()
+{
+ using namespace eastl;
+
+ int nErrorCount = 0;
+
+ static_assert(meta::get_type_index_v<short, short, char, int> == 0, "error");
+ static_assert(meta::get_type_index_v<char, short, char, int> == 1, "error");
+ static_assert(meta::get_type_index_v<int, short, char, int> == 2, "error");
+ static_assert(meta::get_type_index_v<int, int, int, int> == 0, "error");
+
+ return nErrorCount;
+}
+
+int TestGetType()
+{
+ using namespace eastl;
+
+ int nErrorCount = 0;
+
+ static_assert(is_same_v<meta::get_type_at_t<2, short, short, char, int>, char>, "error");
+ static_assert(is_same_v<meta::get_type_at_t<3, char, short, char, int>, int>, "error");
+ // static_assert(is_same_v<meta::get_type_at_t<4, int, short, char, int>, int>, "error");
+ static_assert(is_same_v<meta::get_type_at_t<1, int, int, int, int>, int>, "error");
+
+ return nErrorCount;
+}
+
+int TestTypeCount()
+{
+ using namespace eastl;
+
+ int nErrorCount = 0;
+
+ static_assert(meta::type_count_v<short, short, char, int> == 1, "error");
+ static_assert(meta::type_count_v<char, short, char, int> == 1, "error");
+ static_assert(meta::type_count_v<int, short, char, int> == 1, "error");
+ static_assert(meta::type_count_v<int, int, int, int> == 3, "error");
+ static_assert(meta::type_count_v<int, int, int, int, int, int, int, int, int> == 8, "error");
+ static_assert(meta::type_count_v<int, int, int, int, char, int, int, int, int> == 7, "error");
+ static_assert(meta::type_count_v<int, int, char, int, char, int, int, int, int> == 6, "error");
+ static_assert(meta::type_count_v<int, int, char, int, char, int, int, int, char> == 5, "error");
+ static_assert(meta::type_count_v<int, int, char, int, char, int, const int, int, char> == 4, "error");
+ static_assert(meta::type_count_v<int, volatile int, char, int, char, int, const int, const volatile int, char> == 2, "error");
+
+ return nErrorCount;
+}
+
+int TestDuplicateTypeCheck()
+{
+ using namespace eastl;
+
+ int nErrorCount = 0;
+
+ static_assert( meta::duplicate_type_check_v<short, short, char, int>, "error");
+ static_assert( meta::duplicate_type_check_v<short, short, char, int, long, unsigned, long long>, "error");
+ static_assert( meta::duplicate_type_check_v<int, const int, volatile int, const volatile int, int>, "error");
+ static_assert(!meta::duplicate_type_check_v<short, short, char, int, long, unsigned, short, long long>, "error");
+
+ return nErrorCount;
+}
+
+int TestOverloadResolution()
+{
+ using namespace eastl;
+ using namespace eastl::meta;
+
+ int nErrorCount = 0;
+
+ static_assert(is_same_v<overload_resolution_t<int, overload_set<int>>, int>, "error");
+ static_assert(is_same_v<overload_resolution_t<int, overload_set<short>>, short>, "error");
+ static_assert(is_same_v<overload_resolution_t<int, overload_set<long>>, long>, "error");
+ static_assert(is_same_v<overload_resolution_t<short, overload_set<int>>, int>, "error");
+ static_assert(is_same_v<overload_resolution_t<int, overload_set<int, short, long>>, int>, "error");
+ static_assert(is_same_v<overload_resolution_t<int, overload_set<short, int, long, float>>, int>, "error");
+ static_assert(is_same_v<overload_resolution_t<int, overload_set<short, long, int, float, char>>, int>, "error");
+
+ static_assert(is_same_v<overload_resolution_t<int, overload_set<int>>, int>, "error");
+ static_assert(is_same_v<overload_resolution_t<int, overload_set<int, short>>, int>, "error");
+ static_assert(is_same_v<overload_resolution_t<int, overload_set<int, short, long>>, int>, "error");
+
+ return nErrorCount;
+}
+
+
+int TestMeta()
+{
+ int nErrorCount = 0;
+
+ nErrorCount += TestGetTypeIndex();
+ nErrorCount += TestGetType();
+ nErrorCount += TestTypeCount();
+ nErrorCount += TestDuplicateTypeCheck();
+ nErrorCount += TestOverloadResolution();
+
+ return nErrorCount;
+}
+
+#endif // EA_COMPILER_CPP14_ENABLED
+
+
+
+
+
+
+
+
+