Index: samples/pop_pop_win/test/game_test.dart |
diff --git a/samples/pop_pop_win/test/game_test.dart b/samples/pop_pop_win/test/game_test.dart |
deleted file mode 100644 |
index 61d3b3aade5457be2c6c79a0856fc9b951d9d826..0000000000000000000000000000000000000000 |
--- a/samples/pop_pop_win/test/game_test.dart |
+++ /dev/null |
@@ -1,274 +0,0 @@ |
-// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
-library pop_pop_win.game_test; |
- |
-import 'dart:math'; |
- |
-import 'package:pop_pop_win/src/game.dart'; |
-import 'package:unittest/unittest.dart'; |
- |
-import 'test_util.dart'; |
- |
-void main() { |
- test('initial values', _testInitial); |
- test('setFlag', _testSetFlag); |
- test('cannot reveal flagged', _testCannotRevealFlagged); |
- test('cannot flag revealed', _testCannotFlagRevealed); |
- test('reveal zero', _testRevealZero); |
- test('loss', _testLoss); |
- test('win', _testWin); |
- test('random winner', _testRandomField); |
- test('good chord', _testGoodChord); |
- test('bad chord', _testBadChord); |
- test('no-op chord', _testNoopChord); |
- test('canReveal', _testCanReveal); |
- test('canFlag', _testCanFlag); |
- test('cannot re-reveal', _testCannotReReveal); |
-} |
- |
-void _testCannotReReveal() { |
- var f = getSampleField(); |
- var g = new Game(f); |
- |
- expect(g.canReveal(5, 3), isTrue); |
- var r = g.reveal(5, 3); |
- |
- g.setFlag(4, 2, true); |
- |
- expect(g.canReveal(5, 3), isTrue); |
- r = g.reveal(5, 3); |
- |
- expect(g.canReveal(5, 3), isFalse); |
-} |
- |
-void _testCanFlag() { |
- var f = getSampleField(); |
- var g = new Game(f); |
- |
- expect(g.canToggleFlag(0, 0), isTrue); |
- expect(g.state, GameState.reset); |
- g.setFlag(0, 0, true); |
- expect(g.state, GameState.started); |
- expect(g.canToggleFlag(0, 0), isTrue); |
- g.setFlag(0, 0, false); |
- expect(g.canToggleFlag(0, 0), isTrue); |
- |
- expect(g.canToggleFlag(5, 4), isTrue); |
- g.reveal(5, 4); |
- expect(g.canToggleFlag(5, 4), isFalse); |
-} |
- |
-void _testCanReveal() { |
- var f = getSampleField(); |
- var g = new Game(f); |
- |
- expect(g.canReveal(0, 0), isTrue); |
- expect(g.state, GameState.reset); |
- g.setFlag(0, 0, true); |
- expect(g.state, GameState.started); |
- expect(g.canReveal(0, 0), isFalse); |
- |
- expect(g.canReveal(5, 4), isTrue); |
- g.reveal(5, 4); |
- expect(g.canReveal(5, 4), isFalse); |
- |
- g.setFlag(4, 2, true); |
- expect(g.canReveal(5, 3), isTrue); |
- expect(g.canReveal(4, 3), isFalse); |
- g.setFlag(3, 2, true); |
- expect(g.canReveal(4, 3), isTrue); |
- |
- // now we'll over flag |
- expect(g.canReveal(5, 3), isTrue); |
- g.setFlag(5, 2, true); |
- expect(g.canReveal(5, 3), isFalse); |
-} |
- |
-void _testBadChord() { |
- var f = getSampleField(); |
- var g = new Game(f); |
- |
- expect(g.bombsLeft, equals(13)); |
- var startReveals = f.length - 13; |
- expect(g.revealsLeft, equals(startReveals)); |
- expect(g.state, equals(GameState.reset)); |
- |
- g.reveal(2, 3); |
- g.setFlag(1, 2, true); |
- g.setFlag(3, 2, true); |
- |
- expect(g.bombsLeft, equals(11)); |
- expect(g.revealsLeft, equals(startReveals - 1)); |
- |
- var revealed = g.reveal(2, 3); |
- expect(revealed, isNull); |
- expect(g.state, equals(GameState.lost)); |
-} |
- |
-// Adjacent flag count != square count |
-// so nothing happens |
-void _testNoopChord() { |
- var f = getSampleField(); |
- var g = new Game(f); |
- |
- expect(g.bombsLeft, equals(13)); |
- var startReveals = f.length - 13; |
- expect(g.revealsLeft, equals(startReveals)); |
- expect(g.state, equals(GameState.reset)); |
- |
- var revealed = g.reveal(2, 3); |
- expect(revealed, unorderedEquals([const Point(2, 3)])); |
- |
- g.setFlag(2, 2, true); |
- |
- expect(g.bombsLeft, equals(12)); |
- expect(g.revealsLeft, equals(startReveals - 1)); |
- |
- expect(() => g.reveal(2, 3), throwsException); |
-} |
- |
-void _testGoodChord() { |
- var f = getSampleField(); |
- var g = new Game(f); |
- |
- expect(g.bombsLeft, equals(13)); |
- var startReveals = f.length - 13; |
- expect(g.revealsLeft, equals(startReveals)); |
- expect(g.state, equals(GameState.reset)); |
- |
- g.reveal(2, 3); |
- g.setFlag(2, 2, true); |
- g.setFlag(3, 2, true); |
- |
- expect(g.bombsLeft, equals(11)); |
- expect(g.revealsLeft, equals(startReveals - 1)); |
- |
- g.reveal(2, 3); |
- expect(g.bombsLeft, equals(11)); |
- expect(g.revealsLeft, equals(startReveals - 11)); |
- expect(g.duration, isNot(isNull)); |
-} |
- |
-// Test 5 random fields five times |
-void _testRandomField() { |
- var rnd = new Random(); |
- for (int i = 0; i < 5; i++) { |
- var f = new Field(); |
- |
- for (int j = 0; j < 5; j++) { |
- var g = new Game(f); |
- while (g.revealsLeft > 0) { |
- var x = rnd.nextInt(f.width); |
- var y = rnd.nextInt(f.height); |
- if (g.getSquareState(x, y) == SquareState.hidden) { |
- if (f.get(x, y)) { |
- g.setFlag(x, y, true); |
- } else if (!f.get(x, y)) { |
- g.reveal(x, y); |
- } |
- } |
- } |
- expect(g.state == GameState.won, isTrue); |
- } |
- } |
-} |
- |
-void _testRevealZero() { |
- var f = getSampleField(); |
- var g = new Game(f); |
- |
- expect(g.bombsLeft, equals(13)); |
- var startReveals = f.length - 13; |
- expect(g.revealsLeft, equals(startReveals)); |
- expect(g.state, equals(GameState.reset)); |
- |
- g.reveal(5, 4); |
- expect(g.revealsLeft, equals(startReveals - 10)); |
-} |
- |
-void _testInitial() { |
- var f = getSampleField(); |
- var g = new Game(f); |
- |
- expect(g.bombsLeft, equals(13)); |
- expect(g.revealsLeft, equals(f.length - 13)); |
- expect(g.state, equals(GameState.reset)); |
- expect(g.duration, isNull); |
- |
- for (int x = 0; x < f.width; x++) { |
- for (int y = 0; y < f.height; y++) { |
- expect(g.getSquareState(x, y), equals(SquareState.hidden)); |
- } |
- } |
-} |
- |
-void _testSetFlag() { |
- var g = new Game(getSampleField()); |
- |
- expect(g.getSquareState(0, 0), equals(SquareState.hidden)); |
- g.setFlag(0, 0, true); |
- expect(g.getSquareState(0, 0), equals(SquareState.flagged)); |
- expect(g.bombsLeft, equals(12)); |
- expect(g.state, equals(GameState.started)); |
-} |
- |
-void _testCannotRevealFlagged() { |
- var g = new Game(getSampleField()); |
- |
- expect(g.getSquareState(0, 0), equals(SquareState.hidden)); |
- g.setFlag(0, 0, true); |
- expect(g.getSquareState(0, 0), equals(SquareState.flagged)); |
- expect(g.bombsLeft, equals(12)); |
- expect(g.state, equals(GameState.started)); |
- |
- expect(() => g.reveal(0, 0), throwsException); |
-} |
- |
-void _testCannotFlagRevealed() { |
- var g = new Game(getSampleField()); |
- |
- expect(g.getSquareState(1, 1), equals(SquareState.hidden)); |
- g.reveal(1, 1); |
- expect(g.getSquareState(1, 1), equals(SquareState.revealed)); |
- expect(g.state, equals(GameState.started)); |
- |
- expect(() => g.setFlag(1, 1, true), throwsException); |
-} |
- |
-void _testLoss() { |
- var g = new Game(getSampleField()); |
- |
- expect(g.getSquareState(0, 0), equals(SquareState.hidden)); |
- var revealed = g.reveal(0, 0); |
- expect(revealed, isNull); |
- expect(g.state, equals(GameState.lost)); |
- expect(g.getSquareState(0, 0), equals(SquareState.bomb)); |
-} |
- |
-void _testWin() { |
- var f = getSampleField(); |
- var g = new Game(f); |
- |
- int bombsLleft = f.bombCount; |
- expect(g.revealsLeft, equals(f.length - 13)); |
- int revealsLeft = g.revealsLeft; |
- for (int x = 0; x < f.width; x++) { |
- for (int y = 0; y < f.height; y++) { |
- if (f.get(x, y)) { |
- g.setFlag(x, y, true); |
- bombsLleft--; |
- expect(g.bombsLeft, equals(bombsLleft)); |
- } else if (g.getSquareState(x, y) == SquareState.hidden) { |
- revealsLeft -= g.reveal(x, y).length; |
- expect(revealsLeft, equals(g.revealsLeft)); |
- } else { |
- expect(g.getSquareState(x, y), equals(SquareState.revealed)); |
- } |
- expect(g.state, isNot(equals(GameState.reset))); |
- expect(g.state, isNot(equals(GameState.lost))); |
- } |
- } |
- |
- expect(g.state, equals(GameState.won)); |
-} |