• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // SPDX-License-Identifier: MIT
2 /*
3  * Copyright © 2013 David Herrmann <dh.herrmann@gmail.com>
4  */
5 
6 #include "config.h"
7 #include "test-common.h"
8 
START_TEST(test_type_names)9 START_TEST(test_type_names)
10 {
11 	ck_assert_int_eq(libevdev_event_type_from_name("EV_SYN"), EV_SYN);
12 	ck_assert_int_eq(libevdev_event_type_from_name("EV_KEY"), EV_KEY);
13 	ck_assert_int_eq(libevdev_event_type_from_name("EV_REL"), EV_REL);
14 	ck_assert_int_eq(libevdev_event_type_from_name("EV_ABS"), EV_ABS);
15 	ck_assert_int_eq(libevdev_event_type_from_name("EV_MSC"), EV_MSC);
16 	ck_assert_int_eq(libevdev_event_type_from_name("EV_SND"), EV_SND);
17 	ck_assert_int_eq(libevdev_event_type_from_name("EV_SW"), EV_SW);
18 	ck_assert_int_eq(libevdev_event_type_from_name("EV_LED"), EV_LED);
19 	ck_assert_int_eq(libevdev_event_type_from_name("EV_REP"), EV_REP);
20 	ck_assert_int_eq(libevdev_event_type_from_name("EV_FF"), EV_FF);
21 	ck_assert_int_eq(libevdev_event_type_from_name("EV_FF_STATUS"), EV_FF_STATUS);
22 	ck_assert_int_eq(libevdev_event_type_from_name("EV_MAX"), EV_MAX);
23 
24 	ck_assert_int_eq(libevdev_event_type_from_name_n("EV_SYNTAX", 6), EV_SYN);
25 	ck_assert_int_eq(libevdev_event_type_from_name_n("EV_REPTILE", 6), EV_REP);
26 }
27 END_TEST
28 
START_TEST(test_type_names_invalid)29 START_TEST(test_type_names_invalid)
30 {
31 	ck_assert_int_eq(libevdev_event_type_from_name("EV_Syn"), -1);
32 	ck_assert_int_eq(libevdev_event_type_from_name("ev_SYN"), -1);
33 	ck_assert_int_eq(libevdev_event_type_from_name("SYN"), -1);
34 	ck_assert_int_eq(libevdev_event_type_from_name("EV_SYNTAX"), -1);
35 
36 	ck_assert_int_eq(libevdev_event_type_from_name_n("EV_SYN", 5), -1);
37 	ck_assert_int_eq(libevdev_event_type_from_name_n("EV_REPTILE", 7), -1);
38 }
39 END_TEST
40 
START_TEST(test_type_name_lookup)41 START_TEST(test_type_name_lookup)
42 {
43 	ck_assert_int_eq(libevdev_event_type_from_code_name("SYN_REPORT"), EV_SYN);
44 	ck_assert_int_eq(libevdev_event_type_from_code_name("KEY_A"), EV_KEY);
45 	ck_assert_int_eq(libevdev_event_type_from_code_name("REL_Z"), EV_REL);
46 	ck_assert_int_eq(libevdev_event_type_from_code_name("ABS_Z"), EV_ABS);
47 	ck_assert_int_eq(libevdev_event_type_from_code_name("MSC_SERIAL"), EV_MSC);
48 	ck_assert_int_eq(libevdev_event_type_from_code_name("SND_TONE"), EV_SND);
49 	ck_assert_int_eq(libevdev_event_type_from_code_name("SW_TABLET_MODE"), EV_SW);
50 	ck_assert_int_eq(libevdev_event_type_from_code_name("LED_CHARGING"), EV_LED);
51 	ck_assert_int_eq(libevdev_event_type_from_code_name("REP_PERIOD"), EV_REP);
52 	ck_assert_int_eq(libevdev_event_type_from_code_name("FF_SPRING"), EV_FF);
53 	ck_assert_int_eq(libevdev_event_type_from_code_name("FF_STATUS_STOPPED"), EV_FF_STATUS);
54 
55 	ck_assert_int_eq(libevdev_event_type_from_code_name_n("KEY_1zzzzz", 5), EV_KEY);
56 	ck_assert_int_eq(libevdev_event_type_from_code_name_n("ABS_Zooom", 5), EV_ABS);
57 
58 	ck_assert_int_eq(libevdev_event_type_from_code_name("KEY_MAX"), EV_KEY);
59 	ck_assert_int_eq(libevdev_event_type_from_code_name("REL_MAX"), EV_REL);
60 	ck_assert_int_eq(libevdev_event_type_from_code_name("ABS_MAX"), EV_ABS);
61 }
62 END_TEST
63 
START_TEST(test_type_name_lookup_invalid)64 START_TEST(test_type_name_lookup_invalid)
65 {
66 	ck_assert_int_eq(libevdev_event_type_from_name("SYN_REPORTED"),  -1);
67 	ck_assert_int_eq(libevdev_event_type_from_name("syn_blah"), -1);
68 	ck_assert_int_eq(libevdev_event_type_from_name("SYN_"), -1);
69 	ck_assert_int_eq(libevdev_event_type_from_name("KEY_BANANA"), -1);
70 
71 	ck_assert_int_eq(libevdev_event_type_from_name_n("KEY_BA", 6), -1);
72 	ck_assert_int_eq(libevdev_event_type_from_name_n("KEY_BLAH", 8), -1);
73 }
74 END_TEST
75 
START_TEST(test_code_names)76 START_TEST(test_code_names)
77 {
78 	ck_assert_int_eq(libevdev_event_code_from_name(EV_SYN, "SYN_REPORT"), SYN_REPORT);
79 	ck_assert_int_eq(libevdev_event_code_from_name(EV_ABS, "ABS_X"), ABS_X);
80 	ck_assert_int_eq(libevdev_event_code_from_name(EV_KEY, "BTN_A"), BTN_A);
81 	ck_assert_int_eq(libevdev_event_code_from_name(EV_KEY, "KEY_A"), KEY_A);
82 	ck_assert_int_eq(libevdev_event_code_from_name(EV_REL, "REL_X"), REL_X);
83 	ck_assert_int_eq(libevdev_event_code_from_name(EV_MSC, "MSC_RAW"), MSC_RAW);
84 	ck_assert_int_eq(libevdev_event_code_from_name(EV_LED, "LED_KANA"), LED_KANA);
85 	ck_assert_int_eq(libevdev_event_code_from_name(EV_SND, "SND_BELL"), SND_BELL);
86 	ck_assert_int_eq(libevdev_event_code_from_name(EV_REP, "REP_DELAY"), REP_DELAY);
87 	ck_assert_int_eq(libevdev_event_code_from_name(EV_SYN, "SYN_DROPPED"), SYN_DROPPED);
88 	ck_assert_int_eq(libevdev_event_code_from_name(EV_KEY, "KEY_RESERVED"), KEY_RESERVED);
89 	ck_assert_int_eq(libevdev_event_code_from_name(EV_KEY, "BTN_0"), BTN_0);
90 	ck_assert_int_eq(libevdev_event_code_from_name(EV_KEY, "KEY_0"), KEY_0);
91 	ck_assert_int_eq(libevdev_event_code_from_name(EV_FF, "FF_GAIN"), FF_GAIN);
92 	ck_assert_int_eq(libevdev_event_code_from_name(EV_FF_STATUS, "FF_STATUS_MAX"), FF_STATUS_MAX);
93 	ck_assert_int_eq(libevdev_event_code_from_name(EV_SW, "SW_PEN_INSERTED"), SW_PEN_INSERTED);
94 
95 	ck_assert_int_eq(libevdev_event_code_from_name_n(EV_ABS, "ABS_YXZ", 5), ABS_Y);
96 }
97 END_TEST
98 
START_TEST(test_code_name_lookup)99 START_TEST(test_code_name_lookup)
100 {
101 	/* Same as test_code_names() but without the type */
102 	ck_assert_int_eq(libevdev_event_code_from_code_name("SYN_REPORT"), SYN_REPORT);
103 	ck_assert_int_eq(libevdev_event_code_from_code_name("ABS_X"), ABS_X);
104 	ck_assert_int_eq(libevdev_event_code_from_code_name("BTN_A"), BTN_A);
105 	ck_assert_int_eq(libevdev_event_code_from_code_name("KEY_A"), KEY_A);
106 	ck_assert_int_eq(libevdev_event_code_from_code_name("REL_X"), REL_X);
107 	ck_assert_int_eq(libevdev_event_code_from_code_name("MSC_RAW"), MSC_RAW);
108 	ck_assert_int_eq(libevdev_event_code_from_code_name("LED_KANA"), LED_KANA);
109 	ck_assert_int_eq(libevdev_event_code_from_code_name("SND_BELL"), SND_BELL);
110 	ck_assert_int_eq(libevdev_event_code_from_code_name("REP_DELAY"), REP_DELAY);
111 	ck_assert_int_eq(libevdev_event_code_from_code_name("SYN_DROPPED"), SYN_DROPPED);
112 	ck_assert_int_eq(libevdev_event_code_from_code_name("KEY_RESERVED"), KEY_RESERVED);
113 	ck_assert_int_eq(libevdev_event_code_from_code_name("BTN_0"), BTN_0);
114 	ck_assert_int_eq(libevdev_event_code_from_code_name("KEY_0"), KEY_0);
115 	ck_assert_int_eq(libevdev_event_code_from_code_name("FF_GAIN"), FF_GAIN);
116 	ck_assert_int_eq(libevdev_event_code_from_code_name("FF_STATUS_MAX"), FF_STATUS_MAX);
117 	ck_assert_int_eq(libevdev_event_code_from_code_name("SW_PEN_INSERTED"), SW_PEN_INSERTED);
118 
119 	ck_assert_int_eq(libevdev_event_code_from_code_name_n("ABS_YXZ", 5), ABS_Y);
120 }
121 END_TEST
122 
START_TEST(test_code_names_invalid)123 START_TEST(test_code_names_invalid)
124 {
125 	ck_assert_int_eq(libevdev_event_code_from_name(EV_MAX, "MAX_FAKE"), -1);
126 	ck_assert_int_eq(libevdev_event_code_from_name(EV_CNT, "CNT_FAKE"), -1);
127 	ck_assert_int_eq(libevdev_event_code_from_name(EV_PWR, "PWR_SOMETHING"), -1);
128 	ck_assert_int_eq(libevdev_event_code_from_name(EV_ABS, "EV_ABS"), -1);
129 	ck_assert_int_eq(libevdev_event_code_from_name(EV_ABS, "ABS_XY"), -1);
130 	ck_assert_int_eq(libevdev_event_code_from_name(EV_KEY, "BTN_GAMEPAD"), -1);
131 	ck_assert_int_eq(libevdev_event_code_from_name(EV_KEY, "BUS_PCI"), -1);
132 	ck_assert_int_eq(libevdev_event_code_from_name(EV_FF_STATUS, "FF_STATUS"), -1);
133 	ck_assert_int_eq(libevdev_event_code_from_name(EV_FF_STATUS, "FF_STATUS_"), -1);
134 	ck_assert_int_eq(libevdev_event_code_from_name(EV_FF, "FF_STATUS"), -1);
135 	ck_assert_int_eq(libevdev_event_code_from_name(EV_FF, "FF_STATUS_"), -1);
136 	ck_assert_int_eq(libevdev_event_code_from_name(EV_KEY, "ID_BUS"), -1);
137 	ck_assert_int_eq(libevdev_event_code_from_name(EV_SND, "SND_CNT"), -1);
138 	ck_assert_int_eq(libevdev_event_code_from_name(EV_SW, "SW_CNT"), -1);
139 
140 	ck_assert_int_eq(libevdev_event_code_from_name_n(EV_ABS, "ABS_X", 4), -1);
141 }
142 END_TEST
143 
START_TEST(test_code_name_lookup_invalid)144 START_TEST(test_code_name_lookup_invalid)
145 {
146 	/* Same as test_code_names_invalid() but without the type */
147 	ck_assert_int_eq(libevdev_event_code_from_code_name("MAX_FAKE"), -1);
148 	ck_assert_int_eq(libevdev_event_code_from_code_name("CNT_FAKE"), -1);
149 	ck_assert_int_eq(libevdev_event_code_from_code_name("PWR_SOMETHING"), -1);
150 	ck_assert_int_eq(libevdev_event_code_from_code_name("EV_ABS"), -1);
151 	ck_assert_int_eq(libevdev_event_code_from_code_name("ABS_XY"), -1);
152 	ck_assert_int_eq(libevdev_event_code_from_code_name("BTN_GAMEPAD"), -1);
153 	ck_assert_int_eq(libevdev_event_code_from_code_name("BUS_PCI"), -1);
154 	ck_assert_int_eq(libevdev_event_code_from_code_name("FF_STATUS"), -1);
155 	ck_assert_int_eq(libevdev_event_code_from_code_name("FF_STATUS_"), -1);
156 	ck_assert_int_eq(libevdev_event_code_from_code_name("FF_STATUS"), -1);
157 	ck_assert_int_eq(libevdev_event_code_from_code_name("FF_STATUS_"), -1);
158 	ck_assert_int_eq(libevdev_event_code_from_code_name("ID_BUS"), -1);
159 	ck_assert_int_eq(libevdev_event_code_from_code_name("SND_CNT"), -1);
160 	ck_assert_int_eq(libevdev_event_code_from_code_name("SW_CNT"), -1);
161 
162 	ck_assert_int_eq(libevdev_event_code_from_code_name_n("ABS_X", 4), -1);
163 }
164 END_TEST
165 
START_TEST(test_code_names_max)166 START_TEST(test_code_names_max)
167 {
168 	ck_assert_int_eq(libevdev_event_code_from_name(EV_SYN, "SYN_MAX"), SYN_MAX);
169 	ck_assert_int_eq(libevdev_event_code_from_name(EV_KEY, "KEY_MAX"), KEY_MAX);
170 	ck_assert_int_eq(libevdev_event_code_from_name(EV_REL, "REL_MAX"), REL_MAX);
171 	ck_assert_int_eq(libevdev_event_code_from_name(EV_ABS, "ABS_MAX"), ABS_MAX);
172 	ck_assert_int_eq(libevdev_event_code_from_name(EV_MSC, "MSC_MAX"), MSC_MAX);
173 	ck_assert_int_eq(libevdev_event_code_from_name(EV_SW, "SW_MAX"), SW_MAX);
174 	ck_assert_int_eq(libevdev_event_code_from_name(EV_LED, "LED_MAX"), LED_MAX);
175 	ck_assert_int_eq(libevdev_event_code_from_name(EV_SND, "SND_MAX"), SND_MAX);
176 	ck_assert_int_eq(libevdev_event_code_from_name(EV_REP, "REP_MAX"), REP_MAX);
177 	ck_assert_int_eq(libevdev_event_code_from_name(EV_FF, "FF_MAX"), FF_MAX);
178 
179 	ck_assert_int_eq(libevdev_event_code_from_code_name("SYN_MAX"), SYN_MAX);
180 	ck_assert_int_eq(libevdev_event_code_from_code_name("KEY_MAX"), KEY_MAX);
181 	ck_assert_int_eq(libevdev_event_code_from_code_name("REL_MAX"), REL_MAX);
182 	ck_assert_int_eq(libevdev_event_code_from_code_name("ABS_MAX"), ABS_MAX);
183 	ck_assert_int_eq(libevdev_event_code_from_code_name("MSC_MAX"), MSC_MAX);
184 	ck_assert_int_eq(libevdev_event_code_from_code_name("SW_MAX"), SW_MAX);
185 	ck_assert_int_eq(libevdev_event_code_from_code_name("LED_MAX"), LED_MAX);
186 	ck_assert_int_eq(libevdev_event_code_from_code_name("SND_MAX"), SND_MAX);
187 	ck_assert_int_eq(libevdev_event_code_from_code_name("REP_MAX"), REP_MAX);
188 	ck_assert_int_eq(libevdev_event_code_from_code_name("FF_MAX"), FF_MAX);
189 }
190 END_TEST
191 
START_TEST(test_value_names)192 START_TEST(test_value_names)
193 {
194 	ck_assert_int_eq(libevdev_event_value_from_name(EV_ABS, ABS_MT_TOOL_TYPE, "MT_TOOL_PALM"), MT_TOOL_PALM);
195 	ck_assert_int_eq(libevdev_event_value_from_name(EV_ABS, ABS_MT_TOOL_TYPE, "MT_TOOL_FINGER"), MT_TOOL_FINGER);
196 	ck_assert_int_eq(libevdev_event_value_from_name(EV_ABS, ABS_MT_TOOL_TYPE, "MT_TOOL_PEN"), MT_TOOL_PEN);
197 	ck_assert_int_eq(libevdev_event_value_from_name(EV_ABS, ABS_MT_TOOL_TYPE, "MT_TOOL_MAX"), MT_TOOL_MAX);
198 }
199 END_TEST
200 
START_TEST(test_value_names_invalid)201 START_TEST(test_value_names_invalid)
202 {
203 	ck_assert_int_eq(libevdev_event_value_from_name(EV_SYN, REL_X, "MT_TOOL_PALM"), -1);
204 	ck_assert_int_eq(libevdev_event_value_from_name(EV_REL, REL_X, "MT_TOOL_PALM"), -1);
205 	ck_assert_int_eq(libevdev_event_value_from_name(EV_ABS, ABS_X, "MT_TOOL_PALM"), -1);
206 	ck_assert_int_eq(libevdev_event_value_from_name(EV_ABS, ABS_MT_TOOL_TYPE, "MT_TOOL_"), -1);
207 	ck_assert_int_eq(libevdev_event_value_from_name(EV_ABS, ABS_MT_TOOL_TYPE, "MT_TOOL_PALMA"), -1);
208 	ck_assert_int_eq(libevdev_event_value_from_name(EV_ABS, ABS_MT_TOOL_TYPE, ""), -1);
209 	ck_assert_int_eq(libevdev_event_value_from_name(EV_ABS, ABS_MT_TOOL_TYPE, "EV_ABS"), -1);
210 	ck_assert_int_eq(libevdev_event_value_from_name(EV_ABS, ABS_MT_TOOL_TYPE, "ABS_X"), -1);
211 }
212 END_TEST
213 
START_TEST(test_properties)214 START_TEST(test_properties)
215 {
216 	struct prop {
217 		int val;
218 		const char *name;
219 	} lut[] = {
220 		{ INPUT_PROP_DIRECT, "INPUT_PROP_DIRECT" },
221 		{ INPUT_PROP_POINTER, "INPUT_PROP_POINTER" },
222 		{ INPUT_PROP_MAX, "INPUT_PROP_MAX" },
223 		{ -1, NULL}
224 	};
225 	struct prop *p = lut;
226 	while (p->val != -1) {
227 		ck_assert_int_eq(libevdev_property_from_name(p->name), p->val);
228 		p++;
229 	}
230 }
231 END_TEST
232 
START_TEST(test_properties_invalid)233 START_TEST(test_properties_invalid)
234 {
235 	ck_assert_int_eq(libevdev_property_from_name("EV_ABS"), -1);
236 	ck_assert_int_eq(libevdev_property_from_name("INPUT_PROP"), -1);
237 	ck_assert_int_eq(libevdev_property_from_name("INPUT_PROP_"), -1);
238 	ck_assert_int_eq(libevdev_property_from_name("INPUT_PROP_FOO"), -1);
239 
240 	ck_assert_int_eq(libevdev_property_from_name_n("INPUT_PROP_POINTER", 11), -1);
241 	ck_assert_int_eq(libevdev_property_from_name_n("INPUT_PROP_POINTER",
242 						strlen("INPUT_PROP_POINTER") - 1), -1);
243 }
244 END_TEST
245 
TEST_SUITE(event_code_suite)246 TEST_SUITE(event_code_suite)
247 {
248 	Suite *s = suite_create("Event codes");
249 
250 	add_test(s, test_type_names);
251 	add_test(s, test_type_names_invalid);
252 	add_test(s, test_type_name_lookup);
253 	add_test(s, test_type_name_lookup_invalid);
254 
255 	add_test(s, test_code_names);
256 	add_test(s, test_code_name_lookup);
257 	add_test(s, test_code_names_invalid);
258 	add_test(s, test_code_name_lookup_invalid);
259 	add_test(s, test_code_names_max);
260 
261 	add_test(s, test_value_names);
262 	add_test(s, test_value_names_invalid);
263 
264 	add_test(s, test_properties);
265 	add_test(s, test_properties_invalid);
266 
267 	return s;
268 }
269