blob: c6a420b39d7125b07c71dd9c8ab9255ef69059a7 [file] [log] [blame]
Russ Coxd2cc9882012-02-16 23:50:37 -05001// run
Rob Pikeab34d152008-06-06 14:27:34 -07002
3// Copyright 2009 The Go Authors. All rights reserved.
4// Use of this source code is governed by a BSD-style
5// license that can be found in the LICENSE file.
6
Rob Pikeeb37b5b2012-02-24 16:24:24 +11007// Test for loops of many forms.
8
Rob Pikeab34d152008-06-06 14:27:34 -07009package main
10
11func assertequal(is, shouldbe int, msg string) {
12 if is != shouldbe {
Rob Pikebc2f5f12008-08-11 22:07:49 -070013 print("assertion fail" + msg + "\n");
14 panic(1);
Rob Pikeab34d152008-06-06 14:27:34 -070015 }
16}
17
18func main() {
19 var i, sum int;
20
21 i = 0;
22 for {
23 i = i + 1;
24 if i > 5 {
25 break;
26 }
27 }
28 assertequal(i, 6, "break");
29
30 sum = 0;
31 for i := 0; i <= 10; i++ {
32 sum = sum + i;
33 }
34 assertequal(sum, 55, "all three");
35
36 sum = 0;
37 for i := 0; i <= 10; {
38 sum = sum + i;
39 i++;
40 }
41 assertequal(sum, 55, "only two");
42
43 sum = 0;
44 for sum < 100 {
45 sum = sum + 9;
46 }
47 assertequal(sum, 99 + 9, "only one");
48
49 sum = 0;
50 for i := 0; i <= 10; i++ {
51 if i % 2 == 0 {
52 continue;
53 }
54 sum = sum + i;
55 }
56 assertequal(sum, 1+3+5+7+9, "continue");
57
58}