1#include <locale.h>
2#include <gtk/gtk.h>
3
4static void
5test_keysyms_basic (void)
6{
7 struct {
8 guint keyval;
9 const char *name;
10 const char *other_name;
11 } tests[] = {
12 { GDK_KEY_space, "space", NULL },
13 { GDK_KEY_a, "a", NULL },
14 { GDK_KEY_Thorn, "Thorn", "THORN" },
15 { GDK_KEY_Hangul_J_RieulTieut, "Hangul_J_RieulTieut", NULL },
16 { GDK_KEY_Page_Up, "Page_Up", NULL },
17 { GDK_KEY_KP_Multiply, "KP_Multiply", NULL },
18 { GDK_KEY_MonBrightnessUp, "MonBrightnessUp", NULL },
19 { 0, NULL }
20 };
21 int i;
22
23 for (i = 0; tests[i].keyval != 0; i++)
24 {
25 g_assert_cmpstr (gdk_keyval_name (tests[i].keyval), ==, tests[i].name);
26 g_assert_cmpuint (gdk_keyval_from_name (tests[i].name), ==, tests[i].keyval);
27 if (tests[i].other_name)
28 g_assert_cmpuint (gdk_keyval_from_name (tests[i].other_name), ==, tests[i].keyval);
29 }
30}
31
32static void
33test_keysyms_void (void)
34{
35 g_assert_cmpuint (gdk_keyval_from_name ("NoSuchKeysym"), ==, GDK_KEY_VoidSymbol);
36 g_assert_cmpstr (gdk_keyval_name (GDK_KEY_VoidSymbol), ==, "0xffffff");
37}
38
39static void
40test_keysyms_xf86 (void)
41{
42 g_assert_cmpuint (gdk_keyval_from_name ("XF86MonBrightnessUp"), ==, GDK_KEY_MonBrightnessUp);
43 g_assert_cmpuint (gdk_keyval_from_name ("XF86MonBrightnessDown"), ==, GDK_KEY_MonBrightnessDown);
44 g_assert_cmpuint (gdk_keyval_from_name ("XF86KbdBrightnessUp"), ==, GDK_KEY_KbdBrightnessUp);
45 g_assert_cmpuint (gdk_keyval_from_name ("XF86KbdBrightnessDown"), ==, GDK_KEY_KbdBrightnessDown);
46 g_assert_cmpuint (gdk_keyval_from_name ("XF86Battery"), ==, GDK_KEY_Battery);
47 g_assert_cmpuint (gdk_keyval_from_name ("XF86Display"), ==, GDK_KEY_Display);
48
49 g_assert_cmpuint (gdk_keyval_from_name ("MonBrightnessUp"), ==, GDK_KEY_MonBrightnessUp);
50 g_assert_cmpuint (gdk_keyval_from_name ("MonBrightnessDown"), ==, GDK_KEY_MonBrightnessDown);
51 g_assert_cmpuint (gdk_keyval_from_name ("KbdBrightnessUp"), ==, GDK_KEY_KbdBrightnessUp);
52 g_assert_cmpuint (gdk_keyval_from_name ("KbdBrightnessDown"), ==, GDK_KEY_KbdBrightnessDown);
53 g_assert_cmpuint (gdk_keyval_from_name ("Battery"), ==, GDK_KEY_Battery);
54 g_assert_cmpuint (gdk_keyval_from_name ("Display"), ==, GDK_KEY_Display);
55}
56
57#define UNICODE_KEYVAL(wc) ((wc) | 0x01000000)
58
59static void
60test_key_case (void)
61{
62 struct {
63 guint lower;
64 guint upper;
65 } tests[] = {
66 { GDK_KEY_a, GDK_KEY_A },
67 { GDK_KEY_agrave, GDK_KEY_Agrave },
68 { GDK_KEY_thorn, GDK_KEY_Thorn },
69 { GDK_KEY_oslash, GDK_KEY_Oslash },
70 { GDK_KEY_aogonek, GDK_KEY_Aogonek },
71 { GDK_KEY_lstroke, GDK_KEY_Lstroke },
72 { GDK_KEY_scaron, GDK_KEY_Scaron },
73 { GDK_KEY_zcaron, GDK_KEY_Zcaron },
74 { GDK_KEY_racute, GDK_KEY_Racute },
75 { GDK_KEY_hstroke, GDK_KEY_Hstroke },
76 { GDK_KEY_jcircumflex, GDK_KEY_Jcircumflex },
77 { GDK_KEY_cabovedot, GDK_KEY_Cabovedot },
78 { GDK_KEY_rcedilla, GDK_KEY_Rcedilla },
79 { GDK_KEY_eng, GDK_KEY_ENG },
80 { GDK_KEY_amacron, GDK_KEY_Amacron },
81 { GDK_KEY_Serbian_dje, GDK_KEY_Serbian_DJE },
82 { GDK_KEY_Cyrillic_yu, GDK_KEY_Cyrillic_YU },
83 { GDK_KEY_Greek_alphaaccent, GDK_KEY_Greek_ALPHAaccent },
84 { GDK_KEY_Greek_omega, GDK_KEY_Greek_OMEGA },
85 { GDK_KEY_Greek_sigma, GDK_KEY_Greek_SIGMA },
86
87 { GDK_KEY_space, GDK_KEY_space },
88 { GDK_KEY_0, GDK_KEY_0 },
89 { GDK_KEY_KP_0, GDK_KEY_KP_0 },
90
91 /* Face Savouring Delicious Food */
92 { UNICODE_KEYVAL (0x1f60b), UNICODE_KEYVAL (0x1f60b) },
93 };
94 guint i;
95
96 for (i = 0; i < G_N_ELEMENTS (tests); i++)
97 {
98 g_assert_true (gdk_keyval_is_lower (tests[i].lower));
99 g_assert_true (gdk_keyval_is_upper (tests[i].upper));
100 g_assert_cmpuint (gdk_keyval_to_upper (tests[i].lower), ==, tests[i].upper);
101 g_assert_cmpuint (gdk_keyval_to_lower (tests[i].upper), ==, tests[i].lower);
102 }
103}
104
105static void
106test_key_unicode (void)
107{
108 struct {
109 guint key;
110 gunichar ch;
111 } tests[] = {
112 { GDK_KEY_a, 'a' },
113 { GDK_KEY_A, 'A' },
114 { GDK_KEY_EuroSign, 0x20ac },
115 { UNICODE_KEYVAL (0x1f60b), 0x1f60b },
116 };
117 guint i;
118
119 for (i = 0; i < G_N_ELEMENTS (tests); i++)
120 {
121 g_assert_cmpuint (gdk_keyval_to_unicode (tests[i].key), ==, tests[i].ch);
122 g_assert_cmpuint (gdk_unicode_to_keyval (tests[i].ch), ==, tests[i].key);
123 }
124}
125
126int
127main (int argc, char *argv[])
128{
129 setlocale (LC_ALL, locale: "");
130
131 (g_test_init) (argc: &argc, argv: &argv, NULL);
132 gtk_init ();
133
134 g_test_add_func (testpath: "/keysyms/basic", test_func: test_keysyms_basic);
135 g_test_add_func (testpath: "/keysyms/void", test_func: test_keysyms_void);
136 g_test_add_func (testpath: "/keysyms/xf86", test_func: test_keysyms_xf86);
137 g_test_add_func (testpath: "/keys/case", test_func: test_key_case);
138 g_test_add_func (testpath: "/keys/unicode", test_func: test_key_unicode);
139
140 return g_test_run ();
141}
142

source code of gtk/testsuite/gdk/keysyms.c