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 9START_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} 27END_TEST 28 29START_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} 39END_TEST 40 41START_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} 62END_TEST 63 64START_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} 74END_TEST 75 76START_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} 97END_TEST 98 99START_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} 121END_TEST 122 123START_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} 142END_TEST 143 144START_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} 164END_TEST 165 166START_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} 190END_TEST 191 192START_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} 199END_TEST 200 201START_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} 212END_TEST 213 214START_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} 231END_TEST 232 233START_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} 244END_TEST 245 246TEST_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