commit 76f3bdfff8224144e7b57748eb8eda2001d0308d (tree) parent dd3437d5ba30c2101719fa38a95914fae5d965dd Author: Andrew Kelley <superjoe30@gmail.com> Date: Mon, 4 Dec 2017 02:12:13 -0500 add test for casting union to tag type of union Diffstat:
| M | test/cases/union.zig | | | 17 | +++++++++++++++++ |
1 file changed, 17 insertions(+), 0 deletions(-)
diff --git a/test/cases/union.zig b/test/cases/union.zig @@ -173,3 +173,20 @@ const ZeroBits = union { test "union with only 1 field which is void should be zero bits" { comptime assert(@sizeOf(ZeroBits) == 0); } + +const TheTag = enum {A, B, C}; +const TheUnion = union(TheTag) { A: i32, B: i32, C: i32 }; +test "union field access gives the enum values" { + assert(TheUnion.A == TheTag.A); + assert(TheUnion.B == TheTag.B); + assert(TheUnion.C == TheTag.C); +} + +test "cast union to tag type of union" { + testCastUnionToTagType(TheUnion {.B = 1234}); + comptime testCastUnionToTagType(TheUnion {.B = 1234}); +} + +fn testCastUnionToTagType(x: &const TheUnion) { + assert(TheTag(*x) == TheTag.B); +}