-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtest_if.zig
119 lines (101 loc) · 2.11 KB
/
test_if.zig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
const expect = @import("std").testing.expect;
test "if expression" {
const a: u32 = 5;
const b: u32 = 4;
const result = if (a != b) 47 else 3089;
try expect(result == 47);
}
test "if boolen" {
const a: u32 = 5;
const b: u32 = 4;
if (a != b) {
try expect(true);
} else if (a == 9) {
unreachable;
} else {
unreachable;
}
}
test "if optional" {
const a: ?u32 = 0;
if (a) |value| {
try expect(value == 0);
} else {
unreachable;
}
const b: ?u32 = null;
if (b) |_| {
unreachable;
} else {
try expect(true);
}
if (a) |value| {
try expect(value == 0);
}
if (b == null) {
try expect(true);
}
var c: ?u32 = 3;
if (c) |*value| {
value.* = 2;
}
if (c) |value| {
try expect(value == 2);
} else {
unreachable;
}
}
test "if error union" {
const a: anyerror!u32 = 0;
if (a) |value| {
try expect(value == 0);
} else |err| {
_ = err;
unreachable;
}
const b: anyerror!u32 = error.BadValue;
if (b) |value| {
_ = value;
unreachable;
} else |err| {
try expect(err == error.BadValue);
}
if (a) |value| {
try expect(value == 0);
} else |_| {}
if (b) |_| {} else |err| {
try expect(err == error.BadValue);
}
var c: anyerror!u32 = 3;
if (c) |*value| {
value.* = 9;
} else |_| {
unreachable;
}
if (c) |value| {
try expect(value == 9);
} else |_| {
unreachable;
}
}
test "if error union with optional" {
const a: anyerror!?u32 = 0;
if (a) |opaque_value| {
try expect(opaque_value.? == 0);
} else |_| {
unreachable;
}
const b: anyerror!?u32 = null;
if (b) |opaque_value| {
try expect(opaque_value.? == null);
} else |_| {
unreachable;
}
const c: anyerror!?u32 = error.BadValue;
if (c) |opaque_value| {
_ = opaque_value;
unreachable;
} else |err| {
try expect(err == error.BadValue);
}
}