~inkscape.dev/inkscape-devlibs64/trunk

« back to all changes in this revision

Viewing changes to python/Lib/idlelib/idle_test/test_autoexpand.py

  • Committer: Eduard Braun
  • Date: 2016-10-22 16:51:19 UTC
  • Revision ID: eduard.braun2@gmx.de-20161022165119-9eosgy6lp8j1kzli
Update Python to version 2.7.12

Included modules:
  coverage 4.2
  lxml 3.6.4
  numpy 1.11.2
  scour 0.35
  six 1.10.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
"""Unit tests for idlelib.AutoExpand"""
2
 
import unittest
3
 
from test.test_support import requires
4
 
from Tkinter import Text, Tk
5
 
#from idlelib.idle_test.mock_tk import Text
6
 
from idlelib.AutoExpand import AutoExpand
7
 
 
8
 
 
9
 
class Dummy_Editwin:
10
 
    # AutoExpand.__init__ only needs .text
11
 
    def __init__(self, text):
12
 
        self.text = text
13
 
 
14
 
class AutoExpandTest(unittest.TestCase):
15
 
 
16
 
    @classmethod
17
 
    def setUpClass(cls):
18
 
        if 'Tkinter' in str(Text):
19
 
            requires('gui')
20
 
            cls.tk = Tk()
21
 
            cls.text = Text(cls.tk)
22
 
        else:
23
 
            cls.text = Text()
24
 
        cls.auto_expand = AutoExpand(Dummy_Editwin(cls.text))
25
 
 
26
 
    @classmethod
27
 
    def tearDownClass(cls):
28
 
        if hasattr(cls, 'tk'):
29
 
            cls.tk.destroy()
30
 
            del cls.tk
31
 
        del cls.text, cls.auto_expand
32
 
 
33
 
    def tearDown(self):
34
 
        self.text.delete('1.0', 'end')
35
 
 
36
 
    def test_get_prevword(self):
37
 
        text = self.text
38
 
        previous = self.auto_expand.getprevword
39
 
        equal = self.assertEqual
40
 
 
41
 
        equal(previous(), '')
42
 
 
43
 
        text.insert('insert', 't')
44
 
        equal(previous(), 't')
45
 
 
46
 
        text.insert('insert', 'his')
47
 
        equal(previous(), 'this')
48
 
 
49
 
        text.insert('insert', ' ')
50
 
        equal(previous(), '')
51
 
 
52
 
        text.insert('insert', 'is')
53
 
        equal(previous(), 'is')
54
 
 
55
 
        text.insert('insert', '\nsample\nstring')
56
 
        equal(previous(), 'string')
57
 
 
58
 
        text.delete('3.0', 'insert')
59
 
        equal(previous(), '')
60
 
 
61
 
        text.delete('1.0', 'end')
62
 
        equal(previous(), '')
63
 
 
64
 
    def test_before_only(self):
65
 
        previous = self.auto_expand.getprevword
66
 
        expand = self.auto_expand.expand_word_event
67
 
        equal = self.assertEqual
68
 
 
69
 
        self.text.insert('insert', 'ab ac bx ad ab a')
70
 
        equal(self.auto_expand.getwords(), ['ab', 'ad', 'ac', 'a'])
71
 
        expand('event')
72
 
        equal(previous(), 'ab')
73
 
        expand('event')
74
 
        equal(previous(), 'ad')
75
 
        expand('event')
76
 
        equal(previous(), 'ac')
77
 
        expand('event')
78
 
        equal(previous(), 'a')
79
 
 
80
 
    def test_after_only(self):
81
 
        # Also add punctuation 'noise' that shoud be ignored.
82
 
        text = self.text
83
 
        previous = self.auto_expand.getprevword
84
 
        expand = self.auto_expand.expand_word_event
85
 
        equal = self.assertEqual
86
 
 
87
 
        text.insert('insert', 'a, [ab] ac: () bx"" cd ac= ad ya')
88
 
        text.mark_set('insert', '1.1')
89
 
        equal(self.auto_expand.getwords(), ['ab', 'ac', 'ad', 'a'])
90
 
        expand('event')
91
 
        equal(previous(), 'ab')
92
 
        expand('event')
93
 
        equal(previous(), 'ac')
94
 
        expand('event')
95
 
        equal(previous(), 'ad')
96
 
        expand('event')
97
 
        equal(previous(), 'a')
98
 
 
99
 
    def test_both_before_after(self):
100
 
        text = self.text
101
 
        previous = self.auto_expand.getprevword
102
 
        expand = self.auto_expand.expand_word_event
103
 
        equal = self.assertEqual
104
 
 
105
 
        text.insert('insert', 'ab xy yz\n')
106
 
        text.insert('insert', 'a ac by ac')
107
 
 
108
 
        text.mark_set('insert', '2.1')
109
 
        equal(self.auto_expand.getwords(), ['ab', 'ac', 'a'])
110
 
        expand('event')
111
 
        equal(previous(), 'ab')
112
 
        expand('event')
113
 
        equal(previous(), 'ac')
114
 
        expand('event')
115
 
        equal(previous(), 'a')
116
 
 
117
 
    def test_other_expand_cases(self):
118
 
        text = self.text
119
 
        expand = self.auto_expand.expand_word_event
120
 
        equal = self.assertEqual
121
 
 
122
 
        # no expansion candidate found
123
 
        equal(self.auto_expand.getwords(), [])
124
 
        equal(expand('event'), 'break')
125
 
 
126
 
        text.insert('insert', 'bx cy dz a')
127
 
        equal(self.auto_expand.getwords(), [])
128
 
 
129
 
        # reset state by successfully expanding once
130
 
        # move cursor to another position and expand again
131
 
        text.insert('insert', 'ac xy a ac ad a')
132
 
        text.mark_set('insert', '1.7')
133
 
        expand('event')
134
 
        initial_state = self.auto_expand.state
135
 
        text.mark_set('insert', '1.end')
136
 
        expand('event')
137
 
        new_state = self.auto_expand.state
138
 
        self.assertNotEqual(initial_state, new_state)
139
 
 
140
 
if __name__ == '__main__':
141
 
    unittest.main(verbosity=2)