aboutsummaryrefslogtreecommitdiff
path: root/Examples/test-suite/d/cpp11_strongly_typed_enumerations_runme.2.d
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/d/cpp11_strongly_typed_enumerations_runme.2.d')
-rw-r--r--Examples/test-suite/d/cpp11_strongly_typed_enumerations_runme.2.d203
1 files changed, 203 insertions, 0 deletions
diff --git a/Examples/test-suite/d/cpp11_strongly_typed_enumerations_runme.2.d b/Examples/test-suite/d/cpp11_strongly_typed_enumerations_runme.2.d
new file mode 100644
index 000000000..658c45ce0
--- /dev/null
+++ b/Examples/test-suite/d/cpp11_strongly_typed_enumerations_runme.2.d
@@ -0,0 +1,203 @@
+module cpp11_strongly_typed_enumerations_runme;
+
+import cpp11_strongly_typed_enumerations.cpp11_strongly_typed_enumerations;
+import cpp11_strongly_typed_enumerations.Enum1;
+import cpp11_strongly_typed_enumerations.Enum2;
+import cpp11_strongly_typed_enumerations.Enum3;
+import cpp11_strongly_typed_enumerations.Enum4;
+import cpp11_strongly_typed_enumerations.Enum5;
+import cpp11_strongly_typed_enumerations.Enum6;
+import cpp11_strongly_typed_enumerations.Enum7td;
+import cpp11_strongly_typed_enumerations.Enum8;
+import cpp11_strongly_typed_enumerations.Enum9;
+import cpp11_strongly_typed_enumerations.Enum10;
+import cpp11_strongly_typed_enumerations.Enum11;
+import cpp11_strongly_typed_enumerations.Enum15;
+import cpp11_strongly_typed_enumerations.Enum16;
+import cpp11_strongly_typed_enumerations.Enum17;
+import cpp11_strongly_typed_enumerations.Class1;
+import cpp11_strongly_typed_enumerations.Class2;
+import std.conv;
+
+int enumCheck(int actual, int expected) {
+ if (actual != expected)
+ throw new Exception("Enum value mismatch. Expected " ~ to!string(expected) ~ " Actual: " ~ to!string(actual));
+ return expected + 1;
+}
+
+void main() {
+ int val = 0;
+ val = enumCheck(cast(int)Enum1.Val1, val);
+ val = enumCheck(cast(int)Enum1.Val2, val);
+ val = enumCheck(cast(int)Enum1.Val3, 13);
+ val = enumCheck(cast(int)Enum1.Val4, val);
+ val = enumCheck(cast(int)Enum1.Val5a, 13);
+ val = enumCheck(cast(int)Enum1.Val6a, val);
+
+ val = 0;
+ val = enumCheck(cast(int)Enum2.Val1, val);
+ val = enumCheck(cast(int)Enum2.Val2, val);
+ val = enumCheck(cast(int)Enum2.Val3, 23);
+ val = enumCheck(cast(int)Enum2.Val4, val);
+ val = enumCheck(cast(int)Enum2.Val5b, 23);
+ val = enumCheck(cast(int)Enum2.Val6b, val);
+
+ val = 0;
+ val = enumCheck(cast(int)Enum4.Val1, val);
+ val = enumCheck(cast(int)Enum4.Val2, val);
+ val = enumCheck(cast(int)Enum4.Val3, 43);
+ val = enumCheck(cast(int)Enum4.Val4, val);
+
+ val = 0;
+ val = enumCheck(cast(int)Enum5.Val1, val);
+ val = enumCheck(cast(int)Enum5.Val2, val);
+ val = enumCheck(cast(int)Enum5.Val3, 53);
+ val = enumCheck(cast(int)Enum5.Val4, val);
+
+ val = 0;
+ val = enumCheck(cast(int)Enum6.Val1, val);
+ val = enumCheck(cast(int)Enum6.Val2, val);
+ val = enumCheck(cast(int)Enum6.Val3, 63);
+ val = enumCheck(cast(int)Enum6.Val4, val);
+
+ val = 0;
+ val = enumCheck(cast(int)Enum7td.Val1, val);
+ val = enumCheck(cast(int)Enum7td.Val2, val);
+ val = enumCheck(cast(int)Enum7td.Val3, 73);
+ val = enumCheck(cast(int)Enum7td.Val4, val);
+
+ val = 0;
+ val = enumCheck(cast(int)Enum8.Val1, val);
+ val = enumCheck(cast(int)Enum8.Val2, val);
+ val = enumCheck(cast(int)Enum8.Val3, 83);
+ val = enumCheck(cast(int)Enum8.Val4, val);
+
+ val = 0;
+ val = enumCheck(cast(int)Enum10.Val1, val);
+ val = enumCheck(cast(int)Enum10.Val2, val);
+ val = enumCheck(cast(int)Enum10.Val3, 103);
+ val = enumCheck(cast(int)Enum10.Val4, val);
+
+ val = 0;
+ val = enumCheck(cast(int)Class1.Enum12.Val1, 1121);
+ val = enumCheck(cast(int)Class1.Enum12.Val2, 1122);
+ val = enumCheck(cast(int)Class1.Enum12.Val3, val);
+ val = enumCheck(cast(int)Class1.Enum12.Val4, val);
+ val = enumCheck(cast(int)Class1.Enum12.Val5c, 1121);
+ val = enumCheck(cast(int)Class1.Enum12.Val6c, val);
+
+ val = 0;
+ val = enumCheck(cast(int)Class1.Enum13.Val1, 1131);
+ val = enumCheck(cast(int)Class1.Enum13.Val2, 1132);
+ val = enumCheck(cast(int)Class1.Enum13.Val3, val);
+ val = enumCheck(cast(int)Class1.Enum13.Val4, val);
+ val = enumCheck(cast(int)Class1.Enum13.Val5d, 1131);
+ val = enumCheck(cast(int)Class1.Enum13.Val6d, val);
+
+ val = 0;
+ val = enumCheck(cast(int)Class1.Enum14.Val1, 1141);
+ val = enumCheck(cast(int)Class1.Enum14.Val2, 1142);
+ val = enumCheck(cast(int)Class1.Enum14.Val3, val);
+ val = enumCheck(cast(int)Class1.Enum14.Val4, val);
+ val = enumCheck(cast(int)Class1.Enum14.Val5e, 1141);
+ val = enumCheck(cast(int)Class1.Enum14.Val6e, val);
+
+ /* Nested struct not supported for D
+ val = 0;
+ val = enumCheck(cast(int)Class1.Struct1.Enum12.Val1, 3121);
+ val = enumCheck(cast(int)Class1.Struct1.Enum12.Val2, 3122);
+ val = enumCheck(cast(int)Class1.Struct1.Enum12.Val3, val);
+ val = enumCheck(cast(int)Class1.Struct1.Enum12.Val4, val);
+ val = enumCheck(cast(int)Class1.Struct1.Enum12.Val5f, 3121);
+ val = enumCheck(cast(int)Class1.Struct1.Enum12.Val6f, val);
+
+ val = 0;
+ val = enumCheck(cast(int)Class1.Struct1.Enum13.Val1, 3131);
+ val = enumCheck(cast(int)Class1.Struct1.Enum13.Val2, 3132);
+ val = enumCheck(cast(int)Class1.Struct1.Enum13.Val3, val);
+ val = enumCheck(cast(int)Class1.Struct1.Enum13.Val4, val);
+
+ val = 0;
+ val = enumCheck(cast(int)Class1.Struct1.Enum14.Val1, 3141);
+ val = enumCheck(cast(int)Class1.Struct1.Enum14.Val2, 3142);
+ val = enumCheck(cast(int)Class1.Struct1.Enum14.Val3, val);
+ val = enumCheck(cast(int)Class1.Struct1.Enum14.Val4, val);
+ val = enumCheck(cast(int)Class1.Struct1.Enum14.Val5g, 3141);
+ val = enumCheck(cast(int)Class1.Struct1.Enum14.Val6g, val);
+ */
+
+ val = 0;
+ val = enumCheck(cast(int)Class2.Enum12.Val1, 2121);
+ val = enumCheck(cast(int)Class2.Enum12.Val2, 2122);
+ val = enumCheck(cast(int)Class2.Enum12.Val3, val);
+ val = enumCheck(cast(int)Class2.Enum12.Val4, val);
+ val = enumCheck(cast(int)Class2.Enum12.Val5h, 2121);
+ val = enumCheck(cast(int)Class2.Enum12.Val6h, val);
+
+ val = 0;
+ val = enumCheck(cast(int)Class2.Enum13.Val1, 2131);
+ val = enumCheck(cast(int)Class2.Enum13.Val2, 2132);
+ val = enumCheck(cast(int)Class2.Enum13.Val3, val);
+ val = enumCheck(cast(int)Class2.Enum13.Val4, val);
+ val = enumCheck(cast(int)Class2.Enum13.Val5i, 2131);
+ val = enumCheck(cast(int)Class2.Enum13.Val6i, val);
+
+ val = 0;
+ val = enumCheck(cast(int)Class2.Enum14.Val1, 2141);
+ val = enumCheck(cast(int)Class2.Enum14.Val2, 2142);
+ val = enumCheck(cast(int)Class2.Enum14.Val3, val);
+ val = enumCheck(cast(int)Class2.Enum14.Val4, val);
+ val = enumCheck(cast(int)Class2.Enum14.Val5j, 2141);
+ val = enumCheck(cast(int)Class2.Enum14.Val6j, val);
+
+ /* Nested struct not supported for D
+ val = 0;
+ val = enumCheck(cast(int)Class2.Struct1.Enum12.Val1, 4121);
+ val = enumCheck(cast(int)Class2.Struct1.Enum12.Val2, 4122);
+ val = enumCheck(cast(int)Class2.Struct1.Enum12.Val3, val);
+ val = enumCheck(cast(int)Class2.Struct1.Enum12.Val4, val);
+ val = enumCheck(cast(int)Class2.Struct1.Enum12.Val5k, 4121);
+ val = enumCheck(cast(int)Class2.Struct1.Enum12.Val6k, val);
+
+ val = 0;
+ val = enumCheck(cast(int)Class2.Struct1.Enum13.Val1, 4131);
+ val = enumCheck(cast(int)Class2.Struct1.Enum13.Val2, 4132);
+ val = enumCheck(cast(int)Class2.Struct1.Enum13.Val3, val);
+ val = enumCheck(cast(int)Class2.Struct1.Enum13.Val4, val);
+ val = enumCheck(cast(int)Class2.Struct1.Enum13.Val5l, 4131);
+ val = enumCheck(cast(int)Class2.Struct1.Enum13.Val6l, val);
+
+ val = 0;
+ val = enumCheck(cast(int)Class2.Struct1.Enum14.Val1, 4141);
+ val = enumCheck(cast(int)Class2.Struct1.Enum14.Val2, 4142);
+ val = enumCheck(cast(int)Class2.Struct1.Enum14.Val3, val);
+ val = enumCheck(cast(int)Class2.Struct1.Enum14.Val4, val);
+ val = enumCheck(cast(int)Class2.Struct1.Enum14.Val5m, 4141);
+ val = enumCheck(cast(int)Class2.Struct1.Enum14.Val6m, val);
+ */
+
+ Class1 class1 = new Class1();
+ enumCheck(cast(int)class1.class1Test1(Enum1.Val5a), 13);
+ enumCheck(cast(int)class1.class1Test2(Class1.Enum12.Val5c), 1121);
+ /* Nested struct not supported for D
+ enumCheck(cast(int)class1.class1Test3(Class1.Struct1.Enum12.Val5f), 3121);
+ */
+
+ enumCheck(cast(int)globalTest1(Enum1.Val5a), 13);
+ enumCheck(cast(int)globalTest2(Class1.Enum12.Val5c), 1121);
+ /* Nested struct not supported for D
+ enumCheck(cast(int)globalTest3(Class1.Struct1.Enum12.Val5f), 3121);
+ */
+
+ // Check underlying enum type
+ assert(is(typeof(Enum2.Val1.asOriginalType) == short));
+ assert(is(typeof(Enum4.Val1.asOriginalType) == uint));
+ assert(is(typeof(Enum5.Val1.asOriginalType) == int));
+ assert(is(typeof(Enum9.Val1.asOriginalType) == ushort));
+ assert(is(typeof(Enum7td.Val1.asOriginalType) == uint));
+ assert(is(typeof(Enum10.Val1.asOriginalType) == ubyte));
+
+ assert(is(typeof(Enum15.Val1.asOriginalType) == short));
+ assert(is(typeof(Enum16.Val1.asOriginalType) == long));
+ assert(is(typeof(Enum17.Val1.asOriginalType) == uint));
+}