test_while_null_capture.zig (854B) - Raw
1 const expect = @import("std").testing.expect; 2 3 test "while null capture" { 4 var sum1: u32 = 0; 5 numbers_left = 3; 6 while (eventuallyNullSequence()) |value| { 7 sum1 += value; 8 } 9 try expect(sum1 == 3); 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 expect(sum2 == 3); 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 expect(i == 3); 28 } 29 30 var numbers_left: u32 = undefined; 31 fn 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