]> Cypherpunks.ru repositories - gostls13.git/blob - test/switch.go
fix "declared and not used" in tests;
[gostls13.git] / test / switch.go
1 // $G $F.go && $L $F.$A && ./$A.out
2
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
7 package main
8
9 func assert(cond bool, msg string) {
10         if !cond {
11                 print("assertion fail: ", msg, "\n");
12                 panic(1);
13         }
14 }
15
16 func main() {
17         i5 := 5;
18         i7 := 7;
19         hello := "hello";
20
21         switch true {
22         case i5 < 5: assert(false, "<");
23         case i5 == 5: assert(true, "!");
24         case i5 > 5: assert(false, ">");
25         }
26
27         switch {
28         case i5 < 5: assert(false, "<");
29         case i5 == 5: assert(true, "!");
30         case i5 > 5: assert(false, ">");
31         }
32
33         switch x := 5; true {
34         case i5 < x: assert(false, "<");
35         case i5 == x: assert(true, "!");
36         case i5 > x: assert(false, ">");
37         }
38
39         switch x := 5; true {
40         case i5 < x: assert(false, "<");
41         case i5 == x: assert(true, "!");
42         case i5 > x: assert(false, ">");
43         }
44
45         switch i5 {
46         case 0: assert(false, "0");
47         case 1: assert(false, "1");
48         case 2: assert(false, "2");
49         case 3: assert(false, "3");
50         case 4: assert(false, "4");
51         case 5: assert(true, "5");
52         case 6: assert(false, "6");
53         case 7: assert(false, "7");
54         case 8: assert(false, "8");
55         case 9: assert(false, "9");
56         default: assert(false, "default");
57         }
58
59         switch i5 {
60         case 0,1,2,3,4: assert(false, "4");
61         case 5: assert(true, "5");
62         case 6,7,8,9: assert(false, "9");
63         default: assert(false, "default");
64         }
65
66         switch i5 {
67         case 0:
68         case 1:
69         case 2:
70         case 3:
71         case 4: assert(false, "4");
72         case 5: assert(true, "5");
73         case 6:
74         case 7:
75         case 8:
76         case 9:
77         default: assert(i5 == 5, "good");
78         }
79
80         switch i5 {
81         case 0: dummy := 0; _ = dummy; fallthrough;
82         case 1: dummy := 0; _ = dummy; fallthrough;
83         case 2: dummy := 0; _ = dummy; fallthrough;
84         case 3: dummy := 0; _ = dummy; fallthrough;
85         case 4: dummy := 0; _ = dummy; assert(false, "4");
86         case 5: dummy := 0; _ = dummy; fallthrough;
87         case 6: dummy := 0; _ = dummy; fallthrough;
88         case 7: dummy := 0; _ = dummy; fallthrough;
89         case 8: dummy := 0; _ = dummy; fallthrough;
90         case 9: dummy := 0; _ = dummy; fallthrough;
91         default: dummy := 0; _ = dummy; assert(i5 == 5, "good");
92         }
93
94         fired := false;
95         switch i5 {
96         case 0: dummy := 0; _ = dummy; fallthrough;  // tests scoping of cases
97         case 1: dummy := 0; _ = dummy; fallthrough;
98         case 2: dummy := 0; _ = dummy; fallthrough;
99         case 3: dummy := 0; _ = dummy; fallthrough;
100         case 4: dummy := 0; _ = dummy; assert(false, "4");
101         case 5: dummy := 0; _ = dummy; fallthrough;
102         case 6: dummy := 0; _ = dummy; fallthrough;
103         case 7: dummy := 0; _ = dummy; fallthrough;
104         case 8: dummy := 0; _ = dummy; fallthrough;
105         case 9: dummy := 0; _ = dummy; fallthrough;
106         default: dummy := 0; _ = dummy; fired = !fired; assert(i5 == 5, "good");
107         }
108         assert(fired, "fired");
109
110         count := 0;
111         switch i5 {
112         case 0: count = count + 1; fallthrough;
113         case 1: count = count + 1; fallthrough;
114         case 2: count = count + 1; fallthrough;
115         case 3: count = count + 1; fallthrough;
116         case 4: count = count + 1; assert(false, "4");
117         case 5: count = count + 1; fallthrough;
118         case 6: count = count + 1; fallthrough;
119         case 7: count = count + 1; fallthrough;
120         case 8: count = count + 1; fallthrough;
121         case 9: count = count + 1; fallthrough;
122         default: assert(i5 == count, "good");
123         }
124         assert(fired, "fired");
125
126         switch hello {
127         case "wowie": assert(false, "wowie");
128         case "hello": assert(true, "hello");
129         case "jumpn": assert(false, "jumpn");
130         default: assert(false, "default");
131         }
132
133         fired = false;
134         switch i := i5 + 2; i {
135         case i7: fired = true;
136         default: assert(false, "fail");
137         }
138         assert(fired, "var");
139 }