zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

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:
Mtest/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); +}