Restructured code

This commit is contained in:
Lukas Wölfer
2020-02-05 00:18:56 +01:00
parent bc4dd073dc
commit 7e18f1db1c
14 changed files with 46 additions and 46 deletions

View File

@@ -1,7 +1,7 @@
"""Contains actions that can be used on the board""" """Contains actions that can be used on the board"""
from typing import List, Tuple from typing import List, Tuple
from dataclasses import dataclass from dataclasses import dataclass
from . import board from .. import board
class Action: class Action:

View File

@@ -1,6 +1,6 @@
"""Contains function to iterate different kinds of possible actions""" """Contains function to iterate different kinds of possible actions"""
from typing import Iterator, List, Tuple from typing import Iterator, List, Tuple
from . import board from .. import board
from . import board_actions from . import board_actions

View File

@@ -1,6 +1,6 @@
"""Contains solver for solitaire""" """Contains solver for solitaire"""
from typing import List, Iterator, Optional from typing import List, Iterator, Optional
from .board import Board from ..board import Board
from . import board_actions from . import board_actions
from .board_possibilities import possible_actions from .board_possibilities import possible_actions
from .board_actions import ( from .board_actions import (

View File

@@ -1,38 +0,0 @@
"""Contains function to manually test the visual detection of a board"""
import numpy as np
import cv2
from shenzhen_solitaire.cv import adjustment
from shenzhen_solitaire.cv import board_parser
from shenzhen_solitaire import board
from shenzhen_solitaire.cv.configuration import Configuration
def generate() -> None:
"""Generate a configuration"""
with open("pictures/20190809172213_1.jpg", 'rb') as png_file:
img_str = png_file.read()
nparr = np.frombuffer(img_str, np.uint8)
image = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
generated_config = Configuration.generate(image)
generated_config.save('test_config.zip')
def parse() -> board.Board:
"""Parse a configuration"""
with open("pictures/20190809172213_1.jpg", 'rb') as png_file:
img_str = png_file.read()
nparr = np.frombuffer(img_str, np.uint8)
image = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
# image = cv2.resize(image, (1000, 629))
loaded_config = Configuration.load('test_config.zip')
# loaded_config.field_adjustment = adjustment.adjust_field(image)
return board_parser.parse_board(image, loaded_config)
if __name__ == "__main__":
# generate()
parse()

View File

@@ -2,12 +2,12 @@
import unittest import unittest
from shenzhen_solitaire.board import NumberCard, Position from shenzhen_solitaire.board import NumberCard, Position
from shenzhen_solitaire.board_actions import MoveAction, BunkerizeAction, GoalAction, HuaKillAction from shenzhen_solitaire.solver.board_actions import MoveAction, BunkerizeAction, GoalAction, HuaKillAction
from shenzhen_solitaire import board_possibilities from shenzhen_solitaire.solver import board_possibilities
from .boards import TEST_BOARD from .boards import TEST_BOARD
class ChainTestClass(unittest.TestCase): class ChainTest(unittest.TestCase):
"""Tests the chain class""" """Tests the chain class"""
def test_sequence(self) -> None: def test_sequence(self) -> None:

24
test/test_cv.py Normal file
View File

@@ -0,0 +1,24 @@
"""Contains function to manually test the visual detection of a board"""
import unittest
import cv2
import numpy as np
from shenzhen_solitaire import board
from shenzhen_solitaire.card_detection import adjustment, board_parser
from shenzhen_solitaire.card_detection.configuration import Configuration
class CardDetectionTest(unittest.TestCase):
def test_parse(self) -> None:
"""Parse a configuration"""
with open("pictures/20190809172213_1.jpg", "rb") as png_file:
img_str = png_file.read()
nparr = np.frombuffer(img_str, np.uint8)
image = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
# image = cv2.resize(image, (1000, 629))
loaded_config = Configuration.load("test_config.zip")
# loaded_config.field_adjustment = adjustment.adjust_field(image)
print(board_parser.parse_board(image, loaded_config))

View File

@@ -2,7 +2,7 @@
import unittest import unittest
import copy import copy
from shenzhen_solitaire import solver from shenzhen_solitaire.solver import solver
from .boards import TEST_BOARD from .boards import TEST_BOARD
@@ -13,7 +13,7 @@ class SolverTest(unittest.TestCase):
def test_solver(self) -> None: def test_solver(self) -> None:
"""Tests solver""" """Tests solver"""
board_copy = copy.deepcopy(TEST_BOARD) board_copy = copy.deepcopy(TEST_BOARD)
board_id = TEST_BOARD.state_identifier # type: ignore board_id = TEST_BOARD.state_identifier
board_solution_iterator = solver.solve(TEST_BOARD) board_solution_iterator = solver.solve(TEST_BOARD)
for _, current_solution in zip(range(1), board_solution_iterator): for _, current_solution in zip(range(1), board_solution_iterator):
self.assertEqual(board_id, board_copy.state_identifier) self.assertEqual(board_id, board_copy.state_identifier)

0
tools/__init__.py Normal file
View File

14
tools/generate_config.py Normal file
View File

@@ -0,0 +1,14 @@
import numpy as np
import cv2
from shenzhen_solitaire.card_detection.configuration import Configuration
def main() -> None:
"""Generate a configuration"""
with open("pictures/20190809172213_1.jpg", 'rb') as png_file:
img_str = png_file.read()
nparr = np.frombuffer(img_str, np.uint8)
image = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
generated_config = Configuration.generate(image)
generated_config.save('test_config.zip')