~ubuntu-branches/ubuntu/trusty/python3.4/trusty-proposed

« back to all changes in this revision

Viewing changes to Lib/tkinter/test/test_tkinter/test_variables.py

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2013-11-25 09:44:27 UTC
  • Revision ID: package-import@ubuntu.com-20131125094427-lzxj8ap5w01lmo7f
Tags: upstream-3.4~b1
ImportĀ upstreamĀ versionĀ 3.4~b1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import unittest
 
2
 
 
3
from tkinter import Variable, StringVar, IntVar, DoubleVar, BooleanVar, Tk
 
4
 
 
5
 
 
6
class Var(Variable):
 
7
 
 
8
    _default = "default"
 
9
    side_effect = False
 
10
 
 
11
    def set(self, value):
 
12
        self.side_effect = True
 
13
        super().set(value)
 
14
 
 
15
 
 
16
class TestBase(unittest.TestCase):
 
17
 
 
18
    def setUp(self):
 
19
        self.root = Tk()
 
20
 
 
21
    def tearDown(self):
 
22
        self.root.destroy()
 
23
 
 
24
 
 
25
class TestVariable(TestBase):
 
26
 
 
27
    def test_default(self):
 
28
        v = Variable(self.root)
 
29
        self.assertEqual("", v.get())
 
30
        self.assertRegex(str(v), r"^PY_VAR(\d+)$")
 
31
 
 
32
    def test_name_and_value(self):
 
33
        v = Variable(self.root, "sample string", "varname")
 
34
        self.assertEqual("sample string", v.get())
 
35
        self.assertEqual("varname", str(v))
 
36
 
 
37
    def test___del__(self):
 
38
        self.assertFalse(self.root.call("info", "exists", "varname"))
 
39
        v = Variable(self.root, "sample string", "varname")
 
40
        self.assertTrue(self.root.call("info", "exists", "varname"))
 
41
        del v
 
42
        self.assertFalse(self.root.call("info", "exists", "varname"))
 
43
 
 
44
    def test_dont_unset_not_existing(self):
 
45
        self.assertFalse(self.root.call("info", "exists", "varname"))
 
46
        v1 = Variable(self.root, name="name")
 
47
        v2 = Variable(self.root, name="name")
 
48
        del v1
 
49
        self.assertFalse(self.root.call("info", "exists", "name"))
 
50
        # shouldn't raise exception
 
51
        del v2
 
52
        self.assertFalse(self.root.call("info", "exists", "name"))
 
53
 
 
54
    def test___eq__(self):
 
55
        # values doesn't matter, only class and name are checked
 
56
        v1 = Variable(self.root, name="abc")
 
57
        v2 = Variable(self.root, name="abc")
 
58
        self.assertEqual(v1, v2)
 
59
 
 
60
        v3 = Variable(self.root, name="abc")
 
61
        v4 = StringVar(self.root, name="abc")
 
62
        self.assertNotEqual(v3, v4)
 
63
 
 
64
    def test_invalid_name(self):
 
65
        with self.assertRaises(TypeError):
 
66
            Variable(self.root, name=123)
 
67
 
 
68
    def test_initialize(self):
 
69
        v = Var()
 
70
        self.assertFalse(v.side_effect)
 
71
        v.set("value")
 
72
        self.assertTrue(v.side_effect)
 
73
 
 
74
 
 
75
class TestStringVar(TestBase):
 
76
 
 
77
    def test_default(self):
 
78
        v = StringVar(self.root)
 
79
        self.assertEqual("", v.get())
 
80
 
 
81
    def test_get(self):
 
82
        v = StringVar(self.root, "abc", "name")
 
83
        self.assertEqual("abc", v.get())
 
84
        self.root.globalsetvar("name", "value")
 
85
        self.assertEqual("value", v.get())
 
86
 
 
87
 
 
88
class TestIntVar(TestBase):
 
89
 
 
90
    def test_default(self):
 
91
        v = IntVar(self.root)
 
92
        self.assertEqual(0, v.get())
 
93
 
 
94
    def test_get(self):
 
95
        v = IntVar(self.root, 123, "name")
 
96
        self.assertEqual(123, v.get())
 
97
        self.root.globalsetvar("name", "345")
 
98
        self.assertEqual(345, v.get())
 
99
 
 
100
    def test_invalid_value(self):
 
101
        v = IntVar(self.root, name="name")
 
102
        self.root.globalsetvar("name", "value")
 
103
        with self.assertRaises(ValueError):
 
104
            v.get()
 
105
        self.root.globalsetvar("name", "345.0")
 
106
        with self.assertRaises(ValueError):
 
107
            v.get()
 
108
 
 
109
 
 
110
class TestDoubleVar(TestBase):
 
111
 
 
112
    def test_default(self):
 
113
        v = DoubleVar(self.root)
 
114
        self.assertEqual(0.0, v.get())
 
115
 
 
116
    def test_get(self):
 
117
        v = DoubleVar(self.root, 1.23, "name")
 
118
        self.assertAlmostEqual(1.23, v.get())
 
119
        self.root.globalsetvar("name", "3.45")
 
120
        self.assertAlmostEqual(3.45, v.get())
 
121
 
 
122
    def test_get_from_int(self):
 
123
        v = DoubleVar(self.root, 1.23, "name")
 
124
        self.assertAlmostEqual(1.23, v.get())
 
125
        self.root.globalsetvar("name", "3.45")
 
126
        self.assertAlmostEqual(3.45, v.get())
 
127
        self.root.globalsetvar("name", "456")
 
128
        self.assertAlmostEqual(456, v.get())
 
129
 
 
130
    def test_invalid_value(self):
 
131
        v = DoubleVar(self.root, name="name")
 
132
        self.root.globalsetvar("name", "value")
 
133
        with self.assertRaises(ValueError):
 
134
            v.get()
 
135
 
 
136
 
 
137
class TestBooleanVar(TestBase):
 
138
 
 
139
    def test_default(self):
 
140
        v = BooleanVar(self.root)
 
141
        self.assertEqual(False, v.get())
 
142
 
 
143
    def test_get(self):
 
144
        v = BooleanVar(self.root, True, "name")
 
145
        self.assertAlmostEqual(True, v.get())
 
146
        self.root.globalsetvar("name", "0")
 
147
        self.assertAlmostEqual(False, v.get())
 
148
 
 
149
    def test_invalid_value_domain(self):
 
150
        v = BooleanVar(self.root, name="name")
 
151
        self.root.globalsetvar("name", "value")
 
152
        with self.assertRaises(ValueError):
 
153
            v.get()
 
154
        self.root.globalsetvar("name", "1.0")
 
155
        with self.assertRaises(ValueError):
 
156
            v.get()
 
157
 
 
158
 
 
159
tests_gui = (TestVariable, TestStringVar, TestIntVar,
 
160
             TestDoubleVar, TestBooleanVar)
 
161
 
 
162
 
 
163
if __name__ == "__main__":
 
164
    from test.support import run_unittest
 
165
    run_unittest(*tests_gui)