Made it work

This commit is contained in:
Lukas Wölfer
2020-02-12 00:50:31 +01:00
parent 37cb35c90e
commit d752ffb24c
25 changed files with 411 additions and 128 deletions

View File

@@ -2,7 +2,12 @@
import unittest
from shenzhen_solitaire.board import NumberCard, Position
from shenzhen_solitaire.solver.board_actions import MoveAction, BunkerizeAction, GoalAction, HuaKillAction
from shenzhen_solitaire.solver.board_actions import (
MoveAction,
BunkerizeAction,
GoalAction,
HuaKillAction,
)
from shenzhen_solitaire.solver import board_possibilities
from .boards import TEST_BOARD
@@ -17,53 +22,63 @@ class ChainTest(unittest.TestCase):
sequence = [
MoveAction(
cards=[
NumberCard(
suit=NumberCard.Suit.Red,
number=7),
NumberCard(
suit=NumberCard.Suit.Green,
number=6)],
NumberCard(suit=NumberCard.Suit.Red, number=7),
NumberCard(suit=NumberCard.Suit.Green, number=6),
],
source_id=3,
destination_id=7),
source_row_index=3,
destination_id=7,
destination_row_index=5,
),
BunkerizeAction(
card=NumberCard(
suit=NumberCard.Suit.Red,
number=6),
card=NumberCard(suit=NumberCard.Suit.Red, number=6),
bunker_id=0,
field_id=2,
to_bunker=True),
field_row_index=4,
to_bunker=True,
),
GoalAction(
card=NumberCard(
suit=NumberCard.Suit.Green,
number=1),
card=NumberCard(suit=NumberCard.Suit.Green, number=1),
source_id=2,
source_position=Position.Field),
source_row_index=3,
source_position=Position.Field,
obvious=True,
goal_id=0,
),
MoveAction(
cards=[NumberCard(suit=NumberCard.Suit.Red, number=4)],
source_id=2,
source_row_index=2,
destination_id=5,
destination_row_index=5,
),
GoalAction(
card=NumberCard(suit=NumberCard.Suit.Red, number=1),
source_id=2,
source_row_index=1,
source_position=Position.Field,
obvious=True,
goal_id=1,
),
HuaKillAction(source_field_id=2, source_field_row_index=0),
MoveAction(
cards=[
NumberCard(
suit=NumberCard.Suit.Red,
number=4)],
source_id=2,
destination_id=5),
GoalAction(
card=NumberCard(
suit=NumberCard.Suit.Red,
number=1),
source_id=2,
source_position=Position.Field),
HuaKillAction(source_field_id=2),
MoveAction(
cards=[
NumberCard(
suit=NumberCard.Suit.Black, number=9),
NumberCard(suit=NumberCard.Suit.Red, number=8)],
NumberCard(suit=NumberCard.Suit.Black, number=9),
NumberCard(suit=NumberCard.Suit.Red, number=8),
],
source_id=6,
destination_id=2),
source_row_index=3,
destination_id=2,
destination_row_index=0,
),
GoalAction(
card=NumberCard(
suit=NumberCard.Suit.Green, number=2),
card=NumberCard(suit=NumberCard.Suit.Green, number=2),
source_id=6,
source_position=Position.Field)
source_row_index=2,
source_position=Position.Field,
obvious=False,
goal_id=0,
),
]
for action in sequence:
step = list(board_possibilities.possible_actions(TEST_BOARD))

View File

@@ -2,7 +2,7 @@
import copy
import unittest
from typing import List, Tuple, Union
from typing import List, Tuple, Union, Optional
import cv2
import numpy as np
@@ -79,8 +79,8 @@ class CardDetectionTest(unittest.TestCase):
def test_goal_parsing(self) -> None:
loaded_config = configuration.load("test_config.zip")
imagenames: List[Tuple[str, List[NumberCard]]] = [
("BaiBlack", [NumberCard(NumberCard.Suit.Green, 2)],),
imagenames: List[Tuple[str, List[Optional[NumberCard]]]] = [
("BaiBlack", [NumberCard(NumberCard.Suit.Green, 2), None, None],),
(
"BaiShiny",
[
@@ -94,15 +94,13 @@ class CardDetectionTest(unittest.TestCase):
[
NumberCard(NumberCard.Suit.Red, 1),
NumberCard(NumberCard.Suit.Black, 1),
None,
],
),
("FaShiny", [NumberCard(NumberCard.Suit.Green, 2)]),
("ZhongShiny", [NumberCard(NumberCard.Suit.Green, 2)]),
("FaShiny", [NumberCard(NumberCard.Suit.Green, 2), None, None]),
("ZhongShiny", [NumberCard(NumberCard.Suit.Green, 2), None, None]),
]
base_goal_dict = {suit: 0 for suit in NumberCard.Suit}
for imagename, goal in imagenames:
image = cv2.imread(f"pictures/specific/{imagename}.jpg")
my_goal_dict = copy.deepcopy(base_goal_dict)
my_goal_dict.update({x.suit: x.number for x in goal})
my_board = board_parser.parse_board(image, loaded_config)
self.assertDictEqual(my_goal_dict, my_board.goal)
self.assertListEqual(goal, my_board.goal)