1# Copyright (c) 2009 Twisted Matrix Laboratories.
2"""
3Tests for GTK2 GUI manhole.
4"""
5
6skip = False
7
8try:
9    import pygtk
10    pygtk.require("2.0")
11except:
12    skip = "GTK 2.0 not available"
13else:
14    try:
15        import gtk
16    except ImportError:
17        skip = "GTK 2.0 not available"
18    except RuntimeError:
19        skip = "Old version of GTK 2.0 requires DISPLAY, and we don't have one."
20    else:
21        if gtk.gtk_version[0] == 1:
22            skip = "Requested GTK 2.0, but 1.0 was already imported."
23        else:
24            from twisted.manhole.ui.gtk2manhole import ConsoleInput
25
26from twisted.trial.unittest import TestCase
27
28from twisted.python.reflect import prefixedMethodNames
29
30class ConsoleInputTests(TestCase):
31    """
32    Tests for L{ConsoleInput}.
33    """
34
35    def test_reverseKeymap(self):
36        """
37        Verify that a L{ConsoleInput} has a reverse mapping of the keysym names
38        it needs for event handling to their corresponding keysym.
39        """
40        ci = ConsoleInput(None)
41        for eventName in prefixedMethodNames(ConsoleInput, 'key_'):
42            keysymName = eventName.split("_")[-1]
43            keysymValue = getattr(gtk.keysyms, keysymName)
44            self.assertEqual(ci.rkeymap[keysymValue], keysymName)
45
46
47    skip = skip
48
49