def test_solve_answer_with_spaces(self):
        cw = Crossword(1, 1)
        cw.add_regex(1, 'A', r'\s')
        self.assertEqual(cw.solve(), ' ')

        cw = Crossword(1, 1)
        cw.add_regex(1, 'A', r'\W')
        self.assertEqual(cw.solve(), ' ')

        # from http://regexcrossword.com/playerpuzzles/f2a55cca-37fe-42e1-967a-56b97e1fc612
        cw = Crossword(5, 3)
        cw.remove_from_possibility('1234567890')
        cw.add_regex(1, 'A', r'[PDA][PAPER]*[PD]A')
        cw.add_regex(2, 'A', r'R[^RA]\s(R.|.R)')
        cw.add_regex(3, 'A', r'\W.NU[\\S]')
        cw.add_regex(1, 'D', r'[O-T]{2}\s?')
        cw.add_regex(2, 'D', r'[^PEA][ARE]A')
        cw.add_regex(3, 'D', r'(HE|F\s|E\s).')
        cw.add_regex(4, 'D', r'[PFCG](.)\1')
        cw.add_regex(5, 'D', r'([CA])RS')
        # this solution is offensive and I do not condone it
        self.assertEqual(cw.solve(), 'PREPARE UR ANUS')
    def test_solve_answer_with_spaces(self):
        cw = Crossword(1, 1)
        cw.add_regex(1, 'A', r'\s')
        self.assertEqual(cw.solve(), ' ')

        cw = Crossword(1, 1)
        cw.add_regex(1, 'A', r'\W')
        self.assertEqual(cw.solve(), ' ')

        # from http://regexcrossword.com/playerpuzzles/f2a55cca-37fe-42e1-967a-56b97e1fc612
        cw = Crossword(5, 3)
        cw.remove_from_possibility('1234567890')
        cw.add_regex(1, 'A', r'[PDA][PAPER]*[PD]A')
        cw.add_regex(2, 'A', r'R[^RA]\s(R.|.R)')
        cw.add_regex(3, 'A', r'\W.NU[\\S]')
        cw.add_regex(1, 'D', r'[O-T]{2}\s?')
        cw.add_regex(2, 'D', r'[^PEA][ARE]A')
        cw.add_regex(3, 'D', r'(HE|F\s|E\s).')
        cw.add_regex(4, 'D', r'[PFCG](.)\1')
        cw.add_regex(5, 'D', r'([CA])RS')
        # this solution is offensive and I do not condone it
        self.assertEqual(cw.solve(), 'PREPARE UR ANUS')