Imported Upstream version 3.7.3
[platform/upstream/python-gobject.git] / tests / compat_test_pygtk.py
1 # -*- Mode: Python; py-indent-offset: 4 -*-
2 # vim: tabstop=4 shiftwidth=4 expandtab
3
4 import unittest
5
6 from gi.repository import GLib
7
8 try:
9     from gi.repository import Pango
10     from gi.repository import Atk
11     from gi.repository import Gdk
12     from gi.repository import Gtk
13     (Atk, Gtk, Pango)  # pyflakes
14
15     import pygtkcompat
16
17     pygtkcompat.enable()
18     pygtkcompat.enable_gtk(version='3.0')
19
20     import atk
21     import pango
22     import pangocairo
23     import gtk
24     import gtk.gdk
25 except ImportError:
26     Gtk = None
27
28
29 @unittest.skipUnless(Gtk, 'Gtk not available')
30 class TestATKCompat(unittest.TestCase):
31     def test_object(self):
32         self.assertTrue(hasattr(atk, 'Object'))
33
34
35 @unittest.skipUnless(Gtk, 'Gtk not available')
36 class TestPangoCompat(unittest.TestCase):
37     def test_layout(self):
38         self.assertTrue(hasattr(pango, 'Layout'))
39
40
41 @unittest.skipUnless(Gtk, 'Gtk not available')
42 class TestPangoCairoCompat(unittest.TestCase):
43     def test_error_underline_path(self):
44         self.assertTrue(hasattr(pangocairo, 'error_underline_path'))
45
46
47 @unittest.skipUnless(Gtk, 'Gtk not available')
48 class TestGTKCompat(unittest.TestCase):
49     def test_buttons(self):
50         self.assertEqual(Gdk._2BUTTON_PRESS, 5)
51         self.assertEqual(Gdk.BUTTON_PRESS, 4)
52
53     def test_enums(self):
54         self.assertEqual(gtk.WINDOW_TOPLEVEL, Gtk.WindowType.TOPLEVEL)
55         self.assertEqual(gtk.PACK_START, Gtk.PackType.START)
56
57     def test_flags(self):
58         self.assertEqual(gtk.EXPAND, Gtk.AttachOptions.EXPAND)
59         self.assertEqual(gtk.gdk.SHIFT_MASK, Gdk.ModifierType.SHIFT_MASK)
60
61     def test_keysyms(self):
62         import gtk.keysyms
63         self.assertEqual(gtk.keysyms.Escape, Gdk.KEY_Escape)
64         self.assertTrue(gtk.keysyms._0, Gdk.KEY_0)
65
66     def test_style(self):
67         widget = gtk.Button()
68         self.assertTrue(isinstance(widget.style.base[gtk.STATE_NORMAL],
69                                    gtk.gdk.Color))
70
71     def test_alignment(self):
72         a = gtk.Alignment()
73         self.assertEqual(a.props.xalign, 0.0)
74         self.assertEqual(a.props.yalign, 0.0)
75         self.assertEqual(a.props.xscale, 0.0)
76         self.assertEqual(a.props.yscale, 0.0)
77
78     def test_box(self):
79         box = gtk.Box()
80         child = gtk.Button()
81
82         box.pack_start(child)
83         expand, fill, padding, pack_type = box.query_child_packing(child)
84         self.assertTrue(expand)
85         self.assertTrue(fill)
86         self.assertEqual(padding, 0)
87         self.assertEqual(pack_type, gtk.PACK_START)
88
89         child = gtk.Button()
90         box.pack_end(child)
91         expand, fill, padding, pack_type = box.query_child_packing(child)
92         self.assertTrue(expand)
93         self.assertTrue(fill)
94         self.assertEqual(padding, 0)
95         self.assertEqual(pack_type, gtk.PACK_END)
96
97     def test_combobox_entry(self):
98         liststore = gtk.ListStore(int, str)
99         liststore.append((1, 'One'))
100         liststore.append((2, 'Two'))
101         liststore.append((3, 'Three'))
102         # might cause a Pango warning, do not break on this
103         old_mask = GLib.log_set_always_fatal(
104             GLib.LogLevelFlags.LEVEL_CRITICAL | GLib.LogLevelFlags.LEVEL_ERROR)
105         try:
106             combo = gtk.ComboBoxEntry(model=liststore)
107         finally:
108             GLib.log_set_always_fatal(old_mask)
109         combo.set_text_column(1)
110         combo.set_active(0)
111         self.assertEqual(combo.get_text_column(), 1)
112         self.assertEqual(combo.get_child().get_text(), 'One')
113         combo = gtk.combo_box_entry_new()
114         combo.set_model(liststore)
115         combo.set_text_column(1)
116         combo.set_active(0)
117         self.assertEqual(combo.get_text_column(), 1)
118         self.assertEqual(combo.get_child().get_text(), 'One')
119         combo = gtk.combo_box_entry_new_with_model(liststore)
120         combo.set_text_column(1)
121         combo.set_active(0)
122         self.assertEqual(combo.get_text_column(), 1)
123         self.assertEqual(combo.get_child().get_text(), 'One')
124
125     def test_size_request(self):
126         box = gtk.Box()
127         self.assertEqual(box.size_request(), [0, 0])
128
129     def test_pixbuf(self):
130         gtk.gdk.Pixbuf()
131
132     def test_pixbuf_loader(self):
133         loader = gtk.gdk.PixbufLoader('png')
134         loader.close()
135
136     def test_pixbuf_formats(self):
137         formats = gtk.gdk.pixbuf_get_formats()
138         self.assertEqual(type(formats[0]), dict)
139         self.assertTrue('name' in formats[0])
140         self.assertTrue('description' in formats[0])
141         self.assertTrue('mime_types' in formats[0])
142         self.assertEqual(type(formats[0]['extensions']), list)
143
144     def test_gdk_window(self):
145         w = gtk.Window()
146         w.realize()
147         self.assertEqual(w.get_window().get_origin(), (0, 0))