Skip to content

Commit f0dfd60

Browse files
josixNathan Parsons
authored andcommitted
word-search: Update tests to version 1.1.0(exercism#1012) (exercism#1053)
* word-search: Update tests to version 1.1.0(exercism#1012) * Remove redundant and misplaced assertions
1 parent 0c501fa commit f0dfd60

File tree

1 file changed

+104
-12
lines changed

1 file changed

+104
-12
lines changed

exercises/word-search/word_search_test.py

Lines changed: 104 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,111 @@
33
from word_search import WordSearch, Point
44

55

6+
# Tests adapted from `problem-specifications//canonical-data.json` @ v1.1.0
7+
68
class WordSearchTests(unittest.TestCase):
79

10+
def test_initial_game_grid(self):
11+
puzzle = 'jefblpepre'
12+
searchAnswer = WordSearch(puzzle).search('clojure')
13+
self.assertIsNone(searchAnswer)
14+
15+
def test_left_to_right_word(self):
16+
puzzle = 'clojurermt'
17+
searchAnswer = WordSearch(puzzle).search('clojure')
18+
self.assertEqual(searchAnswer, (Point(0, 0), Point(6, 0)))
19+
20+
def test_left_to_right_word_different_position(self):
21+
puzzle = 'mtclojurer'
22+
searchAnswer = WordSearch(puzzle).search('clojure')
23+
self.assertEqual(searchAnswer, (Point(2, 0), Point(8, 0)))
24+
25+
def test_different_left_to_right_word(self):
26+
puzzle = 'coffeelplx'
27+
searchAnswer = WordSearch(puzzle).search('coffee')
28+
self.assertEqual(searchAnswer, (Point(0, 0), Point(5, 0)))
29+
30+
def test_different_left_to_right_word_different_position(self):
31+
puzzle = 'xcoffeezlp'
32+
searchAnswer = WordSearch(puzzle).search('coffee')
33+
self.assertEqual(searchAnswer, (Point(1, 0), Point(6, 0)))
34+
35+
def test_left_to_right_word_two_lines(self):
36+
puzzle = ('jefblpepre\n'
37+
'tclojurerm\n')
38+
searchAnswer = WordSearch(puzzle).search('clojure')
39+
self.assertEqual(searchAnswer, (Point(1, 1), Point(7, 1)))
40+
41+
def test_left_to_right_word_three_lines(self):
42+
puzzle = ('camdcimgtc\n'
43+
'jefblpepre\n'
44+
'clojurermt\n')
45+
searchAnswer = WordSearch(puzzle).search('clojure')
46+
self.assertEqual(searchAnswer, (Point(0, 2), Point(6, 2)))
47+
48+
def test_left_to_right_word_ten_lines(self):
49+
puzzle = ('jefblpepre\n'
50+
'camdcimgtc\n'
51+
'oivokprjsm\n'
52+
'pbwasqroua\n'
53+
'rixilelhrs\n'
54+
'wolcqlirpc\n'
55+
'screeaumgr\n'
56+
'alxhpburyi\n'
57+
'jalaycalmp\n'
58+
'clojurermt\n')
59+
searchAnswer = WordSearch(puzzle).search('clojure')
60+
self.assertEqual(searchAnswer, (Point(0, 9), Point(6, 9)))
61+
62+
def test_left_to_right_word_ten_lines_different_position(self):
63+
puzzle = ('jefblpepre\n'
64+
'camdcimgtc\n'
65+
'oivokprjsm\n'
66+
'pbwasqroua\n'
67+
'rixilelhrs\n'
68+
'wolcqlirpc\n'
69+
'screeaumgr\n'
70+
'alxhpburyi\n'
71+
'clojurermt\n'
72+
'jalaycalmp\n')
73+
searchAnswer = WordSearch(puzzle).search('clojure')
74+
self.assertEqual(searchAnswer, (Point(0, 8), Point(6, 8)))
75+
76+
def test_different_left_to_right_word_ten_lines(self):
77+
puzzle = ('jefblpepre\n'
78+
'camdcimgtc\n'
79+
'oivokprjsm\n'
80+
'pbwasqroua\n'
81+
'rixilelhrs\n'
82+
'wolcqlirpc\n'
83+
'fortranftw\n'
84+
'alxhpburyi\n'
85+
'clojurermt\n'
86+
'jalaycalmp\n')
87+
searchAnswer = WordSearch(puzzle).search('fortran')
88+
self.assertEqual(searchAnswer, (Point(0, 6), Point(6, 6)))
89+
90+
def test_multiple_words(self):
91+
puzzle = ('jefblpepre\n'
92+
'camdcimgtc\n'
93+
'oivokprjsm\n'
94+
'pbwasqroua\n'
95+
'rixilelhrs\n'
96+
'wolcqlirpc\n'
97+
'fortranftw\n'
98+
'alxhpburyi\n'
99+
'jalaycalmp\n'
100+
'clojurermt\n')
101+
searchAnswer = WordSearch(puzzle).search('fortran')
102+
self.assertEqual(searchAnswer, (Point(0, 6), Point(6, 6)))
103+
searchAnswer = WordSearch(puzzle).search('clojure')
104+
self.assertEqual(searchAnswer, (Point(0, 9), Point(6, 9)))
105+
106+
def test_single_word_right_to_left(self):
107+
puzzle = 'rixilelhrs'
108+
searchAnswer = WordSearch(puzzle).search('elixir')
109+
self.assertEqual(searchAnswer, (Point(5, 0), Point(0, 0)))
110+
8111
@classmethod
9112
def setUpClass(self):
10113
puzzle = ('jefblpepre\n'
@@ -19,13 +122,11 @@ def setUpClass(self):
19122
'clojurermt')
20123
self.example = WordSearch(puzzle)
21124

22-
def test_horizontal_words_left_to_right(self):
125+
def test_horizontal_words_different_directions(self):
23126
self.assertEqual(
24127
self.example.search('clojure'),
25128
(Point(0, 9), Point(6, 9))
26129
)
27-
28-
def test_horizontal_words_right_to_left(self):
29130
self.assertEqual(
30131
self.example.search('elixir'),
31132
(Point(5, 4), Point(0, 4))
@@ -70,15 +171,6 @@ def test_diagonal_upper_top_right_to_bottom_left(self):
70171
def test_words_that_are_not_in_the_puzzle(self):
71172
self.assertIsNone(self.example.search('haskell'))
72173

73-
def test_search_differently_sized_puzzles(self):
74-
puzzle = ('qwertyuiopz\n'
75-
'luamsicrexe\n'
76-
'abcdefghijk')
77-
self.assertEqual(
78-
WordSearch(puzzle).search('exercism'),
79-
(Point(10, 1), Point(3, 1))
80-
)
81-
82174

83175
if __name__ == '__main__':
84176
unittest.main()

0 commit comments

Comments
 (0)