1 | #include <locale.h> |
2 | #include <gtk/gtk.h> |
3 | |
4 | static void |
5 | test_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 | |
32 | static void |
33 | test_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 | |
39 | static void |
40 | test_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 | |
59 | static void |
60 | test_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 | |
105 | static void |
106 | test_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 | |
126 | int |
127 | main (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 | |