Beispiel #1
0
class TextEditorTest(AudioAppTest):
    def setUp(self):
        self.outfile = tempfile.NamedTemporaryFile()
        self.args = ['text_editor.py', self.outfile.name]
        self.app = TextEditor(self.args)
        super(TextEditorTest, self).setUp()

    def test_simple(self):
        # should speak previous word after non-alpha character
        self.app.simulate_typing('hello world ')
        self.assertJustSaid('world')

        # should speak character just deleted
        self.app.simulate_keystroke(curses.ascii.DEL)
        self.assertJustSaid('space')

        # should play tone when attempting to move cursor beyond bounds
        self.app.simulate_keystroke(curses.KEY_RIGHT)
        self.assertJustSaid('[tone]')

        for i in range(5):  # move cursor five characters left
            self.app.simulate_keystroke(curses.KEY_LEFT)
        self.app.simulate_typing('awesome ')

        self.app.simulate_keystroke(curses.ascii.ESC)  # quit
        self.outfile.seek(0)

        # check that contents were properly saved
        self.assertEqual(self.outfile.read(), "hello awesome world")

    def test_symbols(self):
        self.app.simulate_typing('foo')
        self.app.simulate_keystroke(curses.ascii.ESC)  # quit

        self.app = TextEditor(self.args)  # re-open
        self.app.simulate_typing('~ ~')
        self.app.simulate_keystroke(curses.ascii.ESC)  # quit

        self.outfile.seek(0)
        self.assertEqual(self.outfile.read(), "~ ~foo")

    def test_gibberish(self):
        # type n random printable characters
        n = 100
        self.app.simulate_typing(
            random.choice(string.printable) for i in range(n))
        self.app.simulate_keystroke(curses.ascii.ESC)  # quit
        self.outfile.seek(0)

        self.assertEqual(n, len(self.outfile.read()))

    def test_sentence(self):
        self.app.simulate_typing('Hello there. This is a second sentence.')
        self.assertJustSaid('this is a second sentence')