4866c78791c50ed6629b6810de87e1c10d0edf7e
[platform/upstream/python-gobject.git] / tests / test_overrides_gio.py
1 # -*- Mode: Python; py-indent-offset: 4 -*-
2 # vim: tabstop=4 shiftwidth=4 expandtab
3
4 import unittest
5
6 import gi.overrides
7 from gi.repository import GLib, Gio
8
9
10 class TestGio(unittest.TestCase):
11     def test_file_enumerator(self):
12         self.assertEqual(Gio.FileEnumerator, gi.overrides.Gio.FileEnumerator)
13         f = Gio.file_new_for_path("./")
14
15         iter_info = []
16         for info in f.enumerate_children("standard::*", 0, None):
17             iter_info.append(info.get_name())
18
19         next_info = []
20         enumerator = f.enumerate_children("standard::*", 0, None)
21         while True:
22             info = enumerator.next_file(None)
23             if info is None:
24                 break
25             next_info.append(info.get_name())
26
27         self.assertEqual(iter_info, next_info)
28
29     def test_menu_item(self):
30         menu = Gio.Menu()
31         item = Gio.MenuItem()
32         item.set_attribute([("label", "s", "Test"),
33                             ("action", "s", "app.test")])
34         menu.append_item(item)
35         value = menu.get_item_attribute_value(0, "label", GLib.VariantType.new("s"))
36         self.assertEqual("Test", value.unpack())
37         value = menu.get_item_attribute_value(0, "action", GLib.VariantType.new("s"))
38         self.assertEqual("app.test", value.unpack())
39
40
41 class TestGSettings(unittest.TestCase):
42     def setUp(self):
43         self.settings = Gio.Settings('org.gnome.test')
44         # we change the values in the tests, so set them to predictable start
45         # value
46         self.settings.reset('test-string')
47         self.settings.reset('test-array')
48
49     def test_native(self):
50         self.assertTrue('test-array' in self.settings.list_keys())
51
52         # get various types
53         v = self.settings.get_value('test-boolean')
54         self.assertEqual(v.get_boolean(), True)
55         self.assertEqual(self.settings.get_boolean('test-boolean'), True)
56
57         v = self.settings.get_value('test-string')
58         self.assertEqual(v.get_string(), 'Hello')
59         self.assertEqual(self.settings.get_string('test-string'), 'Hello')
60
61         v = self.settings.get_value('test-array')
62         self.assertEqual(v.unpack(), [1, 2])
63
64         v = self.settings.get_value('test-tuple')
65         self.assertEqual(v.unpack(), (1, 2))
66
67         # set a value
68         self.settings.set_string('test-string', 'World')
69         self.assertEqual(self.settings.get_string('test-string'), 'World')
70
71         self.settings.set_value('test-string', GLib.Variant('s', 'Goodbye'))
72         self.assertEqual(self.settings.get_string('test-string'), 'Goodbye')
73
74     def test_constructor(self):
75         # default constructor uses path from schema
76         self.assertEqual(self.settings.get_property('path'), '/tests/')
77
78         # optional constructor arguments
79         with_path = Gio.Settings('org.gnome.nopathtest', path='/mypath/')
80         self.assertEqual(with_path.get_property('path'), '/mypath/')
81         self.assertEqual(with_path['np-int'], 42)
82
83     def test_override(self):
84         # dictionary interface
85         self.assertEqual(len(self.settings), 4)
86         self.assertTrue('test-array' in self.settings)
87         self.assertTrue('test-array' in self.settings.keys())
88         self.assertFalse('nonexisting' in self.settings)
89         self.assertFalse(4 in self.settings)
90         self.assertEqual(bool(self.settings), True)
91
92         # get various types
93         self.assertEqual(self.settings['test-boolean'], True)
94         self.assertEqual(self.settings['test-string'], 'Hello')
95         self.assertEqual(self.settings['test-array'], [1, 2])
96         self.assertEqual(self.settings['test-tuple'], (1, 2))
97
98         self.assertRaises(KeyError, self.settings.__getitem__, 'unknown')
99         self.assertRaises(KeyError, self.settings.__getitem__, 2)
100
101         # set a value
102         self.settings['test-string'] = 'Goodbye'
103         self.assertEqual(self.settings['test-string'], 'Goodbye')
104         self.settings['test-array'] = [3, 4, 5]
105         self.assertEqual(self.settings['test-array'], [3, 4, 5])
106
107         self.assertRaises(TypeError, self.settings.__setitem__, 'test-string', 1)
108         self.assertRaises(KeyError, self.settings.__setitem__, 'unknown', 'moo')
109
110     def test_empty(self):
111         empty = Gio.Settings('org.gnome.empty', path='/tests/')
112         self.assertEqual(len(empty), 0)
113         self.assertEqual(bool(empty), True)
114         self.assertEqual(empty.keys(), [])