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

Side by Side Diff: samples/third_party/pop-pop-win/test/ppw/test_game.dart

Issue 200723008: samples/poppopwin: upgrade to first-class sample (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: fixed pkgbuild.status for rename Created 6 years, 9 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 part of ppw_test;
2
3 class TestGame {
4 static void run() {
5 group('Game', () {
6 test('initial values', _testInitial);
7 test('setFlag', _testSetFlag);
8 test('cannot reveal flagged', _testCannotRevealFlagged);
9 test('cannot flag revealed', _testCannotFlagRevealed);
10 test('reveal zero', _testRevealZero);
11 test('loss', _testLoss);
12 test('win', _testWin);
13 test('random winner', _testRandomField);
14 test('good chord', _testGoodChord);
15 test('bad chord', _testBadChord);
16 test('no-op chord', _testNoopChord);
17 test('canReveal', _testCanReveal);
18 test('canFlag', _testCanFlag);
19 test('cannot re-reveal', _testCannotReReveal);
20 });
21 }
22
23 static void _testCannotReReveal() {
24 final f = TestField.getSampleField();
25 final g = new Game(f);
26
27 expect(g.canReveal(5, 3), isTrue);
28 var r = g.reveal(5, 3);
29
30 g.setFlag(4, 2, true);
31
32 expect(g.canReveal(5, 3), isTrue);
33 r = g.reveal(5, 3);
34
35 expect(g.canReveal(5, 3), isFalse);
36 }
37
38 static void _testCanFlag() {
39 final f = TestField.getSampleField();
40 final g = new Game(f);
41
42 expect(g.canToggleFlag(0, 0), isTrue);
43 expect(g.state, GameState.reset);
44 g.setFlag(0, 0, true);
45 expect(g.state, GameState.started);
46 expect(g.canToggleFlag(0, 0), isTrue);
47 g.setFlag(0, 0, false);
48 expect(g.canToggleFlag(0, 0), isTrue);
49
50 expect(g.canToggleFlag(5, 4), isTrue);
51 g.reveal(5, 4);
52 expect(g.canToggleFlag(5, 4), isFalse);
53 }
54
55 static void _testCanReveal() {
56 final f = TestField.getSampleField();
57 final g = new Game(f);
58
59 expect(g.canReveal(0, 0), isTrue);
60 expect(g.state, GameState.reset);
61 g.setFlag(0, 0, true);
62 expect(g.state, GameState.started);
63 expect(g.canReveal(0, 0), isFalse);
64
65 expect(g.canReveal(5, 4), isTrue);
66 g.reveal(5, 4);
67 expect(g.canReveal(5, 4), isFalse);
68
69 g.setFlag(4, 2, true);
70 expect(g.canReveal(5, 3), isTrue);
71 expect(g.canReveal(4, 3), isFalse);
72 g.setFlag(3, 2, true);
73 expect(g.canReveal(4, 3), isTrue);
74
75 // now we'll over flag
76 expect(g.canReveal(5, 3), isTrue);
77 g.setFlag(5, 2, true);
78 expect(g.canReveal(5, 3), isFalse);
79 }
80
81 static void _testBadChord() {
82 final f = TestField.getSampleField();
83 final g = new Game(f);
84
85 expect(g.bombsLeft, equals(13));
86 final startReveals = f.length - 13;
87 expect(g.revealsLeft, equals(startReveals));
88 expect(g.state, equals(GameState.reset));
89
90 g.reveal(2, 3);
91 g.setFlag(1, 2, true);
92 g.setFlag(3, 2, true);
93
94 expect(g.bombsLeft, equals(11));
95 expect(g.revealsLeft, equals(startReveals - 1));
96
97 var revealed = g.reveal(2, 3);
98 expect(revealed, isNull);
99 expect(g.state, equals(GameState.lost));
100 }
101
102 // Adjacent flag count != square count
103 // so nothing happens
104 static void _testNoopChord() {
105 final f = TestField.getSampleField();
106 final g = new Game(f);
107
108 expect(g.bombsLeft, equals(13));
109 final startReveals = f.length - 13;
110 expect(g.revealsLeft, equals(startReveals));
111 expect(g.state, equals(GameState.reset));
112
113 var revealed = g.reveal(2, 3);
114 expect(revealed, unorderedEquals([const Coordinate(2, 3)]));
115
116 g.setFlag(2, 2, true);
117
118 expect(g.bombsLeft, equals(12));
119 expect(g.revealsLeft, equals(startReveals - 1));
120
121 expect(() => g.reveal(2, 3), throwsException);
122 }
123
124 static void _testGoodChord() {
125 final f = TestField.getSampleField();
126 final g = new Game(f);
127
128 expect(g.bombsLeft, equals(13));
129 final startReveals = f.length - 13;
130 expect(g.revealsLeft, equals(startReveals));
131 expect(g.state, equals(GameState.reset));
132
133 g.reveal(2, 3);
134 g.setFlag(2, 2, true);
135 g.setFlag(3, 2, true);
136
137 expect(g.bombsLeft, equals(11));
138 expect(g.revealsLeft, equals(startReveals - 1));
139
140 g.reveal(2, 3);
141 expect(g.bombsLeft, equals(11));
142 expect(g.revealsLeft, equals(startReveals - 11));
143 expect(g.duration, isNot(isNull));
144 }
145
146 // Test 5 random fields five times
147 static void _testRandomField() {
148 final rnd = new Random();
149 for(int i = 0; i < 5; i++) {
150 final f = new Field();
151
152 for(int j = 0; j < 5; j++) {
153 final g = new Game(f);
154 while(g.revealsLeft > 0) {
155 final x = rnd.nextInt(f.width);
156 final y = rnd.nextInt(f.height);
157 if(g.getSquareState(x, y) == SquareState.hidden) {
158 if(f.get(x, y)) {
159 g.setFlag(x, y, true);
160 } else if(!f.get(x, y)) {
161 g.reveal(x, y);
162 }
163 }
164 }
165 expect(g.state == GameState.won, isTrue);
166 }
167 }
168 }
169
170 static void _testRevealZero() {
171 final f = TestField.getSampleField();
172 final g = new Game(f);
173
174 expect(g.bombsLeft, equals(13));
175 final startReveals = f.length - 13;
176 expect(g.revealsLeft, equals(startReveals));
177 expect(g.state, equals(GameState.reset));
178
179 g.reveal(5, 4);
180 expect(g.revealsLeft, equals(startReveals - 10));
181 }
182
183 static void _testInitial() {
184 final f = TestField.getSampleField();
185 final g = new Game(f);
186
187 expect(g.bombsLeft, equals(13));
188 expect(g.revealsLeft, equals(f.length - 13));
189 expect(g.state, equals(GameState.reset));
190 expect(g.duration, isNull);
191
192 for(int x = 0; x < f.width; x++) {
193 for(int y = 0; y < f.height; y++) {
194 expect(g.getSquareState(x,y), equals(SquareState.hidden));
195 }
196 }
197 }
198
199 static void _testSetFlag() {
200 final g = new Game(TestField.getSampleField());
201
202 expect(g.getSquareState(0,0), equals(SquareState.hidden));
203 g.setFlag(0, 0, true);
204 expect(g.getSquareState(0,0), equals(SquareState.flagged));
205 expect(g.bombsLeft, equals(12));
206 expect(g.state, equals(GameState.started));
207 }
208
209 static void _testCannotRevealFlagged() {
210 final g = new Game(TestField.getSampleField());
211
212 expect(g.getSquareState(0,0), equals(SquareState.hidden));
213 g.setFlag(0, 0, true);
214 expect(g.getSquareState(0,0), equals(SquareState.flagged));
215 expect(g.bombsLeft, equals(12));
216 expect(g.state, equals(GameState.started));
217
218 expect(() => g.reveal(0,0), throwsException);
219 }
220
221 static void _testCannotFlagRevealed() {
222 final g = new Game(TestField.getSampleField());
223
224 expect(g.getSquareState(1,1), equals(SquareState.hidden));
225 g.reveal(1, 1);
226 expect(g.getSquareState(1,1), equals(SquareState.revealed));
227 expect(g.state, equals(GameState.started));
228
229 expect(() => g.setFlag(1,1,true), throwsException);
230 }
231
232 static void _testLoss() {
233 final g = new Game(TestField.getSampleField());
234
235 expect(g.getSquareState(0,0), equals(SquareState.hidden));
236 var revealed = g.reveal(0, 0);
237 expect(revealed, isNull);
238 expect(g.state, equals(GameState.lost));
239 expect(g.getSquareState(0,0), equals(SquareState.bomb));
240 }
241
242 static void _testWin() {
243 final f = TestField.getSampleField();
244 final g = new Game(f);
245
246 int bombsLleft = f.bombCount;
247 expect(g.revealsLeft, equals(f.length - 13));
248 int revealsLeft = g.revealsLeft;
249 for(int x = 0; x < f.width; x++) {
250 for(int y = 0; y < f.height; y++) {
251 if(f.get(x,y)) {
252 g.setFlag(x, y, true);
253 bombsLleft--;
254 expect(g.bombsLeft, equals(bombsLleft));
255 } else if(g.getSquareState(x, y) == SquareState.hidden) {
256 revealsLeft -= g.reveal(x, y).length;
257 expect(revealsLeft, equals(g.revealsLeft));
258 } else {
259 expect(g.getSquareState(x,y), equals(SquareState.revealed));
260 }
261 expect(g.state, isNot(equals(GameState.reset)));
262 expect(g.state, isNot(equals(GameState.lost)));
263 }
264 }
265
266 expect(g.state, equals(GameState.won));
267 }
268 }
OLDNEW
« no previous file with comments | « samples/third_party/pop-pop-win/test/ppw/test_field.dart ('k') | samples/third_party/pop-pop-win/tool/hop_runner.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698