1 # -*- Mode: Python; py-indent-offset: 4 -*-
2 # vim: tabstop=4 shiftwidth=4 expandtab
8 sys.path.insert(0, "../")
10 from compathelper import _long, _unicode, _bytes
12 from gi.repository import GLib
13 from gi.repository import GObject
14 from gi.repository import Gdk
15 from gi.repository import Gtk
16 from gi.repository import Gio
17 from gi.repository import Pango
18 from gi.repository import GdkPixbuf
19 import gi.overrides as overrides
22 class TestGLib(unittest.TestCase):
24 def test_gvariant_create(self):
27 variant = GLib.Variant('i', 42)
28 self.assertTrue(isinstance(variant, GLib.Variant))
29 self.assertEquals(variant.get_int32(), 42)
31 variant = GLib.Variant('s', '')
32 self.assertTrue(isinstance(variant, GLib.Variant))
33 self.assertEquals(variant.get_string(), '')
35 variant = GLib.Variant('s', 'hello')
36 self.assertTrue(isinstance(variant, GLib.Variant))
37 self.assertEquals(variant.get_string(), 'hello')
40 variant = GLib.Variant('v', GLib.Variant('i', 42))
41 self.assertTrue(isinstance(variant, GLib.Variant))
42 self.assertTrue(isinstance(variant.get_variant(), GLib.Variant))
43 self.assertEqual(variant.get_type_string(), 'v')
44 self.assertEqual(variant.get_variant().get_type_string(), 'i')
45 self.assertEquals(variant.get_variant().get_int32(), 42)
47 variant = GLib.Variant('v', GLib.Variant('v', GLib.Variant('i', 42)))
48 self.assertEqual(variant.get_type_string(), 'v')
49 self.assertEqual(variant.get_variant().get_type_string(), 'v')
50 self.assertEqual(variant.get_variant().get_variant().get_type_string(), 'i')
51 self.assertEquals(variant.get_variant().get_variant().get_int32(), 42)
55 variant = GLib.Variant('()', ())
56 self.assertEqual(variant.get_type_string(), '()')
57 self.assertEquals(variant.n_children(), 0)
59 variant = GLib.Variant('(i)', (3,))
60 self.assertEqual(variant.get_type_string(), '(i)')
61 self.assertTrue(isinstance(variant, GLib.Variant))
62 self.assertEquals(variant.n_children(), 1)
63 self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
64 self.assertEquals(variant.get_child_value(0).get_int32(), 3)
66 variant = GLib.Variant('(ss)', ('mec', 'mac'))
67 self.assertEqual(variant.get_type_string(), '(ss)')
68 self.assertTrue(isinstance(variant, GLib.Variant))
69 self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
70 self.assertTrue(isinstance(variant.get_child_value(1), GLib.Variant))
71 self.assertEquals(variant.get_child_value(0).get_string(), 'mec')
72 self.assertEquals(variant.get_child_value(1).get_string(), 'mac')
75 variant = GLib.Variant('((si)(ub))', (('hello', -1), (42, True)))
76 self.assertEqual(variant.get_type_string(), '((si)(ub))')
77 self.assertEqual(variant.unpack(), (('hello', -1), (_long(42), True)))
81 variant = GLib.Variant('a{si}', {})
82 self.assertTrue(isinstance(variant, GLib.Variant))
83 self.assertEqual(variant.get_type_string(), 'a{si}')
84 self.assertEquals(variant.n_children(), 0)
86 variant = GLib.Variant('a{si}', {'': 1, 'key1': 2, 'key2': 3})
87 self.assertEqual(variant.get_type_string(), 'a{si}')
88 self.assertTrue(isinstance(variant, GLib.Variant))
89 self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
90 self.assertTrue(isinstance(variant.get_child_value(1), GLib.Variant))
91 self.assertTrue(isinstance(variant.get_child_value(2), GLib.Variant))
92 self.assertEqual(variant.unpack(), {'': 1, 'key1': 2, 'key2': 3})
95 variant = GLib.Variant('a{sa{si}}', {})
96 self.assertTrue(isinstance(variant, GLib.Variant))
97 self.assertEqual(variant.get_type_string(), 'a{sa{si}}')
98 self.assertEquals(variant.n_children(), 0)
100 d = {'': {'': 1, 'keyn1': 2},
101 'key1': {'key11': 11, 'key12': 12}}
102 variant = GLib.Variant('a{sa{si}}', d)
103 self.assertEqual(variant.get_type_string(), 'a{sa{si}}')
104 self.assertTrue(isinstance(variant, GLib.Variant))
105 self.assertEqual(variant.unpack(), d)
109 variant = GLib.Variant('ai', [])
110 self.assertEqual(variant.get_type_string(), 'ai')
111 self.assertEquals(variant.n_children(), 0)
113 variant = GLib.Variant('ai', [1, 2])
114 self.assertEqual(variant.get_type_string(), 'ai')
115 self.assertTrue(isinstance(variant, GLib.Variant))
116 self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
117 self.assertTrue(isinstance(variant.get_child_value(1), GLib.Variant))
118 self.assertEquals(variant.get_child_value(0).get_int32(), 1)
119 self.assertEquals(variant.get_child_value(1).get_int32(), 2)
121 variant = GLib.Variant('as', [])
122 self.assertEqual(variant.get_type_string(), 'as')
123 self.assertEquals(variant.n_children(), 0)
125 variant = GLib.Variant('as', [''])
126 self.assertEqual(variant.get_type_string(), 'as')
127 self.assertTrue(isinstance(variant, GLib.Variant))
128 self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
129 self.assertEquals(variant.get_child_value(0).get_string(), '')
131 variant = GLib.Variant('as', ['hello', 'world'])
132 self.assertEqual(variant.get_type_string(), 'as')
133 self.assertTrue(isinstance(variant, GLib.Variant))
134 self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
135 self.assertTrue(isinstance(variant.get_child_value(1), GLib.Variant))
136 self.assertEquals(variant.get_child_value(0).get_string(), 'hello')
137 self.assertEquals(variant.get_child_value(1).get_string(), 'world')
140 variant = GLib.Variant('aai', [])
141 self.assertEqual(variant.get_type_string(), 'aai')
142 self.assertEquals(variant.n_children(), 0)
144 variant = GLib.Variant('aai', [[]])
145 self.assertEqual(variant.get_type_string(), 'aai')
146 self.assertEquals(variant.n_children(), 1)
147 self.assertEquals(variant.get_child_value(0).n_children(), 0)
149 variant = GLib.Variant('aai', [[1, 2], [3, 4, 5]])
150 self.assertEqual(variant.get_type_string(), 'aai')
151 self.assertEquals(variant.unpack(), [[1, 2], [3, 4, 5]])
157 variant = GLib.Variant('(as)', ([],))
158 self.assertEqual(variant.get_type_string(), '(as)')
159 self.assertEquals(variant.n_children(), 1)
160 self.assertEquals(variant.get_child_value(0).n_children(), 0)
162 variant = GLib.Variant('(as)', ([''],))
163 self.assertEqual(variant.get_type_string(), '(as)')
164 self.assertEquals(variant.n_children(), 1)
165 self.assertEquals(variant.get_child_value(0).n_children(), 1)
166 self.assertEquals(variant.get_child_value(0).get_child_value(0).get_string(), '')
168 variant = GLib.Variant('(as)', (['hello'],))
169 self.assertEqual(variant.get_type_string(), '(as)')
170 self.assertEquals(variant.n_children(), 1)
171 self.assertEquals(variant.get_child_value(0).n_children(), 1)
172 self.assertEquals(variant.get_child_value(0).get_child_value(0).get_string(), 'hello')
174 obj = {'a1': (1, True), 'a2': (2, False)}
175 variant = GLib.Variant('a{s(ib)}', obj)
176 self.assertEqual(variant.get_type_string(), 'a{s(ib)}')
177 self.assertEqual(variant.unpack(), obj)
179 obj = {'a1': (1, GLib.Variant('b', True)), 'a2': (2, GLib.Variant('y', 255))}
180 variant = GLib.Variant('a{s(iv)}', obj)
181 self.assertEqual(variant.get_type_string(), 'a{s(iv)}')
182 self.assertEqual(variant.unpack(), {'a1': (1, True), 'a2': (2, 255)})
184 obj = (1, {'a': {'a1': True, 'a2': False},
189 variant = GLib.Variant('(ia{sa{sb}}s)', obj)
190 self.assertEqual(variant.get_type_string(), '(ia{sa{sb}}s)')
191 self.assertEqual(variant.unpack(), obj)
193 obj = {"frequency": GLib.Variant('t', 738000000),
194 "hierarchy": GLib.Variant('i', 0),
195 "bandwidth": GLib.Variant('x', 8),
196 "code-rate-hp": GLib.Variant('d', 2.0/3.0),
197 "constellation": GLib.Variant('s', "QAM16"),
198 "guard-interval": GLib.Variant('u', 4),}
199 variant = GLib.Variant('a{sv}', obj)
200 self.assertEqual(variant.get_type_string(), 'a{sv}')
201 self.assertEqual(variant.unpack(), {"frequency": 738000000,
204 "code-rate-hp": 2.0/3.0,
205 "constellation": "QAM16",
206 "guard-interval": 4})
208 def test_gvariant_create_errors(self):
210 self.assertRaises(TypeError, GLib.Variant, 'i', 42, 3)
211 self.assertRaises(TypeError, GLib.Variant, '(i)', (42, 3))
213 # not enough arguments
214 self.assertRaises(TypeError, GLib.Variant, '(ii)', (42,))
217 self.assertRaises(TypeError, GLib.Variant, 'i', 'hello')
218 self.assertRaises(TypeError, GLib.Variant, 's', 42)
219 self.assertRaises(TypeError, GLib.Variant, '(ss)', 'mec', 'mac')
221 # unimplemented data type
222 self.assertRaises(NotImplementedError, GLib.Variant, 'Q', 1)
224 def test_gvariant_unpack(self):
226 res = GLib.Variant.new_int32(-42).unpack()
227 self.assertEqual(res, -42)
229 res = GLib.Variant.new_uint64(34359738368).unpack()
230 self.assertEqual(res, 34359738368)
232 res = GLib.Variant.new_boolean(True).unpack()
233 self.assertEqual(res, True)
235 res = GLib.Variant.new_object_path('/foo/Bar').unpack()
236 self.assertEqual(res, '/foo/Bar')
239 res = GLib.Variant('v', GLib.Variant.new_int32(-42)).unpack()
240 self.assertEqual(res, -42)
242 variant = GLib.Variant('v', GLib.Variant('v', GLib.Variant('i', 42)))
243 self.assertEqual(res, -42)
246 res = GLib.Variant.new_tuple(GLib.Variant.new_int32(-1),
247 GLib.Variant.new_string('hello')).unpack()
248 self.assertEqual(res, (-1, 'hello'))
251 vb = GLib.VariantBuilder.new(gi._gi.variant_type_from_string('ai'))
252 vb.add_value(GLib.Variant.new_int32(-1))
253 vb.add_value(GLib.Variant.new_int32(3))
254 res = vb.end().unpack()
255 self.assertEqual(res, [-1, 3])
258 res = GLib.Variant('a{si}', {'key1': 1, 'key2': 2}).unpack()
259 self.assertEqual(res, {'key1': 1, 'key2': 2})
261 def test_gvariant_iteration(self):
263 vb = GLib.VariantBuilder.new(gi._gi.variant_type_from_string('ai'))
264 vb.add_value(GLib.Variant.new_int32(-1))
265 vb.add_value(GLib.Variant.new_int32(3))
268 self.assertEqual(len(v), 2)
269 self.assertEqual(v[0], -1)
270 self.assertEqual(v[1], 3)
271 self.assertEqual(v[-1], 3)
272 self.assertEqual(v[-2], -1)
273 self.assertRaises(IndexError, v.__getitem__, 2)
274 self.assertRaises(IndexError, v.__getitem__, -3)
275 self.assertRaises(ValueError, v.__getitem__, 'a')
278 self.assertEqual([x for x in v], [-1, 3])
279 self.assertEqual(list(v), [-1, 3])
282 v = GLib.Variant.new_tuple(GLib.Variant.new_int32(-1),
283 GLib.Variant.new_string('hello'))
284 self.assertEqual(len(v), 2)
285 self.assertEqual(v[0], -1)
286 self.assertEqual(v[1], 'hello')
287 self.assertEqual(v[-1], 'hello')
288 self.assertEqual(v[-2], -1)
289 self.assertRaises(IndexError, v.__getitem__, 2)
290 self.assertRaises(IndexError, v.__getitem__, -3)
291 self.assertRaises(ValueError, v.__getitem__, 'a')
294 self.assertEqual([x for x in v], [-1, 'hello'])
295 self.assertEqual(tuple(v), (-1, 'hello'))
297 # dictionary index access
298 vsi = GLib.Variant('a{si}', {'key1': 1, 'key2': 2})
299 vis = GLib.Variant('a{is}', {1: 'val1', 5: 'val2'})
301 self.assertEqual(len(vsi), 2)
302 self.assertEqual(vsi['key1'], 1)
303 self.assertEqual(vsi['key2'], 2)
304 self.assertRaises(KeyError, vsi.__getitem__, 'unknown')
306 self.assertEqual(len(vis), 2)
307 self.assertEqual(vis[1], 'val1')
308 self.assertEqual(vis[5], 'val2')
309 self.assertRaises(KeyError, vsi.__getitem__, 3)
311 # dictionary iteration
312 self.assertEqual(set(vsi.keys()), set(['key1', 'key2']))
313 self.assertEqual(set(vis.keys()), set([1, 5]))
315 # string index access
316 v = GLib.Variant('s', 'hello')
317 self.assertEqual(len(v), 5)
318 self.assertEqual(v[0], 'h')
319 self.assertEqual(v[4], 'o')
320 self.assertEqual(v[-1], 'o')
321 self.assertEqual(v[-5], 'h')
322 self.assertRaises(IndexError, v.__getitem__, 5)
323 self.assertRaises(IndexError, v.__getitem__, -6)
326 self.assertEqual([x for x in v], ['h', 'e', 'l', 'l', 'o'])
328 class TestPango(unittest.TestCase):
330 def test_default_font_description(self):
331 desc = Pango.FontDescription()
332 self.assertEquals(desc.get_variant(), Pango.Variant.NORMAL)
334 def test_font_description(self):
335 desc = Pango.FontDescription('monospace')
336 self.assertEquals(desc.get_family(), 'monospace')
337 self.assertEquals(desc.get_variant(), Pango.Variant.NORMAL)
339 def test_layout(self):
340 self.assertRaises(TypeError, Pango.Layout)
341 context = Pango.Context()
342 layout = Pango.Layout(context)
343 self.assertEquals(layout.get_context(), context)
345 class TestGdk(unittest.TestCase):
347 def test_constructor(self):
348 attribute = Gdk.WindowAttr()
349 attribute.window_type = Gdk.WindowType.CHILD
350 attributes_mask = Gdk.WindowAttributesType.X | \
351 Gdk.WindowAttributesType.Y
352 window = Gdk.Window(None, attribute, attributes_mask)
353 self.assertEquals(window.get_window_type(), Gdk.WindowType.CHILD)
355 def test_color(self):
356 color = Gdk.Color(100, 200, 300)
357 self.assertEquals(color.red, 100)
358 self.assertEquals(color.green, 200)
359 self.assertEquals(color.blue, 300)
360 self.assertEquals(color, Gdk.Color(100, 200, 300))
361 self.assertNotEquals(color, Gdk.Color(1, 2, 3))
364 self.assertEquals(Gdk.RGBA, overrides.Gdk.RGBA)
365 rgba = Gdk.RGBA(0.1, 0.2, 0.3, 0.4)
366 self.assertEquals(rgba, Gdk.RGBA(0.1, 0.2, 0.3, 0.4))
367 self.assertNotEquals(rgba, Gdk.RGBA(0.0, 0.2, 0.3, 0.4))
368 self.assertEquals(rgba.red, 0.1)
369 self.assertEquals(rgba.green, 0.2)
370 self.assertEquals(rgba.blue, 0.3)
371 self.assertEquals(rgba.alpha, 0.4)
373 self.assertEquals(rgba.green, 0.9)
375 def test_event(self):
376 event = Gdk.Event.new(Gdk.EventType.CONFIGURE)
377 self.assertEquals(event.type, Gdk.EventType.CONFIGURE)
378 self.assertEquals(event.send_event, 0)
380 event = Gdk.Event.new(Gdk.EventType.DRAG_MOTION)
381 event.x_root, event.y_root = 0, 5
382 self.assertEquals(event.x_root, 0)
383 self.assertEquals(event.y_root, 5)
386 event.type = Gdk.EventType.SCROLL
387 self.assertRaises(AttributeError, lambda: getattr(event, 'foo_bar'))
389 def test_event_structures(self):
390 def button_press_cb(button, event):
391 self.assertTrue(isinstance(event, Gdk.EventButton))
392 self.assertTrue(event.type == Gdk.EventType.BUTTON_PRESS)
393 self.assertEquals(event.send_event, 0)
394 self.assertEquals(event.get_state(), Gdk.ModifierType.CONTROL_MASK)
395 self.assertEquals(event.get_root_coords(), (2, 5))
398 self.assertEquals(event.get_time(), 12345)
402 b.connect('button-press-event', button_press_cb)
405 Gdk.test_simulate_button(b.get_window(),
408 Gdk.ModifierType.CONTROL_MASK,
409 Gdk.EventType.BUTTON_PRESS)
411 def test_cursor(self):
412 self.assertEquals(Gdk.Cursor, overrides.Gdk.Cursor)
413 c = Gdk.Cursor(Gdk.CursorType.WATCH)
414 self.assertNotEqual(c, None)
415 c = Gdk.Cursor(cursor_type = Gdk.CursorType.WATCH)
416 self.assertNotEqual(c, None)
418 display_manager = Gdk.DisplayManager.get()
419 display = display_manager.get_default_display()
421 test_pixbuf = GdkPixbuf.Pixbuf.new(GdkPixbuf.Colorspace.RGB,
427 c = Gdk.Cursor(display,
431 self.assertNotEqual(c, None)
432 self.assertRaises(ValueError, Gdk.Cursor, 1, 2, 3)
434 class TestGtk(unittest.TestCase):
436 def test_container(self):
443 self.assertTrue(label in box)
444 self.assertTrue(label2 in box)
445 self.assertEqual(len(box), 2)
448 self.assertEqual(l, [label, label2])
450 def test_actions(self):
451 self.assertEquals(Gtk.Action, overrides.Gtk.Action)
452 self.assertRaises(TypeError, Gtk.Action)
453 action = Gtk.Action("test", "Test", "Test Action", Gtk.STOCK_COPY)
454 self.assertEquals(action.get_name(), "test")
455 self.assertEquals(action.get_label(), "Test")
456 self.assertEquals(action.get_tooltip(), "Test Action")
457 self.assertEquals(action.get_stock_id(), Gtk.STOCK_COPY)
459 self.assertEquals(Gtk.RadioAction, overrides.Gtk.RadioAction)
460 self.assertRaises(TypeError, Gtk.RadioAction)
461 action = Gtk.RadioAction("test", "Test", "Test Action", Gtk.STOCK_COPY, 1)
462 self.assertEquals(action.get_name(), "test")
463 self.assertEquals(action.get_label(), "Test")
464 self.assertEquals(action.get_tooltip(), "Test Action")
465 self.assertEquals(action.get_stock_id(), Gtk.STOCK_COPY)
466 self.assertEquals(action.get_current_value(), 1)
468 def test_actiongroup(self):
469 self.assertEquals(Gtk.ActionGroup, overrides.Gtk.ActionGroup)
470 self.assertRaises(TypeError, Gtk.ActionGroup)
472 action_group = Gtk.ActionGroup (name = 'TestActionGroup')
473 callback_data = "callback data"
475 def test_action_callback_data(action, user_data):
476 self.assertEquals(user_data, callback_data);
478 def test_radio_action_callback_data(action, current, user_data):
479 self.assertEquals(user_data, callback_data);
481 action_group.add_actions ([
482 ('test-action1', None, 'Test Action 1',
483 None, None, test_action_callback_data),
484 ('test-action2', Gtk.STOCK_COPY, 'Test Action 2',
485 None, None, test_action_callback_data)], callback_data)
486 action_group.add_toggle_actions([
487 ('test-toggle-action1', None, 'Test Toggle Action 1',
488 None, None, test_action_callback_data, False),
489 ('test-toggle-action2', Gtk.STOCK_COPY, 'Test Toggle Action 2',
490 None, None, test_action_callback_data, True)], callback_data)
491 action_group.add_radio_actions([
492 ('test-radio-action1', None, 'Test Radio Action 1'),
493 ('test-radio-action2', Gtk.STOCK_COPY, 'Test Radio Action 2')], 1,
494 test_radio_action_callback_data,
497 expected_results = [('test-action1', Gtk.Action),
498 ('test-action2', Gtk.Action),
499 ('test-toggle-action1', Gtk.ToggleAction),
500 ('test-toggle-action2', Gtk.ToggleAction),
501 ('test-radio-action1', Gtk.RadioAction),
502 ('test-radio-action2', Gtk.RadioAction)]
504 for action in action_group.list_actions():
505 a = (action.get_name(), type(action))
506 self.assertTrue(a in expected_results)
507 expected_results.remove(a)
510 def test_uimanager(self):
511 self.assertEquals(Gtk.UIManager, overrides.Gtk.UIManager)
513 ui.add_ui_from_string(
516 <menubar name="menubar1"></menubar>
520 menubar = ui.get_widget("/menubar1")
521 self.assertEquals(type(menubar), Gtk.MenuBar)
523 ag = Gtk.ActionGroup (name="ag1")
524 ui.insert_action_group(ag)
525 ag2 = Gtk.ActionGroup (name="ag2")
526 ui.insert_action_group(ag2)
527 groups = ui.get_action_groups()
528 self.assertEquals(ag, groups[-2])
529 self.assertEquals(ag2, groups[-1])
531 def test_builder(self):
532 self.assertEquals(Gtk.Builder, overrides.Gtk.Builder)
534 class SignalTest(GObject.GObject):
535 __gtype_name__ = "GIOverrideSignalTest"
537 "test-signal": (GObject.SignalFlags.RUN_FIRST,
547 def on_signal_1(self, *args):
550 def on_signal_3(self, *args):
553 signal_checker = SignalCheck()
554 builder = Gtk.Builder()
556 # add object1 to the builder
557 builder.add_from_string(
560 <object class="GIOverrideSignalTest" id="object1">
561 <signal name="test-signal" handler="on_signal_1" />
566 # only add object3 to the builder
567 builder.add_objects_from_string(
570 <object class="GIOverrideSignalTest" id="object2">
571 <signal name="test-signal" handler="on_signal_2" />
573 <object class="GIOverrideSignalTest" id="object3">
574 <signal name="test-signal" handler="on_signal_3" />
576 <object class="GIOverrideSignalTest" id="object4">
577 <signal name="test-signal" handler="on_signal_4" />
585 builder.connect_signals(signal_checker)
587 # call their notify signals and check sentinel
588 objects = builder.get_objects()
589 self.assertEquals(len(objects), 2)
591 obj.emit('test-signal')
593 self.assertEquals(signal_checker.sentinel, 4)
595 def test_dialogs(self):
596 self.assertEquals(Gtk.Dialog, overrides.Gtk.Dialog)
597 self.assertEquals(Gtk.AboutDialog, overrides.Gtk.AboutDialog)
598 self.assertEquals(Gtk.MessageDialog, overrides.Gtk.MessageDialog)
599 self.assertEquals(Gtk.ColorSelectionDialog, overrides.Gtk.ColorSelectionDialog)
600 self.assertEquals(Gtk.FileChooserDialog, overrides.Gtk.FileChooserDialog)
601 self.assertEquals(Gtk.FontSelectionDialog, overrides.Gtk.FontSelectionDialog)
602 self.assertEquals(Gtk.RecentChooserDialog, overrides.Gtk.RecentChooserDialog)
605 dialog = Gtk.Dialog (title='Foo',
606 flags=Gtk.DialogFlags.MODAL,
607 buttons=('test-button1', 1))
609 dialog.add_buttons ('test-button2', 2, Gtk.STOCK_CLOSE, Gtk.ResponseType.CLOSE)
611 self.assertEquals('Foo', dialog.get_title())
612 self.assertTrue(dialog.get_modal())
613 button = dialog.get_widget_for_response (1)
614 self.assertEquals('test-button1', button.get_label())
615 button = dialog.get_widget_for_response (2)
616 self.assertEquals('test-button2', button.get_label())
617 button = dialog.get_widget_for_response (Gtk.ResponseType.CLOSE)
618 self.assertEquals(Gtk.STOCK_CLOSE, button.get_label())
621 dialog = Gtk.AboutDialog()
624 dialog = Gtk.MessageDialog (title='message dialog test',
625 flags=Gtk.DialogFlags.MODAL,
626 buttons=Gtk.ButtonsType.OK,
627 message_format='dude!')
629 self.assertEquals('message dialog test', dialog.get_title())
630 self.assertTrue(dialog.get_modal())
631 text = dialog.get_property('text')
632 self.assertEquals('dude!', text)
634 dialog.format_secondary_text('2nd text')
635 self.assertEqual(dialog.get_property('secondary-text'), '2nd text')
636 self.assertFalse(dialog.get_property('secondary-use-markup'))
638 dialog.format_secondary_markup('2nd markup')
639 self.assertEqual(dialog.get_property('secondary-text'), '2nd markup')
640 self.assertTrue(dialog.get_property('secondary-use-markup'))
642 # Gtk.ColorSelectionDialog
643 dialog = Gtk.ColorSelectionDialog("color selection dialog test")
644 self.assertEquals('color selection dialog test', dialog.get_title())
646 # Gtk.FileChooserDialog
647 dialog = Gtk.FileChooserDialog (title='file chooser dialog test',
648 buttons=('test-button1', 1),
649 action=Gtk.FileChooserAction.SAVE)
651 dialog.add_buttons ('test-button2', 2, Gtk.STOCK_CLOSE, Gtk.ResponseType.CLOSE)
652 self.assertEquals('file chooser dialog test', dialog.get_title())
653 button = dialog.get_widget_for_response (1)
654 self.assertEquals('test-button1', button.get_label())
655 button = dialog.get_widget_for_response (2)
656 self.assertEquals('test-button2', button.get_label())
657 button = dialog.get_widget_for_response (Gtk.ResponseType.CLOSE)
658 self.assertEquals(Gtk.STOCK_CLOSE, button.get_label())
659 action = dialog.get_property('action')
660 self.assertEquals(Gtk.FileChooserAction.SAVE, action)
663 # Gtk.FontSelectionDialog
664 dialog = Gtk.ColorSelectionDialog("font selection dialog test")
665 self.assertEquals('font selection dialog test', dialog.get_title())
667 # Gtk.RecentChooserDialog
668 test_manager = Gtk.RecentManager()
669 dialog = Gtk.RecentChooserDialog (title='recent chooser dialog test',
670 buttons=('test-button1', 1),
671 manager=test_manager)
673 dialog.add_buttons ('test-button2', 2, Gtk.STOCK_CLOSE, Gtk.ResponseType.CLOSE)
674 self.assertEquals('recent chooser dialog test', dialog.get_title())
675 button = dialog.get_widget_for_response (1)
676 self.assertEquals('test-button1', button.get_label())
677 button = dialog.get_widget_for_response (2)
678 self.assertEquals('test-button2', button.get_label())
679 button = dialog.get_widget_for_response (Gtk.ResponseType.CLOSE)
680 self.assertEquals(Gtk.STOCK_CLOSE, button.get_label())
682 class TestClass(GObject.GObject):
683 __gtype_name__ = "GIOverrideTreeAPITest"
685 def __init__(self, tester, int_value, string_value):
686 super(TestGtk.TestClass, self).__init__()
688 self.int_value = int_value
689 self.string_value = string_value
691 def check(self, int_value, string_value):
692 self.tester.assertEquals(int_value, self.int_value)
693 self.tester.assertEquals(string_value, self.string_value)
695 def test_tree_store(self):
696 self.assertEquals(Gtk.TreeStore, overrides.Gtk.TreeStore)
697 self.assertEquals(Gtk.ListStore, overrides.Gtk.ListStore)
698 self.assertEquals(Gtk.TreeModel, overrides.Gtk.TreeModel)
699 self.assertEquals(Gtk.TreeViewColumn, overrides.Gtk.TreeViewColumn)
701 class TestPyObject(object):
704 test_pyobj = TestPyObject()
705 test_pydict = {1:1, "2":2, "3":"3"}
706 test_pylist = [1,"2", "3"]
707 tree_store = Gtk.TreeStore(int,
710 GObject.TYPE_PYOBJECT,
725 label = 'this is child #%d' % i
726 testobj = TestGtk.TestClass(self, i, label)
727 parent = tree_store.append(parent, (i,
744 parent = tree_store.append(parent)
746 label = 'this is child #%d' % i
747 testobj = TestGtk.TestClass(self, i, label)
748 tree_store.set(parent, 0, i,
758 10, GObject.G_MAXULONG,
759 11, GObject.G_MININT64,
760 12, 0xffffffffffffffff,
764 parent = tree_store.append(parent)
766 label = 'this is child #%d' % i
767 testobj = TestGtk.TestClass(self, i, label)
768 tree_store.set(parent, {0: i,
778 10: GObject.G_MAXULONG,
779 11: GObject.G_MININT64,
780 12: 0xffffffffffffffff,
784 parent = tree_store.append(parent)
786 label = 'this is child #%d' % i
787 testobj = TestGtk.TestClass(self, i, label)
788 tree_store.set(parent, (0, 2, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14),
805 # len gets the number of children in the root node
806 # since we kept appending to the previous node
807 # there should only be one child of the root
808 self.assertEquals(len(tree_store), 1)
810 # walk the tree to see if the values were stored correctly
814 treeiter = tree_store.iter_children(parent)
816 i = tree_store.get_value(treeiter, 0)
817 s = tree_store.get_value(treeiter, 1)
818 obj = tree_store.get_value(treeiter, 2)
820 obj2 = tree_store.get_value(treeiter, 3)
821 self.assertEquals(obj, obj2);
823 pyobj = tree_store.get_value(treeiter, 4)
824 self.assertEquals(pyobj, test_pyobj)
825 pydict = tree_store.get_value(treeiter, 5)
826 self.assertEquals(pydict, test_pydict)
827 pylist = tree_store.get_value(treeiter, 6)
828 self.assertEquals(pylist, test_pylist)
830 bool_1 = tree_store.get_value(treeiter, 7)
831 bool_2 = tree_store.get_value(treeiter, 8)
832 self.assertEquals(bool_1, bool_2)
833 self.assertTrue(isinstance(bool_1, bool))
834 self.assertTrue(isinstance(bool_2, bool))
836 uint_ = tree_store.get_value(treeiter, 9)
837 self.assertEquals(uint_, i)
838 ulong_ = tree_store.get_value(treeiter, 10)
839 self.assertEquals(ulong_, GObject.G_MAXULONG)
840 int64_ = tree_store.get_value(treeiter, 11)
841 self.assertEquals(int64_, GObject.G_MININT64)
842 uint64_ = tree_store.get_value(treeiter, 12)
843 self.assertEquals(uint64_, 0xffffffffffffffff)
844 uchar_ = tree_store.get_value(treeiter, 13)
845 self.assertEquals(ord(uchar_), 254)
846 char_ = tree_store.get_value(treeiter, 14)
847 self.assertEquals(char_, 'a')
850 treeiter = tree_store.iter_children(parent)
852 self.assertEquals(i, 99)
854 def test_list_store(self):
855 class TestPyObject(object):
858 test_pyobj = TestPyObject()
859 test_pydict = {1:1, "2":2, "3":"3"}
860 test_pylist = [1,"2", "3"]
862 list_store = Gtk.ListStore(int, str, 'GIOverrideTreeAPITest', object, object, object, bool, bool)
863 for i in range(1, 93):
864 label = 'this is row #%d' % i
865 testobj = TestGtk.TestClass(self, i, label)
866 parent = list_store.append((i,
876 label = _unicode('this is row #93')
877 treeiter = list_store.append()
878 list_store.set_value(treeiter, 0, i)
879 list_store.set_value(treeiter, 1, label)
880 list_store.set_value(treeiter, 2, TestGtk.TestClass(self, i, label))
881 list_store.set_value(treeiter, 3, test_pyobj)
882 list_store.set_value(treeiter, 4, test_pydict)
883 list_store.set_value(treeiter, 5, test_pylist)
884 list_store.set_value(treeiter, 6, 1)
885 list_store.set_value(treeiter, 7, True)
888 label = 'this is row #0'
889 list_store.prepend((0,
891 TestGtk.TestClass(self, 0, label),
898 # test automatic unicode->str conversion
900 label = _unicode('this is row #94')
901 treeiter = list_store.append((i,
903 TestGtk.TestClass(self, i, label),
910 # add sorted items out of order to test insert* apis
911 # also test sending in None to not set a column
913 label = 'this is row #97'
914 treeiter = list_store.append((None,
923 list_store.set_value(treeiter, 0, i)
924 list_store.set_value(treeiter, 1, label)
925 list_store.set_value(treeiter, 2, TestGtk.TestClass(self, i, label))
926 list_store.set_value(treeiter, 4, test_pydict)
927 list_store.set_value(treeiter, 7, True)
931 label = 'this is row #99'
932 list_store.insert(9999, (i,
934 TestGtk.TestClass(self, i, label),
942 label = 'this is row #96'
943 list_store.insert_before(treeiter, (i,
945 TestGtk.TestClass(self, i, label),
953 label = 'this is row #98'
954 list_store.insert_after(treeiter, (i,
956 TestGtk.TestClass(self, i, label),
965 label = 'this is row #95'
966 list_store.insert(95, (i,
968 TestGtk.TestClass(self, i, label),
976 label = 'this is row #100'
977 treeiter = list_store.append()
978 list_store.set(treeiter, 1, label,
980 2, TestGtk.TestClass(self, i, label),
987 label = 'this is row #101'
988 treeiter = list_store.append()
989 list_store.set(treeiter, {1: label,
991 2: TestGtk.TestClass(self, i, label),
998 label = 'this is row #102'
999 treeiter = list_store.append()
1000 list_store.set(treeiter, (1, 0, 2, 3, 4, 5, 6, 7),
1003 TestGtk.TestClass(self, i, label),
1010 self.assertEquals(len(list_store), 103)
1012 # walk the list to see if the values were stored correctly
1014 treeiter = list_store.get_iter_first()
1018 i = list_store.get_value(treeiter, 0)
1019 self.assertEquals(i, counter)
1020 s = list_store.get_value(treeiter, 1)
1021 obj = list_store.get_value(treeiter, 2)
1024 pyobj = list_store.get_value(treeiter, 3)
1025 self.assertEquals(pyobj, test_pyobj)
1026 pydict = list_store.get_value(treeiter, 4)
1027 self.assertEquals(pydict, test_pydict)
1028 pylist = list_store.get_value(treeiter, 5)
1029 self.assertEquals(pylist, test_pylist)
1031 bool_1 = list_store.get_value(treeiter, 6)
1032 bool_2 = list_store.get_value(treeiter, 7)
1033 self.assertEquals(bool_1, bool_2)
1034 self.assertTrue(isinstance(bool_1, bool))
1035 self.assertTrue(isinstance(bool_2, bool))
1037 treeiter = list_store.iter_next(treeiter)
1041 self.assertEquals(i, 102)
1043 def test_tree_path(self):
1045 p2 = Gtk.TreePath.new_first()
1046 self.assertEqual(p1, p2)
1047 self.assertEqual(str(p1), '0')
1048 p1 = Gtk.TreePath(2)
1049 p2 = Gtk.TreePath.new_from_string('2')
1050 self.assertEqual(p1, p2)
1051 self.assertEqual(str(p1), '2')
1052 p1 = Gtk.TreePath('1:2:3')
1053 p2 = Gtk.TreePath.new_from_string('1:2:3')
1054 self.assertEqual(p1, p2)
1055 self.assertEqual(str(p1), '1:2:3')
1056 p1 = Gtk.TreePath((1,2,3))
1057 p2 = Gtk.TreePath.new_from_string('1:2:3')
1058 self.assertEqual(p1, p2)
1059 self.assertEqual(str(p1), '1:2:3')
1060 self.assertTrue(p1 != None)
1061 self.assertFalse(p1 == None)
1062 self.assertTrue(p1 > None)
1063 self.assertTrue(p1 >= None)
1064 self.assertFalse(p1 < None)
1065 self.assertFalse(p1 <= None)
1067 def test_tree_model(self):
1068 tree_store = Gtk.TreeStore(int, str)
1070 self.assertTrue(tree_store)
1071 self.assertEqual(len(tree_store), 0)
1072 self.assertEqual(tree_store.get_iter_first(), None)
1074 def get_by_index(row, col=None):
1076 return tree_store[row][col]
1078 return tree_store[row]
1080 self.assertRaises(TypeError, get_by_index, None)
1081 self.assertRaises(TypeError, get_by_index, "")
1082 self.assertRaises(TypeError, get_by_index, ())
1084 self.assertRaises(IndexError, get_by_index, "0")
1085 self.assertRaises(IndexError, get_by_index, 0)
1086 self.assertRaises(IndexError, get_by_index, (0,))
1088 self.assertRaises(ValueError, tree_store.get_iter, "0")
1089 self.assertRaises(ValueError, tree_store.get_iter, 0)
1090 self.assertRaises(ValueError, tree_store.get_iter, (0,))
1092 self.assertRaises(ValueError, tree_store.get_iter_from_string, "0")
1094 for row in tree_store:
1095 self.fail("Should not be reached")
1097 class DerivedIntType(int):
1100 class DerivedStrType(str):
1103 for i in range(100):
1104 label = 'this is row #%d' % i
1105 parent = tree_store.append(None, (DerivedIntType(i), DerivedStrType(label),))
1106 self.assertNotEquals(parent, None)
1108 label = 'this is child #%d of node #%d' % (j, i)
1109 child = tree_store.append(parent, (j, label,))
1110 self.assertNotEqual(child, None)
1112 self.assertTrue(tree_store)
1113 self.assertEqual(len(tree_store), 100)
1115 for i,row in enumerate(tree_store):
1116 self.assertEqual(row.model, tree_store)
1117 self.assertEqual(row.parent, None)
1119 self.assertEqual(tree_store[i].path, row.path)
1120 self.assertEqual(tree_store[str(i)].path, row.path)
1121 self.assertEqual(tree_store[(i,)].path, row.path)
1123 self.assertEqual(tree_store[i][0], i)
1124 self.assertEqual(tree_store[i][1], "this is row #%d" % i)
1126 aiter = tree_store.get_iter(i)
1127 self.assertEqual(tree_store.get_path(aiter), row.path)
1129 aiter = tree_store.get_iter(str(i))
1130 self.assertEqual(tree_store.get_path(aiter), row.path)
1132 aiter = tree_store.get_iter((i,))
1133 self.assertEqual(tree_store.get_path(aiter), row.path)
1135 self.assertEqual(tree_store.iter_parent(aiter), row.parent)
1137 next = tree_store.iter_next(aiter)
1138 if i < len(tree_store) - 1:
1139 self.assertEqual(tree_store.get_path(next), row.next.path)
1141 self.assertEqual(next, None)
1143 self.assertEqual(tree_store.iter_n_children(row.iter), 20)
1145 child = tree_store.iter_children(row.iter)
1146 for j,childrow in enumerate(row.iterchildren()):
1147 child_path = tree_store.get_path(child)
1148 self.assertEqual(childrow.path, child_path)
1149 self.assertEqual(childrow.parent.path, row.path)
1150 self.assertEqual(childrow.path, tree_store[child].path)
1151 self.assertEqual(childrow.path, tree_store[child_path].path)
1153 self.assertEqual(childrow[0], tree_store[child][0])
1154 self.assertEqual(childrow[0], j)
1155 self.assertEqual(childrow[1], tree_store[child][1])
1156 self.assertEqual(childrow[1], 'this is child #%d of node #%d' % (j, i))
1158 self.assertRaises(IndexError, get_by_index, child, 2)
1160 tree_store[child][1] = 'this was child #%d of node #%d' % (j, i)
1161 self.assertEqual(childrow[1], 'this was child #%d of node #%d' % (j, i))
1163 nth_child = tree_store.iter_nth_child(row.iter, j)
1164 self.assertEqual(childrow.path, tree_store.get_path(nth_child))
1166 childrow2 = tree_store["%d:%d" % (i, j)]
1167 self.assertEqual(childrow.path, childrow2.path)
1169 childrow2 = tree_store[(i, j,)]
1170 self.assertEqual(childrow.path, childrow2.path)
1172 child = tree_store.iter_next(child)
1174 self.assertEqual(childrow.next.path, tree_store.get_path(child))
1176 self.assertEqual(child, childrow.next)
1177 self.assertEqual(child, None)
1179 self.assertEqual(j, 19)
1181 self.assertEqual(i, 99)
1184 for i in range(-1,-100,-1):
1186 self.assertEqual(tree_store[i][0], i_real)
1189 for j in range(-1, -20, -1):
1191 path = (i_real, j_real,)
1193 self.assertEqual(tree_store[path][-2], j_real)
1195 label = 'this was child #%d of node #%d' % (j_real, i_real)
1196 self.assertEqual(tree_store[path][-1], label)
1198 new_label = 'this still is child #%d of node #%d' % (j_real, i_real)
1199 tree_store[path][-1] = new_label
1200 self.assertEqual(tree_store[path][-1], new_label)
1202 self.assertRaises(IndexError, get_by_index, path, -3)
1204 self.assertRaises(IndexError, get_by_index, -101)
1206 last_row = tree_store[99]
1207 self.assertNotEqual(last_row, None)
1209 for i,childrow in enumerate(last_row.iterchildren()):
1211 self.assertTrue(tree_store.remove(childrow.iter))
1213 self.assertFalse(tree_store.remove(childrow.iter))
1215 self.assertEqual(i, 19)
1217 self.assertEqual(tree_store.iter_n_children(last_row.iter), 0)
1218 for childrow in last_row.iterchildren():
1219 self.fail("Should not be reached")
1221 aiter = tree_store.get_iter(10)
1222 self.assertRaises(TypeError, tree_store.get, aiter, 1, 'a')
1223 self.assertRaises(ValueError, tree_store.get, aiter, 1, -1)
1224 self.assertRaises(ValueError, tree_store.get, aiter, 1, 100)
1225 self.assertEqual(tree_store.get(aiter, 0, 1), (10, 'this is row #10'))
1227 def test_tree_view_column(self):
1228 cell = Gtk.CellRendererText()
1229 column = Gtk.TreeViewColumn(title='This is just a test',
1234 def test_tree_selection(self):
1235 store = Gtk.ListStore(int, str)
1237 store.append((i, "foo"))
1238 view = Gtk.TreeView()
1239 view.set_model(store)
1240 firstpath = store.get_path(store.get_iter_first())
1241 sel = view.get_selection()
1243 sel.select_path(firstpath)
1244 (m, s) = sel.get_selected()
1245 self.assertEqual(m, store)
1246 self.assertEqual(store.get_path(s), firstpath)
1249 (m, s) = sel.get_selected()
1250 self.assertEqual(m, store)
1251 self.assertEqual(store.get_path(s), firstpath)
1253 sel.select_path("0:0")
1254 (m, s) = sel.get_selected()
1255 self.assertEqual(m, store)
1256 self.assertEqual(store.get_path(s), firstpath)
1258 sel.select_path((0,0))
1259 (m, s) = sel.get_selected()
1260 self.assertEqual(m, store)
1261 self.assertEqual(store.get_path(s), firstpath)
1263 def test_text_buffer(self):
1264 self.assertEquals(Gtk.TextBuffer, overrides.Gtk.TextBuffer)
1265 buffer = Gtk.TextBuffer()
1266 tag = buffer.create_tag ('title', font = 'Sans 18')
1268 self.assertEquals(tag.props.name, 'title')
1269 self.assertEquals(tag.props.font, 'Sans 18')
1271 (start, end) = buffer.get_bounds()
1273 mark = buffer.create_mark(None, start)
1274 self.assertFalse(mark.get_left_gravity())
1276 buffer.set_text('Hello Jane Hello Bob')
1277 (start, end) = buffer.get_bounds()
1278 text = buffer.get_text(start, end, False)
1279 self.assertEquals(text, 'Hello Jane Hello Bob')
1282 (start, end) = buffer.get_bounds()
1283 text = buffer.get_text(start, end, False)
1284 self.assertEquals(text, '')
1286 buffer.insert(end, 'HelloHello')
1287 buffer.insert(end, ' Bob')
1289 cursor_iter = end.copy()
1290 cursor_iter.backward_chars(9)
1291 buffer.place_cursor(cursor_iter)
1292 buffer.insert_at_cursor(' Jane ')
1294 (start, end) = buffer.get_bounds()
1295 text = buffer.get_text(start, end, False)
1296 self.assertEquals(text, 'Hello Jane Hello Bob')
1298 sel = buffer.get_selection_bounds()
1299 self.assertEquals(sel, ())
1300 buffer.select_range(start, end)
1301 sel = buffer.get_selection_bounds()
1302 self.assertTrue(sel[0].equal(start))
1303 self.assertTrue(sel[1].equal(end))
1306 buffer.insert_with_tags(buffer.get_start_iter(), 'HelloHello', tag)
1307 (start, end) = buffer.get_bounds()
1308 self.assertTrue(start.begins_tag(tag))
1309 self.assertTrue(start.has_tag(tag))
1312 buffer.insert_with_tags_by_name(buffer.get_start_iter(), 'HelloHello', 'title')
1313 (start, end) = buffer.get_bounds()
1314 self.assertTrue(start.begins_tag(tag))
1315 self.assertTrue(start.has_tag(tag))
1317 self.assertRaises(ValueError, buffer.insert_with_tags_by_name,
1318 buffer.get_start_iter(), 'HelloHello', 'unknowntag')
1320 def test_text_iter(self):
1321 self.assertEquals(Gtk.TextIter, overrides.Gtk.TextIter)
1322 buffer = Gtk.TextBuffer()
1323 buffer.set_text('Hello Jane Hello Bob')
1324 tag = buffer.create_tag ('title', font = 'Sans 18')
1325 (start, end) = buffer.get_bounds()
1326 start.forward_chars(10)
1327 buffer.apply_tag(tag, start, end)
1328 self.assertTrue(start.begins_tag())
1329 self.assertTrue(end.ends_tag())
1330 self.assertTrue(start.toggles_tag())
1331 self.assertTrue(end.toggles_tag())
1332 start.backward_chars(1)
1333 self.assertFalse(start.begins_tag())
1334 self.assertFalse(start.ends_tag())
1335 self.assertFalse(start.toggles_tag())
1337 def test_buttons(self):
1338 self.assertEquals(Gtk.Button, overrides.Gtk.Button)
1341 button = Gtk.Button()
1342 button = Gtk.Button(stock=Gtk.STOCK_CLOSE)
1343 self.assertEquals(Gtk.STOCK_CLOSE, button.get_label())
1344 self.assertTrue(button.get_use_stock())
1345 self.assertTrue(button.get_use_underline())
1347 # test Gtk.LinkButton
1348 self.assertRaises(TypeError, Gtk.LinkButton)
1349 button = Gtk.LinkButton('http://www.gtk.org', 'Gtk')
1350 self.assertEquals('http://www.gtk.org', button.get_uri())
1351 self.assertEquals('Gtk', button.get_label())
1353 def test_inheritance(self):
1354 for name in overrides.Gtk.__all__:
1355 over = getattr(overrides.Gtk, name)
1356 for element in dir(Gtk):
1358 klass = getattr(Gtk, element)
1359 info = klass.__info__
1360 except (NotImplementedError, AttributeError):
1363 # Get all parent classes and interfaces klass inherits from
1364 if isinstance(info, gi.types.ObjectInfo):
1365 classes = list(info.get_interfaces())
1366 parent = info.get_parent()
1367 while parent.get_name() != "Object":
1368 classes.append(parent)
1369 parent = parent.get_parent()
1370 classes = [kl for kl in classes if kl.get_namespace() == "Gtk"]
1375 if kl.get_name() == name:
1376 self.assertTrue(issubclass(klass, over,),
1377 "%r does not inherit from override %r" % (klass, over,))
1379 def test_editable(self):
1380 self.assertEquals(Gtk.Editable, overrides.Gtk.Editable)
1382 # need to use Gtk.Entry because Editable is an interface
1384 pos = entry.insert_text('HeWorld', 0)
1385 self.assertEquals(pos, 7)
1386 pos = entry.insert_text('llo ', 2)
1387 self.assertEquals(pos, 6)
1388 text = entry.get_chars(0, 11)
1389 self.assertEquals('Hello World', text)
1391 def test_label(self):
1392 label = Gtk.Label(label='Hello')
1393 self.assertEquals(label.get_text(), 'Hello')
1395 def adjustment_check(self, adjustment, value=0.0, lower=0.0, upper=0.0,
1396 step_increment=0.0, page_increment=0.0, page_size=0.0):
1397 self.assertEquals(adjustment.get_value(), value)
1398 self.assertEquals(adjustment.get_lower(), lower)
1399 self.assertEquals(adjustment.get_upper(), upper)
1400 self.assertEquals(adjustment.get_step_increment(), step_increment)
1401 self.assertEquals(adjustment.get_page_increment(), page_increment)
1402 self.assertEquals(adjustment.get_page_size(), page_size)
1404 def test_adjustment(self):
1405 adjustment = Gtk.Adjustment(1, 0, 6, 4, 5, 3)
1406 self.adjustment_check(adjustment, 1, 0, 6, 4, 5, 3)
1408 adjustment = Gtk.Adjustment(1, 0, 6, 4, 5)
1409 self.adjustment_check(adjustment, 1, 0, 6, 4, 5)
1411 adjustment = Gtk.Adjustment(1, 0, 6, 4)
1412 self.adjustment_check(adjustment, 1, 0, 6, 4)
1414 adjustment = Gtk.Adjustment(1, 0, 6)
1415 self.adjustment_check(adjustment, 1, 0, 6)
1417 adjustment = Gtk.Adjustment()
1418 self.adjustment_check(adjustment)
1420 adjustment = Gtk.Adjustment(value=1, lower=0, upper=6,
1421 step_increment=4, page_increment=5, page_size=3)
1422 self.adjustment_check(adjustment, 1, 0, 6, 4, 5, 3)
1424 def test_table(self):
1426 self.assertEquals(table.get_size(), (1,1))
1427 self.assertEquals(table.get_homogeneous(), False)
1428 table = Gtk.Table(2, 3)
1429 self.assertEquals(table.get_size(), (2,3))
1430 self.assertEquals(table.get_homogeneous(), False)
1431 table = Gtk.Table(2, 3, True)
1432 self.assertEquals(table.get_size(), (2,3))
1433 self.assertEquals(table.get_homogeneous(), True)
1435 # Test PyGTK interface
1436 table = Gtk.Table(rows=3, columns=2)
1437 self.assertEquals(table.get_size(), (3,2))
1438 # Test using the actual property names
1439 table = Gtk.Table(n_rows=2, n_columns=3, homogeneous=True)
1440 self.assertEquals(table.get_size(), (2,3))
1441 self.assertEquals(table.get_homogeneous(), True)
1443 label = Gtk.Label(label='Hello')
1444 table.attach(label, 0, 1, 0, 1)
1445 self.assertEquals(label, table.get_children()[0])
1447 def test_scrolledwindow(self):
1448 sw = Gtk.ScrolledWindow()
1449 sb = sw.get_hscrollbar()
1450 self.assertEquals(sw.get_hadjustment(), sb.get_adjustment())
1451 sb = sw.get_vscrollbar()
1452 self.assertEquals(sw.get_vadjustment(), sb.get_adjustment())
1454 def test_widget_drag_methods(self):
1455 widget = Gtk.Button()
1457 # here we are not checking functionality, only that the methods exist
1458 # and except the right number of arguments
1460 widget.drag_check_threshold(0, 0, 0, 0)
1462 # drag_dest_ methods
1463 widget.drag_dest_set(Gtk.DestDefaults.DROP, None, Gdk.DragAction.COPY)
1464 widget.drag_dest_add_image_targets()
1465 widget.drag_dest_add_text_targets()
1466 widget.drag_dest_add_uri_targets()
1467 widget.drag_dest_get_track_motion()
1468 widget.drag_dest_set_track_motion(True)
1469 widget.drag_dest_get_target_list()
1470 widget.drag_dest_set_target_list(Gtk.TargetList.new([Gtk.TargetEntry()]))
1471 widget.drag_dest_unset()
1473 widget.drag_highlight()
1474 widget.drag_unhighlight()
1476 # drag_source_ methods
1477 widget.drag_source_set(Gdk.ModifierType.BUTTON1_MASK, None, Gdk.DragAction.MOVE)
1478 widget.drag_source_add_image_targets()
1479 widget.drag_source_add_text_targets()
1480 widget.drag_source_add_uri_targets()
1481 widget.drag_source_set_icon_name("")
1482 widget.drag_source_set_icon_pixbuf(GdkPixbuf.Pixbuf())
1483 widget.drag_source_set_icon_stock("")
1484 widget.drag_source_get_target_list()
1485 widget.drag_source_set_target_list(Gtk.TargetList.new([Gtk.TargetEntry()]))
1486 widget.drag_source_unset()
1488 # these methods cannot be called because they require a valid drag on
1489 # a real GdkWindow. So we only check that they exist and are callable.
1490 self.assertTrue(hasattr(widget.drag_dest_set_proxy, '__call__'))
1491 self.assertTrue(hasattr(widget.drag_get_data, '__call__'))
1493 class TestGio(unittest.TestCase):
1495 os.environ['GSETTINGS_BACKEND'] = 'memory'
1496 # support a separate build tree, so look in build dir first
1497 os.environ['GSETTINGS_SCHEMA_DIR'] = os.environ.get('TESTS_BUILDDIR',
1498 os.path.dirname(__file__))
1499 self.settings = Gio.Settings('org.gnome.test')
1500 # we change the values in the tests, so set them to predictable start
1502 self.settings.reset('test-string')
1503 self.settings.reset('test-array')
1505 def test_file_enumerator(self):
1506 self.assertEquals(Gio.FileEnumerator, overrides.Gio.FileEnumerator)
1507 f = Gio.file_new_for_path("./")
1510 for info in f.enumerate_children("standard::*", 0, None):
1511 iter_info.append(info.get_name())
1514 enumerator = f.enumerate_children("standard::*", 0, None)
1516 info = enumerator.next_file(None)
1519 next_info.append(info.get_name())
1521 self.assertEquals(iter_info, next_info)
1523 def test_gsettings_native(self):
1524 self.assertTrue('test-array' in self.settings.list_keys())
1527 v = self.settings.get_value('test-boolean')
1528 self.assertEqual(v.get_boolean(), True)
1529 self.assertEqual(self.settings.get_boolean('test-boolean'), True)
1531 v = self.settings.get_value('test-string')
1532 self.assertEqual(v.get_string(), 'Hello')
1533 self.assertEqual(self.settings.get_string('test-string'), 'Hello')
1535 v = self.settings.get_value('test-array')
1536 self.assertEqual(v.unpack(), [1, 2])
1538 v = self.settings.get_value('test-tuple')
1539 self.assertEqual(v.unpack(), (1, 2))
1542 self.settings.set_string('test-string', 'World')
1543 self.assertEqual(self.settings.get_string('test-string'), 'World')
1545 self.settings.set_value('test-string', GLib.Variant('s', 'Goodbye'))
1546 self.assertEqual(self.settings.get_string('test-string'), 'Goodbye')
1548 def test_gsettings_constructor(self):
1549 # default constructor uses path from schema
1550 self.assertEqual(self.settings.get_property('path'), '/tests/')
1552 # optional constructor arguments
1553 with_path = Gio.Settings('org.gnome.nopathtest', path='/mypath/')
1554 self.assertEqual(with_path.get_property('path'), '/mypath/')
1555 self.assertEqual(with_path['np-int'], 42)
1557 def test_gsettings_override(self):
1558 # dictionary interface
1559 self.assertEqual(len(self.settings), 4)
1560 self.assertTrue('test-array' in self.settings)
1561 self.assertTrue('test-array' in self.settings.keys())
1562 self.failIf('nonexisting' in self.settings)
1563 self.failIf(4 in self.settings)
1564 self.assertEqual(bool(self.settings), True)
1567 self.assertEqual(self.settings['test-boolean'], True)
1568 self.assertEqual(self.settings['test-string'], 'Hello')
1569 self.assertEqual(self.settings['test-array'], [1, 2])
1570 self.assertEqual(self.settings['test-tuple'], (1, 2))
1572 self.assertRaises(KeyError, self.settings.__getitem__, 'unknown')
1573 self.assertRaises(KeyError, self.settings.__getitem__, 2)
1576 self.settings['test-string'] = 'Goodbye'
1577 self.assertEqual(self.settings['test-string'], 'Goodbye')
1578 self.settings['test-array'] = [3, 4, 5]
1579 self.assertEqual(self.settings['test-array'], [3, 4, 5])
1581 self.assertRaises(TypeError, self.settings.__setitem__, 'test-string', 1)
1582 self.assertRaises(KeyError, self.settings.__setitem__, 'unknown', 'moo')
1584 def test_gsettings_empty(self):
1585 empty = Gio.Settings('org.gnome.empty', path='/tests/')
1586 self.assertEqual(len(empty), 0)
1587 self.assertEqual(bool(empty), True)
1588 self.assertEqual(empty.keys(), [])