aboutsummaryrefslogtreecommitdiffstats
path: root/tests_solver/test_solver.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests_solver/test_solver.py')
-rw-r--r--tests_solver/test_solver.py141
1 files changed, 134 insertions, 7 deletions
diff --git a/tests_solver/test_solver.py b/tests_solver/test_solver.py
index e2b45a5..82aca73 100644
--- a/tests_solver/test_solver.py
+++ b/tests_solver/test_solver.py
@@ -1,6 +1,7 @@
#!/usr/bin/env python3
import os
+import pprint
import sys
sys.path.append(os.getcwd())
@@ -8,13 +9,29 @@ sys.path.append(os.getcwd())
from solver import *
def test_is_swappable():
- assert is_swappable(Kana("norm", "su"), Kana("norm", "su"))
- assert is_swappable(Kana("froz", "su"), Kana("norm", "su"))
- assert is_swappable(Kana("norm", "su"), Kana("empt"))
- assert is_swappable(Kana("empt"), Kana("froz", "su"))
- assert not is_swappable(Kana("norm", "su"), Kana("rock", "su"))
- assert not is_swappable(Kana("froz", "su"), Kana("froz", "su"))
- assert not is_swappable(Kana("empt"), Kana("empt"))
+
+ swappable_grids = [
+ [Kana("norm", "su"), Kana("norm", "su")],
+ [Kana("froz", "su"), Kana("norm", "su")],
+ [Kana("norm", "su"), Kana("empt" )],
+ [Kana("empt" ), Kana("froz", "su")],
+ ]
+
+ for swappable_grid in swappable_grids:
+ kanagrid = KanaGrid((2, 1), swappable_grid)
+ print(kanagrid.grid)
+ assert kanagrid.is_swappable((0, 0), (1, 0))
+
+ not_swappable_grids = [
+ [Kana("norm", "su"), Kana("rock", "su")],
+ [Kana("froz", "su"), Kana("froz", "su")],
+ [Kana("empt" ), Kana("empt" )],
+ ]
+
+ for not_swappable_grid in not_swappable_grids:
+ kanagrid = KanaGrid((2, 1), not_swappable_grid)
+ print(kanagrid.grid)
+ assert not kanagrid.is_swappable((0, 0), (1, 0))
def test_kana_grid():
@@ -47,3 +64,113 @@ def test_kana_grid():
assert kanagrid_new.grid == expected_grid
+
+def test_kana_arrow_swap():
+ kanagrid_orig = KanaGrid((2, 1), [Kana("ar_r", "su"), Kana("empt",)])
+ kanagrid_new = kanagrid_orig.action(pos=(0, 0), action_type="right")
+ expected_grid = KanaGrid((2, 1), [Kana("empt",), Kana("ar_r", "su")])
+
+ print("kanagrid_orig")
+ print(kanagrid_orig)
+ print("kanagrid_new")
+ print(kanagrid_new)
+ print("expected_grid")
+ print(expected_grid)
+
+ assert kanagrid_new.grid == expected_grid.grid
+
+def test_kana_arrow_swap():
+ moves = [
+ {
+ 'move_ok': 'up',
+ 'other_move_ok': 'down',
+ 'dest_pos': (1, 0),
+ 'orig': KanaGrid((3, 3), [
+ Kana("empt" ), Kana("empt" ), Kana("empt" ),
+ Kana("empt" ), Kana("ar_u", "ko"), Kana("empt" ),
+ Kana("empt" ), Kana("empt" ), Kana("empt" ),
+ ]),
+ 'moved': KanaGrid((3, 3), [
+ Kana("empt" ), Kana("ar_u", "ko"), Kana("empt" ),
+ Kana("empt" ), Kana("empt" ), Kana("empt" ),
+ Kana("empt" ), Kana("empt" ), Kana("empt" ),
+ ], action_count=1),
+ },
+ {
+ 'move_ok': 'right',
+ 'other_move_ok': 'left',
+ 'dest_pos': (2, 1),
+ 'orig': KanaGrid((3, 3), [
+ Kana("empt" ), Kana("empt" ), Kana("empt" ),
+ Kana("empt" ), Kana("ar_r", "ko"), Kana("empt" ),
+ Kana("empt" ), Kana("empt" ), Kana("empt" ),
+ ]),
+ 'moved': KanaGrid((3, 3), [
+ Kana("empt" ), Kana("empt" ), Kana("empt" ),
+ Kana("empt" ), Kana("empt" ), Kana("ar_r", "ko"),
+ Kana("empt" ), Kana("empt" ), Kana("empt" ),
+ ], action_count=1),
+ },
+ {
+ 'move_ok': 'down',
+ 'other_move_ok': 'up',
+ 'dest_pos': (1, 2),
+ 'orig': KanaGrid((3, 3), [
+ Kana("empt" ), Kana("empt" ), Kana("empt" ),
+ Kana("empt" ), Kana("ar_d", "ko"), Kana("empt" ),
+ Kana("empt" ), Kana("empt" ), Kana("empt" ),
+ ]),
+ 'moved': KanaGrid((3, 3), [
+ Kana("empt" ), Kana("empt" ), Kana("empt" ),
+ Kana("empt" ), Kana("empt" ), Kana("empt" ),
+ Kana("empt" ), Kana("ar_d", "ko"), Kana("empt" ),
+ ], action_count=1),
+ },
+ {
+ 'move_ok': 'left',
+ 'other_move_ok': 'right',
+ 'dest_pos': (0, 1),
+ 'orig': KanaGrid((3, 3), [
+ Kana("empt" ), Kana("empt" ), Kana("empt" ),
+ Kana("empt" ), Kana("ar_l", "ko"), Kana("empt" ),
+ Kana("empt" ), Kana("empt" ), Kana("empt" ),
+ ]),
+ 'moved': KanaGrid((3, 3), [
+ Kana("empt" ), Kana("empt" ), Kana("empt" ),
+ Kana("ar_l", "ko"), Kana("empt" ), Kana("empt" ),
+ Kana("empt" ), Kana("empt" ), Kana("empt" ),
+ ], action_count=1),
+ },
+ ]
+
+ for move in moves:
+ print("pprint.pprint(move):")
+ pprint.pprint(move)
+ for action in ("up", "right", "down", "left"):
+ print("\n"*3)
+ print("action:", action)
+
+ # try to move arrowed kana
+ kanagrid_test = move['orig'].copy()
+ kanagrid_test = kanagrid_test.action((1, 1), action)
+ print("=== move arrowed kana ===")
+ print(kanagrid_test)
+ if action == move['move_ok']:
+ assert move['orig'].is_swappable((1, 1), move['dest_pos'])
+ assert kanagrid_test == move['moved']
+ else:
+ assert kanagrid_test is None
+
+ for other_pos in ((1, 0), (2, 1), (1, 2), (0, 1)):
+ # try to move other kana with the arrowed one
+ kanagrid_test = move['orig'].copy()
+ kanagrid_test = kanagrid_test.action(other_pos, action)
+ print("=== move other kana ===")
+ print(kanagrid_test)
+ if action == move['other_move_ok'] \
+ and other_pos == move['dest_pos']:
+ assert move['orig'].is_swappable(other_pos, (1, 1))
+ assert kanagrid_test == move['moved']
+ else:
+ assert kanagrid_test is None
+