Пример #1
0
 def test_up_down_left_right(self):
     square = self.puzzle.get_square(2, 3)
     cursor = xword.Cursor(square, xword.Direction.ACROSS, self.puzzle)
     self.assertEqual(tuple(cursor.h().square), (1, 3))
     self.assertEqual(tuple(cursor.j().square), (2, 4))
     self.assertEqual(tuple(cursor.k().square), (2, 2))
     self.assertEqual(tuple(cursor.l().square), (4, 3)) # skip black square
Пример #2
0
 def test_toggle_direction(self):
     square = next(self.puzzle.itersquares())
     cursor = xword.Cursor(square, xword.Direction.ACROSS, self.puzzle)
     cursor = cursor.space()
     self.assertIs(cursor.direction, xword.Direction.DOWN)
     cursor = cursor.space()
     self.assertIs(cursor.direction, xword.Direction.ACROSS)
Пример #3
0
 def test_next_squares(self):
     square = self.puzzle.get_square(2, 3)
     cursor = xword.Cursor(square, xword.Direction.ACROSS, self.puzzle)
     self.assertEqual([(direction, ''.join(square.solution for square, _ in pairs))
                       for direction, pairs in itertools.groupby(cursor.next_squares(), key=operator.itemgetter(1))],
                      [(xword.Direction.ACROSS, 'CHEKIRSTIEESTREETMAIDS'),
                       (xword.Direction.DOWN,   'REALISMALBERTACATERECTEDDUCHIESBLAKESHEETSRI'),
                       (xword.Direction.ACROSS, 'RACEDBELARUSLABTECHAL')])
Пример #4
0
 def test_word_motions(self):
     square = self.puzzle.get_square(3, 0)
     cursor = xword.Cursor(square, xword.Direction.ACROSS, self.puzzle)
     cursor = cursor.w()
     self.assertEqual(tuple(cursor.square), (0, 1))
     cursor = cursor.b().b()
     self.assertEqual(tuple(cursor.square), (3, 4))
     cursor = cursor.e().e().e()
     self.assertEqual(tuple(cursor.square), (6, 1))
     cursor = cursor.ge().ge().ge().ge()
     self.assertEqual(tuple(cursor.square), (0, 5))
Пример #5
0
 def test_rendering(self):
     square = self.puzzle.get_square(6, 3)
     cursor = xword.Cursor(square, xword.Direction.DOWN, self.puzzle)
     self.assertEqual(list(self.puzzle.render_grid(cursor)),
                      ['┌───┬1──┬2──┬3──┬4──┬5──┬───┐',
                       '│░░░│   │   │   │   │   │░░░│',
                       '├6──┼───┼───┼───┼───┼───╆7━━┪'.replace('7', term.bold('7')),
                       '│   │   │   │   │   │   ┃   ┃',
                       '├8──┼───┼───┼───┼───┼───╂───┨',
                       '│   │   │   │   │   │   ┃   ┃',
                       '├9──┼───┼───┼───┼10─┼───╂───┨',
                       '│   │   │   │░░░│   │   ┃   ┃',
                       '├11─┼───┼───┼12─┼───┼───╂───┨',
                       '│   │   │   │   │   │   ┃   ┃',
                       '├13─┼───┼───┼───┼───┼───╂───┨',
                       '│   │   │   │   │   │   ┃   ┃',
                       '├───┼14─┼───┼───┼───┼───╄━━━┩',
                       '│░░░│   │   │   │   │   │░░░│',
                       '└───┴───┴───┴───┴───┴───┴───┘'])
     self.assertEqual(cursor.displayed_coords(), (26, 7))
Пример #6
0
 def test_pencilling(self):
     square = next(self.puzzle.itersquares())
     word   = next(self.puzzle.iterwords(xword.Direction.ACROSS))
     cursor = xword.Cursor(square, xword.Direction.ACROSS, self.puzzle)
     cursor = cursor.type('S').type('K').type('I').type('e').type('d')
     self.assertEqual([(square.status, square.guess) for square in word],
                      [(xword.Status.PENCILLED_IN, 'S'),
                       (xword.Status.PENCILLED_IN, 'K'),
                       (xword.Status.PENCILLED_IN, 'I'),
                       (xword.Status.NORMAL,       'E'),
                       (xword.Status.NORMAL,       'D')])
     cursor = cursor.b().tilde().tilde().tilde().tilde().tilde()
     self.assertEqual([(square.status, square.guess) for square in word],
                      [(xword.Status.NORMAL,       'S'),
                       (xword.Status.NORMAL,       'K'),
                       (xword.Status.NORMAL,       'I'),
                       (xword.Status.PENCILLED_IN, 'E'),
                       (xword.Status.PENCILLED_IN, 'D')])
     self.assertEqual(tuple(cursor.square), (0, 1))
     cursor = cursor.tilde() # should have no effect on an empty square
     self.assertEqual(tuple(cursor.square), (1, 1))
     square = self.puzzle.get_square(0, 1)
     self.assertEqual((square.status, square.guess), (xword.Status.NORMAL, None))
Пример #7
0
 def test_text_editing(self):
     square = next(self.puzzle.itersquares())
     word   = next(self.puzzle.iterwords(xword.Direction.ACROSS))
     cursor = xword.Cursor(square, xword.Direction.ACROSS, self.puzzle)
     self.assertEqual(tuple(cursor.square), (1, 0))
     self.assertEqual([square.guess for square in word], [None, None, None, None, None])
     cursor = cursor.type('s').type('k').type('i').type('d')
     self.assertEqual(tuple(cursor.square), (5, 0))
     self.assertEqual([square.guess for square in word], ['S', 'K', 'I', 'D', None])
     cursor = cursor.backspace()
     self.assertEqual(tuple(cursor.square), (4, 0))
     self.assertEqual([square.guess for square in word], ['S', 'K', 'I', None, None])
     cursor = cursor.type('e').type('d')
     self.assertEqual(tuple(cursor.square), (0, 1))
     self.assertEqual([square.guess for square in word], ['S', 'K', 'I', 'E', 'D'])
     cursor = cursor.b().type('r')
     self.assertEqual(tuple(cursor.square), (2, 0))
     self.assertEqual([square.guess for square in word], ['R', 'K', 'I', 'E', 'D'])
     cursor = cursor.x()
     self.assertEqual(tuple(cursor.square), (2, 0))
     self.assertEqual([square.guess for square in word], ['R', None, 'I', 'E', 'D'])
     cursor = cursor.type('a').r('c')
     self.assertEqual(tuple(cursor.square), (3, 0))
     self.assertEqual([square.guess for square in word], ['R', 'A', 'C', 'E', 'D'])