aboutsummaryrefslogtreecommitdiff
path: root/EASTL/test/source/TestVariant2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'EASTL/test/source/TestVariant2.cpp')
-rw-r--r--EASTL/test/source/TestVariant2.cpp82
1 files changed, 82 insertions, 0 deletions
diff --git a/EASTL/test/source/TestVariant2.cpp b/EASTL/test/source/TestVariant2.cpp
new file mode 100644
index 0000000..e2bd90f
--- /dev/null
+++ b/EASTL/test/source/TestVariant2.cpp
@@ -0,0 +1,82 @@
+/**
+ * NOTE:
+ *
+ * DO NOT INCLUDE EATest/EATest.h or ANY OTHER HEADER
+ * There is a bug in MSVC whereby pushing/poping all warnings from a header does not reenable all warnings
+ * in the TU that included the header.
+ * For example C4805 will not reenabled.
+ */
+
+#include <EASTL/variant.h>
+
+int TestVariantGeneratingComparisonOverloads()
+{
+ int nErrorCount = 0;
+
+ {
+ eastl::variant<int, float, bool> a;
+ eastl::variant<int, float, bool> b;
+
+ auto r = a == b;
+
+ nErrorCount += !r;
+ }
+
+ {
+ eastl::variant<int, float, bool> a;
+ eastl::variant<int, float, bool> b;
+
+ bool r = (a == b);
+
+ nErrorCount += !r;
+ }
+
+ // A variant is permitted to hold the same type more than once, and to hold differently cv-qualified versions of the same type.
+
+ {
+ eastl::variant<int, int, int> a;
+ eastl::variant<int, int, int> b;
+
+ bool r = (a == b);
+
+ nErrorCount += !r;
+ }
+
+ {
+ eastl::variant<signed int, unsigned int> a;
+ eastl::variant<signed int, unsigned int> b;
+
+ bool r = (a == b);
+
+ nErrorCount += !r;
+ }
+
+ {
+ eastl::variant<int, bool> a;
+ eastl::variant<int, bool> b;
+
+ bool r = (a == b);
+
+ nErrorCount += !r;
+ }
+
+ {
+ eastl::variant<volatile int, int, const int, const volatile int> a;
+ eastl::variant<volatile int, int, const int, const volatile int> b;
+
+ bool r = (a == b);
+
+ nErrorCount += !r;
+ }
+
+ {
+ eastl::variant<volatile int, int, const int, const volatile int, bool> a;
+ eastl::variant<volatile int, int, const int, const volatile int, bool> b;
+
+ bool r = (a == b);
+
+ nErrorCount += !r;
+ }
+
+ return nErrorCount;
+}