[iagno] Improve tests.
- From: Arnaud B. <arnaudb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [iagno] Improve tests.
- Date: Wed, 22 May 2019 12:59:47 +0000 (UTC)
commit d5f9c290aa5c98a6795d76ec5ce113b1976ade24
Author: Arnaud Bonatti <arnaud bonatti gmail com>
Date: Fri Apr 26 06:55:01 2019 +0200
Improve tests.
src/computer-player.vala | 27 ++---
src/iagno.vala | 6 +-
src/test-iagno.vala | 261 +++++++++++++++++++++++++----------------------
3 files changed, 149 insertions(+), 145 deletions(-)
---
diff --git a/src/computer-player.vala b/src/computer-player.vala
index 69bc0d5..f8c23e8 100644
--- a/src/computer-player.vala
+++ b/src/computer-player.vala
@@ -108,34 +108,19 @@ private class ComputerPlayer : Object
}
}
- /* For tests only. */
- internal void move ()
+ internal void move_sync (out uint8 x, out uint8 y) // for tests
{
- uint8 x;
- uint8 y;
-
+ move_pending = true;
run_search (out x, out y);
+ move_pending = false;
complete_move (x, y);
}
- internal bool force_moving (uint8 force_x, uint8 force_y)
+ internal void move (double delay_seconds = 0.0)
{
- uint8 x;
- uint8 y;
-
- move_pending = true;
- run_search (out x, out y);
- complete_move (force_x, force_y);
-
- print (@"\nx: $x, y: $y");
-
- return (x == force_x)
- && (y == force_y);
+ move_async.begin (delay_seconds);
}
-
- /* real game */
-
- internal async void move_async (double delay_seconds = 0.0)
+ private async void move_async (double delay_seconds)
{
Timer timer = new Timer ();
uint8 x = 0; // garbage, should not be needed
diff --git a/src/iagno.vala b/src/iagno.vala
index 844dccd..cddfc7f 100644
--- a/src/iagno.vala
+++ b/src/iagno.vala
@@ -347,7 +347,7 @@ private class Iagno : Gtk.Application
requires (game_is_set)
{
if (game.current_color != player_one && computer != null && !game.is_complete)
- ((!) computer).move_async.begin (SLOW_MOVE_DELAY);
+ ((!) computer).move (SLOW_MOVE_DELAY);
else if (game.is_complete)
game_complete (/* play sound */ false);
}
@@ -385,7 +385,7 @@ private class Iagno : Gtk.Application
update_ui ();
if (player_one != Player.DARK && computer != null)
- ((!) computer).move_async.begin (MODERATE_MOVE_DELAY); // TODO MODERATE_MOVE_DELAY = 1.0,
but after the sliding animation…
+ ((!) computer).move (MODERATE_MOVE_DELAY); // TODO MODERATE_MOVE_DELAY = 1.0, but after the
sliding animation…
}
private bool first_player_is_human = false;
@@ -463,7 +463,7 @@ private class Iagno : Gtk.Application
* but not so long as to become boring.
*/
if (game.current_color != player_one && computer != null)
- ((!) computer).move_async.begin (fast_mode ? QUICK_MOVE_DELAY : SLOW_MOVE_DELAY);
+ ((!) computer).move (fast_mode ? QUICK_MOVE_DELAY : SLOW_MOVE_DELAY);
}
private void pass ()
diff --git a/src/test-iagno.vala b/src/test-iagno.vala
index 8daa160..c6a10d4 100644
--- a/src/test-iagno.vala
+++ b/src/test-iagno.vala
@@ -75,6 +75,25 @@ private class TestIagno : Object
assert_true (1 + 1 == 2);
}
+ /*\
+ * * utilities
+ \*/
+
+ private static bool ai_move (ComputerPlayer ai, uint8 force_x, uint8 force_y)
+ {
+ uint8 x;
+ uint8 y;
+ ai.move_sync (out x, out y);
+
+ bool success = (x == force_x)
+ && (y == force_y);
+
+ if (!success)
+ print (@"\nwanted: ($force_x, $force_y), result: ($x, $y)");
+
+ return success;
+ }
+
/*\
* * short tests
\*/
@@ -145,8 +164,8 @@ private class TestIagno : Object
" L L L L L L L L",
" L L L L L L L L" };
Game game = new Game.from_strings (board, Player.LIGHT);
- ComputerPlayer ai = new ComputerPlayer (game);
- ai.move ();
+ ComputerPlayer ai = new ComputerPlayer (game, /* AI level */ 1);
+ assert_true (ai_move (ai, 2, 0));
/* didn't crash */
}
@@ -161,8 +180,8 @@ private class TestIagno : Object
" . . . D . . . .",
" . . D . . . . ." };
Game game = new Game.from_strings (board, Player.LIGHT);
- ComputerPlayer ai = new ComputerPlayer (game);
- ai.move ();
+ ComputerPlayer ai = new ComputerPlayer (game, /* AI level */ 1);
+ assert_true (ai_move (ai, 4, 6));
/* didn't crash */
}
@@ -177,8 +196,8 @@ private class TestIagno : Object
" L L L L L D D D",
" D D D D D D D D" };
Game game = new Game.from_strings (board, Player.LIGHT);
- ComputerPlayer ai = new ComputerPlayer (game);
- ai.move ();
+ ComputerPlayer ai = new ComputerPlayer (game, /* AI level */ 1);
+ assert_true (ai_move (ai, 2, 0));
assert_true (game.get_owner (2, 0) == Player.LIGHT);
}
@@ -193,8 +212,8 @@ private class TestIagno : Object
" D D D L L D D D",
" D D D L D D D D" };
Game game = new Game.from_strings (board, Player.LIGHT);
- ComputerPlayer ai = new ComputerPlayer (game);
- ai.move ();
+ ComputerPlayer ai = new ComputerPlayer (game, /* AI level */ 1);
+ assert_true (ai_move (ai, 1, 0));
assert_true (game.get_owner (1, 0) == Player.LIGHT);
}
@@ -209,8 +228,8 @@ private class TestIagno : Object
" . L L L D L L L",
" . . L L L L L L" };
Game game = new Game.from_strings (board, Player.LIGHT);
- ComputerPlayer ai = new ComputerPlayer (game);
- ai.move ();
+ ComputerPlayer ai = new ComputerPlayer (game, /* AI level */ 1);
+ assert_true (ai_move (ai, 0, 5));
/* didn't crash */
}
@@ -234,61 +253,61 @@ private class TestIagno : Object
ComputerPlayer ai = new ComputerPlayer (game, /* AI level */ 3);
assert_true (game.place_tile (4, 1));
- assert_true (ai.force_moving (5, 5));
+ assert_true (ai_move (ai, 5, 5));
assert_true (game.place_tile (4, 5));
- assert_true (ai.force_moving (3, 5));
+ assert_true (ai_move (ai, 3, 5));
assert_true (game.place_tile (2, 5));
- assert_true (ai.force_moving (2, 4));
+ assert_true (ai_move (ai, 2, 4));
assert_true (game.place_tile (4, 6));
- assert_true (ai.force_moving (2, 6));
+ assert_true (ai_move (ai, 2, 6));
assert_true (game.place_tile (1, 4));
- assert_true (ai.force_moving (0, 4));
+ assert_true (ai_move (ai, 0, 4));
assert_true (game.place_tile (2, 3));
- assert_true (ai.force_moving (1, 3));
+ assert_true (ai_move (ai, 1, 3));
assert_true (game.place_tile (1, 5));
- assert_true (ai.force_moving (2, 2));
+ assert_true (ai_move (ai, 2, 2));
assert_true (game.place_tile (3, 2));
- assert_true (ai.force_moving (5, 2));
+ assert_true (ai_move (ai, 5, 2));
assert_true (game.place_tile (6, 4));
- assert_true (ai.force_moving (5, 6));
+ assert_true (ai_move (ai, 5, 6));
assert_true (game.place_tile (3, 0));
- assert_true (ai.force_moving (0, 5));
+ assert_true (ai_move (ai, 0, 5));
assert_true (game.place_tile (3, 6));
- assert_true (ai.force_moving (5, 7));
+ assert_true (ai_move (ai, 5, 7));
assert_true (game.place_tile (0, 3));
- assert_true (ai.force_moving (0, 2));
+ assert_true (ai_move (ai, 0, 2));
assert_true (game.place_tile (6, 5));
- assert_true (ai.force_moving (1, 2));
+ assert_true (ai_move (ai, 1, 2));
assert_true (game.place_tile (3, 7));
- assert_true (ai.force_moving (2, 7));
+ assert_true (ai_move (ai, 2, 7));
assert_true (game.place_tile (4, 7));
- assert_true (ai.force_moving (6, 6));
+ assert_true (ai_move (ai, 6, 6));
assert_true (game.place_tile (2, 1));
- assert_true (ai.force_moving (2, 0));
+ assert_true (ai_move (ai, 2, 0));
assert_true (game.place_tile (1, 0));
- assert_true (ai.force_moving (1, 1));
+ assert_true (ai_move (ai, 1, 1));
assert_true (game.place_tile (6, 2));
- assert_true (ai.force_moving (4, 0));
+ assert_true (ai_move (ai, 4, 0));
assert_true (game.place_tile (5, 0));
- assert_true (ai.force_moving (7, 3));
+ assert_true (ai_move (ai, 7, 3));
assert_true (game.place_tile (6, 3));
- assert_true (ai.force_moving (7, 2));
+ assert_true (ai_move (ai, 7, 2));
assert_true (game.place_tile (5, 1));
- assert_true (ai.force_moving (6, 1));
+ assert_true (ai_move (ai, 6, 1));
assert_true (game.place_tile (7, 4));
- assert_true (ai.force_moving (7, 5));
+ assert_true (ai_move (ai, 7, 5));
assert_true (game.place_tile (7, 1));
- assert_true (ai.force_moving (7, 0));
+ assert_true (ai_move (ai, 7, 0));
assert_true (game.place_tile (7, 7));
- assert_true (ai.force_moving (6, 7));
+ assert_true (ai_move (ai, 6, 7));
assert_true (game.place_tile (7, 6));
- assert_true (ai.force_moving (6, 0));
+ assert_true (ai_move (ai, 6, 0));
assert_true (game.place_tile (0, 0));
- assert_true (ai.force_moving (0, 1));
+ assert_true (ai_move (ai, 0, 1));
assert_true (game.place_tile (0, 6));
- assert_true (ai.force_moving (1, 6));
+ assert_true (ai_move (ai, 1, 6));
assert_true (game.place_tile (1, 7));
- assert_true (ai.force_moving (0, 7));
+ assert_true (ai_move (ai, 0, 7));
}
private static void test_complete_game_2 ()
@@ -307,61 +326,61 @@ private class TestIagno : Object
ComputerPlayer ai = new ComputerPlayer (game, /* AI level */ 3);
assert_true (game.place_tile (4, 2));
- assert_true (ai.force_moving (5, 5));
+ assert_true (ai_move (ai, 5, 5));
assert_true (game.place_tile (6, 4));
- assert_true (ai.force_moving (5, 2));
+ assert_true (ai_move (ai, 5, 2));
assert_true (game.place_tile (6, 5));
- assert_true (ai.force_moving (2, 2));
+ assert_true (ai_move (ai, 2, 2));
assert_true (game.place_tile (3, 1));
- assert_true (ai.force_moving (4, 5));
+ assert_true (ai_move (ai, 4, 5));
assert_true (game.place_tile (3, 5));
- assert_true (ai.force_moving (6, 3));
+ assert_true (ai_move (ai, 6, 3));
assert_true (game.place_tile (2, 4));
- assert_true (ai.force_moving (3, 6));
+ assert_true (ai_move (ai, 3, 6));
assert_true (game.place_tile (7, 3));
- assert_true (ai.force_moving (2, 5));
+ assert_true (ai_move (ai, 2, 5));
assert_true (game.place_tile (3, 7));
- assert_true (ai.force_moving (7, 5));
+ assert_true (ai_move (ai, 7, 5));
assert_true (game.place_tile (5, 6));
- assert_true (ai.force_moving (5, 7));
+ assert_true (ai_move (ai, 5, 7));
assert_true (game.place_tile (6, 2));
- assert_true (ai.force_moving (4, 6));
+ assert_true (ai_move (ai, 4, 6));
assert_true (game.place_tile (4, 7));
- assert_true (ai.force_moving (2, 7));
+ assert_true (ai_move (ai, 2, 7));
assert_true (game.place_tile (1, 3));
- assert_true (ai.force_moving (1, 2));
+ assert_true (ai_move (ai, 1, 2));
assert_true (game.place_tile (0, 2));
- assert_true (ai.force_moving (2, 1));
+ assert_true (ai_move (ai, 2, 1));
assert_true (game.place_tile (2, 0));
- assert_true (ai.force_moving (1, 1));
+ assert_true (ai_move (ai, 1, 1));
assert_true (game.place_tile (2, 6));
- assert_true (ai.force_moving (1, 7));
+ assert_true (ai_move (ai, 1, 7));
assert_true (game.place_tile (4, 1));
- assert_true (ai.force_moving (7, 4));
+ assert_true (ai_move (ai, 7, 4));
assert_true (game.place_tile (7, 6));
- assert_true (ai.force_moving (0, 4));
+ assert_true (ai_move (ai, 0, 4));
assert_true (game.place_tile (0, 3));
- assert_true (ai.force_moving (0, 1));
+ assert_true (ai_move (ai, 0, 1));
assert_true (game.place_tile (1, 4));
- assert_true (ai.force_moving (6, 6));
+ assert_true (ai_move (ai, 6, 6));
assert_true (game.place_tile (1, 6));
- assert_true (ai.force_moving (4, 0));
+ assert_true (ai_move (ai, 4, 0));
assert_true (game.place_tile (3, 0));
- assert_true (ai.force_moving (1, 0));
+ assert_true (ai_move (ai, 1, 0));
assert_true (game.place_tile (5, 1));
- assert_true (ai.force_moving (7, 2));
+ assert_true (ai_move (ai, 7, 2));
assert_true (game.place_tile (7, 7));
- assert_true (ai.force_moving (6, 0));
+ assert_true (ai_move (ai, 6, 0));
assert_true (game.place_tile (6, 1));
- assert_true (ai.force_moving (6, 7));
+ assert_true (ai_move (ai, 6, 7));
assert_true (game.place_tile (0, 7));
- assert_true (ai.force_moving (5, 0));
+ assert_true (ai_move (ai, 5, 0));
assert_true (game.place_tile (0, 0));
- assert_true (ai.force_moving (0, 6));
+ assert_true (ai_move (ai, 0, 6));
assert_true (game.place_tile (0, 5));
- assert_true (ai.force_moving (1, 5));
+ assert_true (ai_move (ai, 1, 5));
assert_true (game.place_tile (7, 0));
- assert_true (ai.force_moving (7, 1));
+ assert_true (ai_move (ai, 7, 1));
}
private static void test_complete_game_3 ()
@@ -379,61 +398,61 @@ private class TestIagno : Object
Game game = new Game.from_strings (board, Player.DARK);
ComputerPlayer ai = new ComputerPlayer (game, /* AI level */ 3);
- assert_true (ai.force_moving (3, 5));
+ assert_true (ai_move (ai, 3, 5));
assert_true (game.place_tile (6, 3));
- assert_true (ai.force_moving (3, 2));
+ assert_true (ai_move (ai, 3, 2));
assert_true (game.place_tile (2, 3));
- assert_true (ai.force_moving (1, 4));
+ assert_true (ai_move (ai, 1, 4));
assert_true (game.place_tile (4, 5));
- assert_true (ai.force_moving (6, 5));
+ assert_true (ai_move (ai, 6, 5));
assert_true (game.place_tile (2, 6));
- assert_true (ai.force_moving (2, 5));
+ assert_true (ai_move (ai, 2, 5));
assert_true (game.place_tile (3, 6));
- assert_true (ai.force_moving (2, 2));
+ assert_true (ai_move (ai, 2, 2));
assert_true (game.place_tile (0, 3));
- assert_true (ai.force_moving (6, 2));
+ assert_true (ai_move (ai, 6, 2));
assert_true (game.place_tile (1, 3));
- assert_true (ai.force_moving (0, 5));
+ assert_true (ai_move (ai, 0, 5));
assert_true (game.place_tile (4, 1));
- assert_true (ai.force_moving (5, 1));
+ assert_true (ai_move (ai, 5, 1));
assert_true (game.place_tile (6, 4));
- assert_true (ai.force_moving (1, 5));
+ assert_true (ai_move (ai, 1, 5));
assert_true (game.place_tile (5, 0));
- assert_true (ai.force_moving (7, 3));
+ assert_true (ai_move (ai, 7, 3));
assert_true (game.place_tile (2, 4));
- assert_true (ai.force_moving (3, 0));
+ assert_true (ai_move (ai, 3, 0));
assert_true (game.place_tile (4, 2));
- assert_true (ai.force_moving (3, 1));
+ assert_true (ai_move (ai, 3, 1));
assert_true (game.place_tile (0, 4));
- assert_true (ai.force_moving (0, 2));
+ assert_true (ai_move (ai, 0, 2));
assert_true (game.place_tile (1, 2));
- assert_true (ai.force_moving (4, 7));
+ assert_true (ai_move (ai, 4, 7));
assert_true (game.place_tile (2, 7));
- assert_true (ai.force_moving (0, 6));
+ assert_true (ai_move (ai, 0, 6));
assert_true (game.place_tile (4, 6));
- assert_true (ai.force_moving (5, 7));
+ assert_true (ai_move (ai, 5, 7));
assert_true (game.place_tile (5, 6));
- assert_true (ai.force_moving (2, 1));
+ assert_true (ai_move (ai, 2, 1));
assert_true (game.place_tile (2, 0));
- assert_true (ai.force_moving (1, 0));
+ assert_true (ai_move (ai, 1, 0));
assert_true (game.place_tile (7, 5));
- assert_true (ai.force_moving (6, 7));
+ assert_true (ai_move (ai, 6, 7));
assert_true (game.place_tile (7, 2));
- assert_true (ai.force_moving (7, 6));
+ assert_true (ai_move (ai, 7, 6));
assert_true (game.place_tile (7, 7));
- assert_true (ai.force_moving (3, 7));
+ assert_true (ai_move (ai, 3, 7));
assert_true (game.place_tile (7, 4));
- assert_true (ai.force_moving (1, 1));
+ assert_true (ai_move (ai, 1, 1));
assert_true (game.place_tile (6, 6));
- assert_true (ai.force_moving (6, 1));
+ assert_true (ai_move (ai, 6, 1));
assert_true (game.place_tile (0, 0));
- assert_true (ai.force_moving (1, 7));
+ assert_true (ai_move (ai, 1, 7));
assert_true (game.place_tile (4, 0));
- assert_true (ai.force_moving (6, 0));
+ assert_true (ai_move (ai, 6, 0));
assert_true (game.place_tile (0, 7));
- assert_true (ai.force_moving (0, 1));
+ assert_true (ai_move (ai, 0, 1));
assert_true (game.place_tile (1, 6));
- assert_true (ai.force_moving (7, 1));
+ assert_true (ai_move (ai, 7, 1));
assert_true (game.place_tile (7, 0));
}
@@ -452,64 +471,64 @@ private class TestIagno : Object
Game game = new Game.from_strings (board, Player.DARK);
ComputerPlayer ai = new ComputerPlayer (game, /* AI level */ 3);
- assert_true (ai.force_moving (5, 4));
+ assert_true (ai_move (ai, 5, 4));
assert_true (game.place_tile (6, 4));
- assert_true (ai.force_moving (1, 5));
+ assert_true (ai_move (ai, 1, 5));
assert_true (game.place_tile (2, 2));
- assert_true (ai.force_moving (3, 5));
+ assert_true (ai_move (ai, 3, 5));
assert_true (game.place_tile (1, 4));
- assert_true (ai.force_moving (6, 3));
+ assert_true (ai_move (ai, 6, 3));
assert_true (game.place_tile (4, 2));
- assert_true (ai.force_moving (4, 1));
+ assert_true (ai_move (ai, 4, 1));
assert_true (game.place_tile (5, 5));
- assert_true (ai.force_moving (2, 3));
+ assert_true (ai_move (ai, 2, 3));
assert_true (game.place_tile (4, 0));
- assert_true (ai.force_moving (5, 6));
+ assert_true (ai_move (ai, 5, 6));
assert_true (game.place_tile (2, 6));
- assert_true (ai.force_moving (2, 5));
+ assert_true (ai_move (ai, 2, 5));
assert_true (game.place_tile (0, 4));
- assert_true (ai.force_moving (0, 6));
+ assert_true (ai_move (ai, 0, 6));
assert_true (game.place_tile (1, 3));
- assert_true (ai.force_moving (5, 1));
+ assert_true (ai_move (ai, 5, 1));
assert_true (game.place_tile (6, 7));
- assert_true (ai.force_moving (3, 6));
+ assert_true (ai_move (ai, 3, 6));
assert_true (game.place_tile (3, 7));
- assert_true (ai.force_moving (5, 0));
+ assert_true (ai_move (ai, 5, 0));
assert_true (game.place_tile (6, 5));
- assert_true (ai.force_moving (3, 0));
+ assert_true (ai_move (ai, 3, 0));
assert_true (game.place_tile (3, 1));
- assert_true (ai.force_moving (0, 2));
+ assert_true (ai_move (ai, 0, 2));
assert_true (game.place_tile (5, 3));
- assert_true (ai.force_moving (7, 4));
+ assert_true (ai_move (ai, 7, 4));
assert_true (game.place_tile (7, 2));
- assert_true (ai.force_moving (7, 5));
+ assert_true (ai_move (ai, 7, 5));
assert_true (game.place_tile (4, 6));
- assert_true (ai.force_moving (1, 2));
+ assert_true (ai_move (ai, 1, 2));
assert_true (game.place_tile (7, 3));
- assert_true (ai.force_moving (6, 2));
+ assert_true (ai_move (ai, 6, 2));
assert_true (game.place_tile (7, 6));
- assert_true (ai.force_moving (2, 7));
+ assert_true (ai_move (ai, 2, 7));
assert_true (game.place_tile (1, 7));
- assert_true (ai.force_moving (2, 0));
+ assert_true (ai_move (ai, 2, 0));
assert_true (game.place_tile (7, 1));
- assert_true (ai.force_moving (6, 6));
+ assert_true (ai_move (ai, 6, 6));
assert_true (game.place_tile (0, 3));
- assert_true (ai.force_moving (0, 5));
+ assert_true (ai_move (ai, 0, 5));
assert_true (game.place_tile (7, 7));
- assert_true (ai.force_moving (6, 1));
+ assert_true (ai_move (ai, 6, 1));
assert_true (game.place_tile (7, 0));
- assert_true (ai.force_moving (6, 0));
+ assert_true (ai_move (ai, 6, 0));
assert_true (game.place_tile (1, 0));
- assert_true (ai.force_moving (1, 6));
+ assert_true (ai_move (ai, 1, 6));
assert_true (game.place_tile (2, 1));
assert_true (game.pass ());
assert_true (game.place_tile (0, 7));
assert_true (game.pass ());
assert_true (game.place_tile (0, 1));
- assert_true (ai.force_moving (1, 1));
+ assert_true (ai_move (ai, 1, 1));
assert_true (game.place_tile (0, 0));
assert_true (game.pass ());
assert_true (game.place_tile (4, 7));
- assert_true (ai.force_moving (5, 7));
+ assert_true (ai_move (ai, 5, 7));
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]