6 from gi.repository import Gtk, Atk, Gdk
12 from helper import capture_glib_deprecation_warnings
15 @unittest.skipUnless(Gdk, 'Gdk not available')
16 class TestGdkAtom(unittest.TestCase):
17 def test_create(self):
18 atom = Gdk.Atom.intern('my_string', False)
19 self.assertEqual(atom.name(), 'my_string')
22 atom = Gdk.Atom.intern('my_string', False)
23 self.assertEqual(str(atom), 'my_string')
25 self.assertEqual(str(Gdk.SELECTION_CLIPBOARD), 'CLIPBOARD')
28 # __repr__ should generate a string which is parsable when possible
29 # http://docs.python.org/2/reference/datamodel.html#object.__repr__
30 atom = Gdk.Atom.intern('my_string', False)
31 self.assertEqual(repr(atom), 'Gdk.Atom.intern("my_string", False)')
32 self.assertEqual(eval(repr(atom)), atom)
34 self.assertEqual(repr(Gdk.SELECTION_CLIPBOARD), 'Gdk.Atom.intern("CLIPBOARD", False)')
36 def test_in_single(self):
37 a_selection = Gdk.Atom.intern('test_clipboard', False)
38 clipboard = Gtk.Clipboard.get(a_selection)
39 clipboard.set_text('hello', 5)
41 # needs a Gdk.Atom, not a string
42 self.assertRaises(TypeError, Gtk.Clipboard.get, 'CLIPBOARD')
44 def test_in_array(self):
45 a_plain = Gdk.Atom.intern('text/plain', False)
46 a_html = Gdk.Atom.intern('text/html', False)
47 a_jpeg = Gdk.Atom.intern('image/jpeg', False)
49 self.assertFalse(Gtk.targets_include_text([]))
50 self.assertTrue(Gtk.targets_include_text([a_plain, a_html]))
51 self.assertFalse(Gtk.targets_include_text([a_jpeg]))
52 self.assertTrue(Gtk.targets_include_text([a_jpeg, a_plain]))
54 self.assertFalse(Gtk.targets_include_image([], False))
55 self.assertFalse(Gtk.targets_include_image([a_plain, a_html], False))
56 self.assertTrue(Gtk.targets_include_image([a_jpeg], False))
57 self.assertTrue(Gtk.targets_include_image([a_jpeg, a_plain], False))
59 @unittest.skipIf(sys.platform == "darwin", "fails on OSX")
60 def test_out_array(self):
61 a_selection = Gdk.Atom.intern('my_clipboard', False)
62 clipboard = Gtk.Clipboard.get(a_selection)
65 (res, targets) = clipboard.wait_for_targets()
66 self.assertEqual(res, False)
67 self.assertEqual(targets, [])
70 clipboard.set_text('hello', 5)
71 (res, targets) = clipboard.wait_for_targets()
72 self.assertEqual(res, True)
73 self.assertNotEqual(targets, [])
74 self.assertEqual(type(targets[0]), Gdk.Atom)
75 names = [t.name() for t in targets]
76 self.assertFalse(None in names, names)
77 self.assertTrue('TEXT' in names, names)
79 @unittest.skipIf(sys.platform == "darwin" or os.name == "nt",
80 "fails on OSX/Windows")
81 @unittest.skipIf(not Gdk or Gdk._version == "4.0", "not in gdk4")
82 def test_out_glist(self):
83 display = Gdk.Display.get_default()
84 with capture_glib_deprecation_warnings():
85 dm = display.get_device_manager()
86 device = dm.get_client_pointer()
87 axes = device.list_axes()
88 axes_names = [atom.name() for atom in axes]
89 self.assertNotEqual(axes_names, [])
90 self.assertTrue('Rel X' in axes_names)