Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(16)

Side by Side Diff: tests/language/src/StatementTest.dart

Issue 10248007: test rename overhaul: step 8 - language tests (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 // Tests all statement types. Not an exhaustive test of all statement semantics.
6 class StatementTest {
7
8 StatementTest() {}
9
10 static testMain() {
11 var test = new StatementTest();
12 test.testIfStatement();
13 test.testForLoop();
14 test.testWhileLoops();
15 test.testSwitch();
16 test.testExceptions();
17 test.testBreak();
18 test.testContinue();
19 test.testFunction();
20 test.testReturn();
21 }
22
23 testIfStatement() {
24 // Basic if statements.
25 if (true) {
26 Expect.equals(true, true);
27 } else {
28 Expect.equals(false, true);
29 }
30
31 if (false) {
32 Expect.equals(false, true);
33 } else {
34 Expect.equals(true, true);
35 }
36 }
37
38 testForLoop() {
39 int count = 0, count2;
40
41 // Basic for loop.
42 for (int i = 0; i < 10; ++i) {
43 ++count;
44 }
45 Expect.equals(10, count);
46
47 // For loop with no 'var'.
48 count2 = 0;
49 for (count = 0; count < 5; ++count) {
50 ++count2;
51 }
52 Expect.equals(5, count);
53 Expect.equals(5, count2);
54
55 // For loop with no initializer.
56 count = count2 = 0;
57 for (; count < 10; ++count) {
58 ++count2;
59 }
60 Expect.equals(10, count);
61 Expect.equals(10, count2);
62
63 // For loop with no increment.
64 for (count = 0; count < 5; ) {
65 ++count;
66 }
67 Expect.equals(5, count);
68
69 // For loop with no test.
70 for (count = 0; ; ++count) {
71 if (count == 10) {
72 break;
73 }
74 }
75 Expect.equals(10, count);
76
77 // For loop with no nothing.
78 count = 0;
79 for (;;) {
80 if (count == 5) {
81 break;
82 }
83 ++count;
84 }
85 Expect.equals(5, count);
86 }
87
88 testWhileLoops() {
89 // Basic while loop.
90 int count = 0;
91 while (count < 10) {
92 ++count;
93 }
94 Expect.equals(10, count);
95
96 // Basic do loop.
97 count = 0;
98 do {
99 ++count;
100 } while (count < 5);
101 Expect.equals(5, count);
102 }
103
104 testSwitch() {
105 // Int switch.
106 bool hit0, hit1, hitDefault;
107 for (int x = 0; x < 3; ++x) {
108 switch (x) {
109 case 0: hit0 = true; break;
110 case 1: hit1 = true; break;
111 default: hitDefault = true; break;
112 }
113 }
114 Expect.equals(true, hit0);
115 Expect.equals(true, hit1);
116 Expect.equals(true, hitDefault);
117
118 // String switch.
119 var strings = ['a', 'b', 'c'];
120 bool hitA, hitB;
121 hitDefault = false;
122 for (int x = 0; x < 3; ++x) {
123 switch (strings[x]) {
124 case 'a': hitA = true; break;
125 case 'b': hitB = true; break;
126 default: hitDefault = true; break;
127 }
128 }
129 Expect.equals(true, hitA);
130 Expect.equals(true, hitB);
131 Expect.equals(true, hitDefault);
132 }
133
134 testExceptions() {
135 // TODO(jgw): Better tests once all the exception semantics are worked out.
136 bool hitCatch, hitFinally;
137 try {
138 throw "foo";
139 } catch (var e) {
140 Expect.equals(true, e == "foo");
141 hitCatch = true;
142 } finally {
143 hitFinally = true;
144 }
145
146 Expect.equals(true, hitCatch);
147 Expect.equals(true, hitFinally);
148 }
149
150 testBreak() {
151 var ints = [
152 [ 32, 87, 3, 589 ],
153 [ 12, 1076, 2000, 8 ],
154 [ 622, 127, 77, 955 ]
155 ];
156 int i, j = 0;
157 bool foundIt = false;
158
159 search:
160 for (i = 0; i < ints.length; i++) {
161 for (j = 0; j < ints[i].length; j++) {
162 if (ints[i][j] == 12) {
163 foundIt = true;
164 break search;
165 }
166 }
167 }
168 Expect.equals(true, foundIt);
169 }
170
171 testContinue() {
172 String searchMe = "Look for a substring in me";
173 String substring = "sub";
174 bool foundIt = false;
175 int max = searchMe.length - substring.length;
176
177 test:
178 for (int i = 0; i <= max; i++) {
179 int n = substring.length;
180 int j = i;
181 int k = 0;
182 while (n-- != 0) {
183 if (searchMe[j++] != substring[k++]) {
184 continue test;
185 }
186 }
187 foundIt = true;
188 break test;
189 }
190 }
191
192 testFunction() {
193 int foo() {
194 return 42;
195 }
196 Expect.equals(42, foo());
197 }
198
199 void testReturn() {
200 if (true) {
201 return;
202 }
203 Expect.equals(true, false);
204 }
205 }
206
207 main() {
208 StatementTest.testMain();
209 }
OLDNEW
« no previous file with comments | « tests/language/src/StackTraceTest.dart ('k') | tests/language/src/StaticCallWrongArgumentCountNegativeTest.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698