예제 #1
0
class TestErrors(ExtendedTestCase):
    """Test the erronous operations WordSearch"""
    def setUp(self):
        """This runs before the test cases are executed"""

        self.word_search = WordSearch()

    def tearDown(self):
        """This runs after the test cases are executed"""

        self.word_search = None

    def test_file_not_found(self):
        """"""

        no_file = "puzzle1.pzlssss"
        error = "file {} not found in puzzles directory".format(no_file)
        self.word_search.set_puzzle_file(no_file)
        self.assertRaisesWithMessage(error, self.word_search.run_search)

    def test_file_with_one_letter(self):
        """"""

        no_file = "puzzle_w_one_letter.pzl"
        error = "A should be more than 2 characters"
        self.word_search.set_puzzle_file(no_file)
        self.assertRaisesWithMessage(error, self.word_search.run_search)

    def test_file_invalid_search(self):
        """"""

        no_file = "puzzle_w_invalid_search.pzl"
        error = "@ is not a valid alphabet"
        self.word_search.set_puzzle_file(no_file)
        self.assertRaisesWithMessage(error, self.word_search.run_search)

    def test_file_invalid_crosswords(self):
        """"""

        no_file = "puzzle_w_invalid_crosswords.pzl"
        error = "CI@N is not a valid alphabet"
        self.word_search.set_puzzle_file(no_file)
        self.assertRaisesWithMessage(error, self.word_search.run_search)

    def test_file_uneven_puzzle(self):
        """"""

        no_file = "puzzle_uneven_matrix.pzl"
        error = "Puzzle file must have equal dimension (X,X)"
        self.word_search.set_puzzle_file(no_file)
        self.assertRaisesWithMessage(error, self.word_search.run_search)
예제 #2
0
class TestLogics(ExtendedTestCase):
    """Test the logical operations WordSearch"""
    def setUp(self):
        """This runs before the test cases are executed"""

        self.word_search = WordSearch()

    def tearDown(self):
        """This runs after the test cases are executed"""

        self.word_search = None

    def test_valid_input_output(self):
        """"""

        _file = "puzzle1.pzl"
        self.word_search.set_puzzle_file(_file)
        self.word_search.run_search()

        with open(self.word_search.get_output_path()) as f:
            lines = f.read()
            pprint.pprint(lines)
            self.assertMultiLineEqual(
                "CAT (1, 1)(1, 3)\nDOG (2, 2)(4, 2)\nCOW (2, 4)(4, 4)\n",
                lines)

    def test_valid_input_with_reverse(self):
        """"""

        _file = "suits.pzl"
        self.word_search.set_puzzle_file(_file)
        self.word_search.run_search()

        with open(self.word_search.get_output_path()) as f:
            lines = f.read()
            pprint.pprint(lines)
            self.assertMultiLineEqual(
                "DIAMOND (7, 1)(1, 1)\nHEART (7, 5)(5, 3)\n", lines)

    def test_valid_with_newlines(self):
        """"""

        _file = "puzzle_far_inputs.pzl"
        self.word_search.set_puzzle_file(_file)
        self.word_search.run_search()

        with open(self.word_search.get_output_path()) as f:
            lines = f.read()
            pprint.pprint(lines)
            self.assertMultiLineEqual(
                "CAT (1, 1)(1, 3)\nDOG (2, 2)(4, 2)\nCOW (2, 4)(4, 4)\n",
                lines)

    def test_valid_with_blank_each(self):
        """"""

        _file = "puzzle_has_blank_each_inputs.pzl"
        self.word_search.set_puzzle_file(_file)
        self.word_search.run_search()

        with open(self.word_search.get_output_path()) as f:
            lines = f.read()
            pprint.pprint(lines)
            self.assertMultiLineEqual(
                "CAT (1, 1)(1, 3)\nDOG (2, 2)(4, 2)\nCOW (2, 4)(4, 4)\n",
                lines)

    def test_valid_with_lost_word(self):
        """"""

        _file = "lostDuck.pzl"
        self.word_search.set_puzzle_file(_file)
        self.word_search.run_search()

        with open(self.word_search.get_output_path()) as f:
            lines = f.read()
            pprint.pprint(lines)
            self.assertMultiLineEqual(
                "CAT (1, 1)(1, 3)\nDOG (2, 2)(4, 2)\nDUCK not found\n", lines)