const expect = @import("std").testing.expect; test "while basic" { var i: usize = 0; while (i < 10) i += 1; expect(i == 10); } test "while break" { var i: usize = 0; while (true) { if (i == 10) break; i += 1; } expect(i == 10); } test "while continue" { var i: usize = 0; while (true) { i += 1; if (i < 10) continue; break; } expect(i == 10); } test "while loop continue expression" { var i: usize = 0; while (i < 10) : (i += 1) {} expect(i == 10); } test "while loop continue expression, more complicated" { var i: usize = 1; var j: usize = 1; while (i * j < 2000) : ({ i *= 2; j *= 3; }) expect(i * j < 2000); } test "while else" { expect(rangeHasNumber(0, 10, 5)); expect(!rangeHasNumber(0, 10, 15)); } fn rangeHasNumber(begin: usize, end: usize, number: usize) bool { var i = begin; return while (i < end) : (i += 1) { if (i == number) { break true; } } else false; } test "nested break" { outer: while (true) { while (true) { break :outer; } } } test "nested continue" { var i: usize = 0; outer: while (i < 10) : (i += 1) { while (true) { continue :outer; } } }