33from word_search import WordSearch , Point
44
55
6+ # Tests adapted from `problem-specifications//canonical-data.json` @ v1.1.0
7+
68class 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
83175if __name__ == '__main__' :
84176 unittest .main ()
0 commit comments