blob: 8a50090657fb51d36f78f499b2f49700b680d760 [file] [log] [blame]
Russ Coxd2cc9882012-02-16 23:50:37 -05001// run
Rob Pike126150d2008-06-06 13:28:03 -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 Pike83976e32012-02-19 14:28:53 +11007// Test for loops.
8
Rob Pike126150d2008-06-06 13:28:03 -07009package main
10
11func assertequal(is, shouldbe int, msg string) {
12 if is != shouldbe {
Rob Pike4f61fc92010-09-04 10:36:13 +100013 print("assertion fail", msg, "\n")
14 panic(1)
Rob Pike126150d2008-06-06 13:28:03 -070015 }
16}
17
18func main() {
Rob Pike4f61fc92010-09-04 10:36:13 +100019 var i, sum int
Rob Pike126150d2008-06-06 13:28:03 -070020
Rob Pike4f61fc92010-09-04 10:36:13 +100021 i = 0
Rob Pike126150d2008-06-06 13:28:03 -070022 for {
Rob Pike4f61fc92010-09-04 10:36:13 +100023 i = i + 1
Rob Pike126150d2008-06-06 13:28:03 -070024 if i > 5 {
Rob Pike4f61fc92010-09-04 10:36:13 +100025 break
Rob Pike126150d2008-06-06 13:28:03 -070026 }
27 }
Rob Pike4f61fc92010-09-04 10:36:13 +100028 assertequal(i, 6, "break")
Rob Pike126150d2008-06-06 13:28:03 -070029
Rob Pike4f61fc92010-09-04 10:36:13 +100030 sum = 0
Rob Pike126150d2008-06-06 13:28:03 -070031 for i := 0; i <= 10; i++ {
Rob Pike4f61fc92010-09-04 10:36:13 +100032 sum = sum + i
Rob Pike126150d2008-06-06 13:28:03 -070033 }
Rob Pike4f61fc92010-09-04 10:36:13 +100034 assertequal(sum, 55, "all three")
Rob Pike126150d2008-06-06 13:28:03 -070035
Rob Pike4f61fc92010-09-04 10:36:13 +100036 sum = 0
Rob Pike126150d2008-06-06 13:28:03 -070037 for i := 0; i <= 10; {
Rob Pike4f61fc92010-09-04 10:36:13 +100038 sum = sum + i
39 i++
Rob Pike126150d2008-06-06 13:28:03 -070040 }
Rob Pike4f61fc92010-09-04 10:36:13 +100041 assertequal(sum, 55, "only two")
Rob Pike126150d2008-06-06 13:28:03 -070042
Rob Pike4f61fc92010-09-04 10:36:13 +100043 sum = 0
Rob Pike126150d2008-06-06 13:28:03 -070044 for sum < 100 {
Rob Pike4f61fc92010-09-04 10:36:13 +100045 sum = sum + 9
Rob Pike126150d2008-06-06 13:28:03 -070046 }
Rob Pike4f61fc92010-09-04 10:36:13 +100047 assertequal(sum, 99 + 9, "only one")
Rob Pike126150d2008-06-06 13:28:03 -070048
Rob Pike4f61fc92010-09-04 10:36:13 +100049 sum = 0
Rob Pike126150d2008-06-06 13:28:03 -070050 for i := 0; i <= 10; i++ {
51 if i % 2 == 0 {
Rob Pike4f61fc92010-09-04 10:36:13 +100052 continue
Rob Pike126150d2008-06-06 13:28:03 -070053 }
Rob Pike4f61fc92010-09-04 10:36:13 +100054 sum = sum + i
Rob Pike126150d2008-06-06 13:28:03 -070055 }
Rob Pike4f61fc92010-09-04 10:36:13 +100056 assertequal(sum, 1+3+5+7+9, "continue")
Rob Pike126150d2008-06-06 13:28:03 -070057
58}