1 # -*- Mode: Python; py-indent-offset: 4 -*-
2 # vim: tabstop=4 shiftwidth=4 expandtab
7 from gi.repository import GLib, Gio
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("./")
16 for info in f.enumerate_children("standard::*", 0, None):
17 iter_info.append(info.get_name())
20 enumerator = f.enumerate_children("standard::*", 0, None)
22 info = enumerator.next_file(None)
25 next_info.append(info.get_name())
27 self.assertEqual(iter_info, next_info)
29 def test_menu_item(self):
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())
41 class TestGSettings(unittest.TestCase):
43 self.settings = Gio.Settings('org.gnome.test')
44 # we change the values in the tests, so set them to predictable start
46 self.settings.reset('test-string')
47 self.settings.reset('test-array')
49 def test_native(self):
50 self.assertTrue('test-array' in self.settings.list_keys())
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)
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')
61 v = self.settings.get_value('test-array')
62 self.assertEqual(v.unpack(), [1, 2])
64 v = self.settings.get_value('test-tuple')
65 self.assertEqual(v.unpack(), (1, 2))
68 self.settings.set_string('test-string', 'World')
69 self.assertEqual(self.settings.get_string('test-string'), 'World')
71 self.settings.set_value('test-string', GLib.Variant('s', 'Goodbye'))
72 self.assertEqual(self.settings.get_string('test-string'), 'Goodbye')
74 def test_constructor(self):
75 # default constructor uses path from schema
76 self.assertEqual(self.settings.get_property('path'), '/tests/')
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)
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)
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))
98 self.assertRaises(KeyError, self.settings.__getitem__, 'unknown')
99 self.assertRaises(KeyError, self.settings.__getitem__, 2)
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])
107 self.assertRaises(TypeError, self.settings.__setitem__, 'test-string', 1)
108 self.assertRaises(KeyError, self.settings.__setitem__, 'unknown', 'moo')
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(), [])