a2c2d5be50da7f1882e01359492f171ebb79ef5e
[platform/upstream/pygobject2.git] / tests / test_atoms.py
1 import os
2 import sys
3 import unittest
4
5 try:
6     from gi.repository import Gtk, Atk, Gdk
7 except ImportError:
8     Gdk = None
9     Atk = None
10     Gtk = None
11
12 from helper import capture_glib_deprecation_warnings
13
14
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')
20
21     def test_str(self):
22         atom = Gdk.Atom.intern('my_string', False)
23         self.assertEqual(str(atom), 'my_string')
24
25         self.assertEqual(str(Gdk.SELECTION_CLIPBOARD), 'CLIPBOARD')
26
27     def test_repr(self):
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)
33
34         self.assertEqual(repr(Gdk.SELECTION_CLIPBOARD), 'Gdk.Atom.intern("CLIPBOARD", False)')
35
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)
40
41         # needs a Gdk.Atom, not a string
42         self.assertRaises(TypeError, Gtk.Clipboard.get, 'CLIPBOARD')
43
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)
48
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]))
53
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))
58
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)
63
64         # empty
65         (res, targets) = clipboard.wait_for_targets()
66         self.assertEqual(res, False)
67         self.assertEqual(targets, [])
68
69         # text
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)
78
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)