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

Side by Side Diff: samples/pop_pop_win/test/game_test.dart

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

Powered by Google App Engine
This is Rietveld 408576698