Made it work
This commit is contained in:
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user