def load_parser_test_data(): input_file = TEST_RESOURCES_ROOT.child('test_data' ).child('hexoban_parser_tests.sok') collection = PuzzlesCollection() collection.load(input_file) retv = {} for puzzle in collection.puzzles: if puzzle.title == "row_added_type1_top" or puzzle.title == "row_added_type2_top": puzzle.board = '-' + puzzle.board[1:] if puzzle.title == "row_added_type1_bottom" or puzzle.title == "row_added_type2_bottom": puzzle.board = puzzle.board[:-2] + '-' + puzzle.board[-1] retv[puzzle.title] = puzzle.board.rstrip() return retv
from helpers import TEST_RESOURCES_ROOT from sokoenginepy.common import Variant, is_blank from sokoenginepy.input_output import PuzzlesCollection, SOKFileFormat INPUT_FILES_ROOT = TEST_RESOURCES_ROOT.child('test_data') class DescribeSOKReader: def it_loads_regular_collection_file(self): collection = PuzzlesCollection() collection.load(INPUT_FILES_ROOT.child('Original_and_Extra.sok')) assert len(collection.puzzles) == 91 assert len(collection.puzzles[0].snapshots) == 6 assert collection.puzzles[0].title == 'Level 1' assert not is_blank(collection.notes) assert not is_blank(collection.puzzles[0].board) assert not is_blank(collection.puzzles[0].notes) assert not is_blank(collection.puzzles[0].snapshots[0].moves) def it_loads_puzzle_without_title(self): collection = PuzzlesCollection() collection.load( INPUT_FILES_ROOT.child('parser_test_puzzle_no_title.sok') ) assert is_blank(collection.puzzles[0].title) assert not is_blank(collection.puzzles[0].board)