Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/sugar/tutorius/tests/gtkutilstests.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/sugar/tutorius/tests/gtkutilstests.py')
-rw-r--r--src/sugar/tutorius/tests/gtkutilstests.py80
1 files changed, 74 insertions, 6 deletions
diff --git a/src/sugar/tutorius/tests/gtkutilstests.py b/src/sugar/tutorius/tests/gtkutilstests.py
index fb9a20b..5dfd363 100644
--- a/src/sugar/tutorius/tests/gtkutilstests.py
+++ b/src/sugar/tutorius/tests/gtkutilstests.py
@@ -26,16 +26,22 @@ import unittest
import logging
import gtk, gobject
-from sugar.tutorius.gtkutils import find_widget, register_signals_numbered, register_signals
+from sugar.tutorius.gtkutils import find_widget, register_signals_numbered, register_signals, get_children
class SignalCatcher(object):
+ """Test class that store arguments received on it's callback method.
+ Useful for testing callbacks"""
def __init__(self):
- self.data = []
+ """Constructor"""
+ self.data = None
def callback(self, *args):
+ """Callback function, stores argument list in self.data"""
self.data = args
def disconnect_handlers(hlist):
+ """Disconnect handles in handler list. hlist must be a list of
+ two-tuples (widget, handler_id)"""
for widget, handler in hlist:
try:
widget.handler_disconnect(handler)
@@ -97,6 +103,8 @@ class GtkUtilsTests(unittest.TestCase):
def test_named(self):
#def register_signals(target, handler, prefix=None, max_depth=None):
s=SignalCatcher()
+
+ #Test 0 depth
handler_list = register_signals(self.top, s.callback, max_depth=0)
#remove duplicates in widget list
@@ -104,12 +112,36 @@ class GtkUtilsTests(unittest.TestCase):
assert len(widget_list) == 1, "register_signals should not have recursed (%d objects registered)" % len(widget_list)
- while gtk.events_pending():
- gtk.main_iteration(block=False)
+ assert widget_list[0] == self.top, "register_signals should have gotten only the top"
+
+ disconnect_handlers(handler_list)
+
+ #Test 2 depth
+ handler_list = register_signals(self.top, s.callback, max_depth=2)
+
+ #remove duplicates in widget list
+ widget_list = dict.fromkeys([w for w, h in handler_list]).keys()
+
+ assert len(widget_list) == 5, "expected %d objects (got %d)" % (len(widget_list), 5)
+
+ disconnect_handlers(handler_list)
+
+ #Test Infinite depth
+ handler_list = register_signals(self.top, s.callback, max_depth=None)
+
+ #remove duplicates in widget list
+ widget_list = dict.fromkeys([w for w, h in handler_list]).keys()
+
+ assert len(widget_list) == 7, "expected %d objects (got %d)" % (len(widget_list), 7)
+
+ disconnect_handlers(handler_list)
+
def test_numbered(self):
s=SignalCatcher()
#def register_signals_numbered(target, handler, prefix="0", max_depth=None):
+
+ #Test 0 depth
handler_list = register_signals_numbered(self.top, s.callback, max_depth=0)
#remove duplicates in widget list
@@ -117,15 +149,51 @@ class GtkUtilsTests(unittest.TestCase):
assert len(widget_list) == 1, "register_signals should not have recursed (%d objects registered)" % len(widget_list)
- while gtk.events_pending():
- gtk.main_iteration(block=False)
+ assert widget_list[0] == self.top, "register_signals should have gotten only the top"
+
+ disconnect_handlers(handler_list)
+
+ #Test 1 depth
+ handler_list = register_signals_numbered(self.top, s.callback, max_depth=1)
+
+ #remove duplicates in widget list
+ widget_list = dict.fromkeys([w for w, h in handler_list]).keys()
+
+ assert len(widget_list) == 2, "expected %d objects (got %d)" % (len(widget_list), 2)
+
+ disconnect_handlers(handler_list)
+
+ #Test Infinite depth
+ handler_list = register_signals_numbered(self.top, s.callback, max_depth=None)
+
+ #remove duplicates in widget list
+ widget_list = dict.fromkeys([w for w, h in handler_list]).keys()
+
+ assert len(widget_list) == 7, "expected %d objects (got %d)" % (len(widget_list), 7)
+
+ disconnect_handlers(handler_list)
+
def test_find_widget(self):
+ #Test individual values in the defined widgets
for widget in self.widgets.values():
f = find_widget(self.top, widget["numbered"])
assert f is widget["widget"], "Widget %s found with path %s, expected %s" % (f, widget["numbered"], widget["widget"])
+ #Test out of index
+ f = find_widget(self.top, "0.99.1.2")
+ assert f is self.top, "Should have returned top widget"
+
+ def test_notwidget(self):
+ """Test the get_children function"""
+ o = object()
+ res = get_children(o)
+
+ assert len(res) == 0, "object has no children"
+ top_children = get_children(self.top)
+ expected = [self.widgets["hbox0"]["widget"],]
+ assert top_children == expected, "expected %s for top's children, got %s" % (str(expected),str(top_children))
if __name__ == "__main__":
unittest.main()