1
__license__ = "MIT <http://www.opensource.org/licenses/mit-license.php>"
2
__author__ = "Tiago Cogumbreiro <cogumbreiro@users.sf.net>"
3
__copyright__ = "Copyright 2005, Tiago Cogumbreiro"
10
list_children = lambda *args, **kwargs: list(iterate_widget_children(*args, **kwargs))
11
list_parents = lambda *args, **kwargs: list(iterate_widget_parents(*args, **kwargs))
12
count_children = lambda *args, **kwargs: len(list_children(*args, **kwargs))
13
count_parents = lambda *args, **kwargs: len(list_parents(*args, **kwargs))
15
class TestWidgetIterators(unittest.TestCase):
16
def test_count_children(self):
17
container = gtk.VBox()
19
# The number of children of the container starts at empty
20
self.assertEqual(count_children(container), 0)
21
# The number of children of the container starts at empty
22
self.assertEqual(count_children(container, recurse_children=True), 0)
24
container2 = gtk.VBox()
25
# Add a sub-container to a container
26
container.add(container2)
27
# It affects the container where it was added
29
self.assertEqual(count_children(container), 1)
30
assert list_children(container)[0] is container2
32
# It affects the container where it was added
33
self.assertEqual(count_children(container, recurse_children=True), 1)
34
assert list_children(container, recurse_children=True)[0] is container2
36
# The number of children of the sub-container starts at empty
37
self.assertEqual(count_children(container2), 0)
38
# The number of children of the sub-container starts at empty
39
self.assertEqual(count_children(container2, recurse_children=True), 0)
41
# Adding a container in the sub-container
44
# It does not affect the children of main container
45
self.assertEqual(count_children(container), 1)
46
self.assertEqual(list_children(container), [container2])
48
# It affects the list of all children (recurring)
49
self.assertEqual(count_children(container, recurse_children=True), 2)
50
self.assertEqual(list_children(container, recurse_children=True), [container2, lbl1])
52
# It affects the container where it was added
53
self.assertEqual(count_children(container2), 1)
54
self.assertEqual(list_children(container2), [lbl1])
56
# It affects the container where it was added
57
self.assertEqual(count_children(container2, recurse_children=True), 1)
58
self.assertEqual(list_children(container2, recurse_children=True), [lbl1])
60
# Adding a child to the main container should not affect the count of elements
63
self.assertEqual(count_children(container), 2)
64
self.assertEqual(list_children(container), [container2, lbl2])
66
self.assertEqual(count_children(container, recurse_children=True), 3)
67
self.assertEqual(list_children(container, recurse_children=True), [container2, lbl1, lbl2])
69
self.assertEqual(count_children(container2), 1)
70
self.assertEqual(list_children(container2), [lbl1])
72
self.assertEqual(count_children(container2, recurse_children=True), 1)
73
self.assertEqual(list_children(container2, recurse_children=True), [lbl1])
75
def test_iterate_parents(self):
77
self.assertEqual(list_parents(vbox1),[])
81
self.assertEqual(list_parents(vbox2),[vbox1])
85
self.assertEqual(list_parents(vbox3),[vbox1])
89
self.assertEqual(list_parents(vbox4),[vbox2, vbox1])
93
self.assertEqual(list_parents(vbox5),[vbox4, vbox2, vbox1])
95
def test_get_root_parent(self):
96
# Adding widgets in different depths maintains the root widget
98
self.assertEqual(get_root_parent(vbox1), None)
102
self.assertEqual(get_root_parent(vbox2), vbox1)
106
self.assertEqual(get_root_parent(vbox3), vbox1)
107
self.assertEqual(get_root_parent(vbox2), vbox1)
109
def test_find_child_widget(self):
112
self.assertEqual(find_child_widget(w1, "w1"), w1)
113
self.assertEqual(find_child_widget(w1, "foo"), None)
118
self.assertEqual(find_child_widget(w1, "w2"), w2)
123
self.assertEqual(find_child_widget(w1, "w3"), w3)
124
self.assertEqual(find_child_widget(w2, "w3"), w3)
125
self.assertEqual(find_child_widget(w3, "w3"), w3)
127
def test_find_parent_widget(self):
130
self.assertEqual(find_parent_widget(w1, "w1"), w1)
131
self.assertEqual(find_parent_widget(w1, "w1", find_self=False), None)
132
self.assertEqual(find_parent_widget(w1, "foo"), None)
137
self.assertEqual(find_parent_widget(w2, "w1"), w1)
142
self.assertEqual(find_parent_widget(w1, "w1"), w1)
143
self.assertEqual(find_parent_widget(w1, "w1", find_self=False), None)
144
self.assertEqual(find_parent_widget(w2, "w1"), w1)
145
self.assertEqual(find_parent_widget(w3, "w1"), w1)
147
def test_ListSpec(self):
148
spec = ListSpec(("A", gobject.TYPE_STRING), ("B", gobject.TYPE_INT))
149
self.assertEqual(spec.A, 0)
150
self.assertEqual(spec.B, 1)
152
store = spec.create_list_store()
153
self.assertEqual(store.get_n_columns(), 2)
154
self.assertEqual(store.get_column_type(spec.A), gobject.TYPE_STRING)
155
self.assertEqual(store.get_column_type(spec.B), gobject.TYPE_INT)
157
row = spec.to_tree_row({spec.A: "foo", spec.B: 1})
158
self.assertEqual(row, ["foo", 1])
162
self.assertEqual(row[spec.A], "foo")
163
self.assertEqual(row[spec.B], 1)
169
if __name__ == '__main__':
b'\\ No newline at end of file'