1const expectEqual = @import("std").testing.expectEqual;
2
3test "while null capture" {
4 var sum1: u32 = 0;
5 numbers_left = 3;
6 while (eventuallyNullSequence()) |value| {
7 sum1 += value;
8 }
9 try expectEqual(3, sum1);
10
11 // null capture with an else block
12 var sum2: u32 = 0;
13 numbers_left = 3;
14 while (eventuallyNullSequence()) |value| {
15 sum2 += value;
16 } else {
17 try expectEqual(3, sum2);
18 }
19
20 // null capture with a continue expression
21 var i: u32 = 0;
22 var sum3: u32 = 0;
23 numbers_left = 3;
24 while (eventuallyNullSequence()) |value| : (i += 1) {
25 sum3 += value;
26 }
27 try expectEqual(3, i);
28}
29
30var numbers_left: u32 = undefined;
31fn eventuallyNullSequence() ?u32 {
32 return if (numbers_left == 0) null else blk: {
33 numbers_left -= 1;
34 break :blk numbers_left;
35 };
36}
37
38// test