aboutsummaryrefslogtreecommitdiff
path: root/test/behavior/enum.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-10-05 21:07:17 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-10-05 21:07:36 -0700
commit941b2f0d5e50521c41e6db3912085a72b6c16813 (patch)
treefc02e0cf50fb78d42b2aa248c617565985adcb21 /test/behavior/enum.zig
parent9ed599b4e3f5c9f48089a3acd61d0338e27e88f6 (diff)
downloadzig-941b2f0d5e50521c41e6db3912085a72b6c16813.tar.gz
zig-941b2f0d5e50521c41e6db3912085a72b6c16813.zip
move tagged union behavior tests to the appropriate place
tagged unions used to be called "enums" but now they are called "tagged unions".
Diffstat (limited to 'test/behavior/enum.zig')
-rw-r--r--test/behavior/enum.zig138
1 files changed, 6 insertions, 132 deletions
diff --git a/test/behavior/enum.zig b/test/behavior/enum.zig
index 1324fa0e4a..bd47481b5f 100644
--- a/test/behavior/enum.zig
+++ b/test/behavior/enum.zig
@@ -3,68 +3,20 @@ const expect = std.testing.expect;
const mem = std.mem;
const Tag = std.meta.Tag;
-const Point = struct {
- x: u64,
- y: u64,
-};
-const Foo = union(enum) {
- One: i32,
- Two: Point,
- Three: void,
-};
-const FooNoVoid = union(enum) {
- One: i32,
- Two: Point,
-};
-const Bar = enum {
- A,
- B,
- C,
- D,
-};
-
-fn returnAnInt(x: i32) Foo {
- return Foo{ .One = x };
-}
-
-fn shouldBeEmpty(x: AnEnumWithPayload) void {
- switch (x) {
- AnEnumWithPayload.Empty => {},
- else => unreachable,
- }
-}
-
-fn shouldBeNotEmpty(x: AnEnumWithPayload) void {
- switch (x) {
- AnEnumWithPayload.Empty => unreachable,
- else => {},
- }
-}
-
-const AnEnumWithPayload = union(enum) {
- Empty: void,
- Full: i32,
-};
-
const Number = enum { Zero, One, Two, Three, Four };
fn shouldEqual(n: Number, expected: u3) !void {
try expect(@enumToInt(n) == expected);
}
-fn testEnumTagNameBare(n: anytype) []const u8 {
- return @tagName(n);
+test "enum to int" {
+ try shouldEqual(Number.Zero, 0);
+ try shouldEqual(Number.One, 1);
+ try shouldEqual(Number.Two, 2);
+ try shouldEqual(Number.Three, 3);
+ try shouldEqual(Number.Four, 4);
}
-const BareNumber = enum { One, Two, Three };
-
-const NonExhaustive = enum(u8) { A, B, _ };
-
-const AlignTestEnum = union(enum) {
- A: [9]u8,
- B: u64,
-};
-
const ValueCount1 = enum {
I0,
};
@@ -590,84 +542,6 @@ const ValueCount257 = enum {
I256,
};
-const Small2 = enum(u2) { One, Two };
-const Small = enum(u2) { One, Two, Three, Four };
-
-const A = enum(u3) { One, Two, Three, Four, One2, Two2, Three2, Four2 };
-const B = enum(u3) { One3, Two3, Three3, Four3, One23, Two23, Three23, Four23 };
-const C = enum(u2) { One4, Two4, Three4, Four4 };
-
-const BitFieldOfEnums = packed struct {
- a: A,
- b: B,
- c: C,
-};
-
-const bit_field_1 = BitFieldOfEnums{
- .a = A.Two,
- .b = B.Three3,
- .c = C.Four4,
-};
-
-fn getA(data: *const BitFieldOfEnums) A {
- return data.a;
-}
-
-fn getB(data: *const BitFieldOfEnums) B {
- return data.b;
-}
-
-fn getC(data: *const BitFieldOfEnums) C {
- return data.c;
-}
-
-const MultipleChoice = enum(u32) {
- A = 20,
- B = 40,
- C = 60,
- D = 1000,
-};
-
-const MultipleChoice2 = enum(u32) {
- Unspecified1,
- A = 20,
- Unspecified2,
- B = 40,
- Unspecified3,
- C = 60,
- Unspecified4,
- D = 1000,
- Unspecified5,
-};
-
-const EnumWithOneMember = enum { Eof };
-
-fn doALoopThing(id: EnumWithOneMember) void {
- while (true) {
- if (id == EnumWithOneMember.Eof) {
- break;
- }
- @compileError("above if condition should be comptime");
- }
-}
-
-const State = enum { Start };
-
-const EnumWithTagValues = enum(u4) {
- A = 1 << 0,
- B = 1 << 1,
- C = 1 << 2,
- D = 1 << 3,
-};
-
-test "enum to int" {
- try shouldEqual(Number.Zero, 0);
- try shouldEqual(Number.One, 1);
- try shouldEqual(Number.Two, 2);
- try shouldEqual(Number.Three, 3);
- try shouldEqual(Number.Four, 4);
-}
-
test "enum sizes" {
comptime {
try expect(@sizeOf(ValueCount1) == 0);