1c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedyimport unittest
2c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedyimport idlelib.RstripExtension as rs
3c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedyfrom idlelib.idle_test.mock_idle import Editor
4c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy
5c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedyclass rstripTest(unittest.TestCase):
6c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy
7c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy    def test_rstrip_line(self):
8c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy        editor = Editor()
9c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy        text = editor.text
10c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy        do_rstrip = rs.RstripExtension(editor).do_rstrip
11c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy
12c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy        do_rstrip()
13c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy        self.assertEqual(text.get('1.0', 'insert'), '')
14c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy        text.insert('1.0', '     ')
15c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy        do_rstrip()
16c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy        self.assertEqual(text.get('1.0', 'insert'), '')
17c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy        text.insert('1.0', '     \n')
18c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy        do_rstrip()
19c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy        self.assertEqual(text.get('1.0', 'insert'), '\n')
20c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy
21c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy    def test_rstrip_multiple(self):
22c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy        editor = Editor()
23c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy        #  Uncomment following to verify that test passes with real widgets.
24c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy##        from idlelib.EditorWindow import EditorWindow as Editor
25c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy##        from tkinter import Tk
26c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy##        editor = Editor(root=Tk())
27c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy        text = editor.text
28c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy        do_rstrip = rs.RstripExtension(editor).do_rstrip
29c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy
30c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy        original = (
31c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy            "Line with an ending tab    \n"
32c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy            "Line ending in 5 spaces     \n"
33c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy            "Linewithnospaces\n"
34c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy            "    indented line\n"
35c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy            "    indented line with trailing space \n"
36c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy            "    ")
37c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy        stripped = (
38c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy            "Line with an ending tab\n"
39c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy            "Line ending in 5 spaces\n"
40c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy            "Linewithnospaces\n"
41c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy            "    indented line\n"
42c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy            "    indented line with trailing space\n")
43c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy
44c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy        text.insert('1.0', original)
45c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy        do_rstrip()
46c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy        self.assertEqual(text.get('1.0', 'insert'), stripped)
47c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy
48c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedyif __name__ == '__main__':
49c8a198ce0297139b6dabeddca15919f8680e35faTerry Jan Reedy    unittest.main(verbosity=2, exit=False)
50