1 // SPDX-License-Identifier: GPL-2.0+ 2 /* 3 * HID to Linux Input mapping 4 * 5 * Copyright (c) 2022 José Expósito <jose.exposito89@gmail.com> 6 */ 7 8 #include <kunit/test.h> 9 10 static void hid_test_input_update_battery_charge_status(struct kunit *test) 11 { 12 struct hid_battery *bat; 13 bool handled; 14 15 bat = kunit_kzalloc(test, sizeof(*bat), GFP_KERNEL); 16 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, bat); 17 18 handled = hidinput_update_battery_charge_status(bat, HID_DG_HEIGHT, 0); 19 KUNIT_EXPECT_FALSE(test, handled); 20 KUNIT_EXPECT_EQ(test, bat->charge_status, POWER_SUPPLY_STATUS_UNKNOWN); 21 22 handled = hidinput_update_battery_charge_status(bat, HID_BAT_CHARGING, 0); 23 KUNIT_EXPECT_TRUE(test, handled); 24 KUNIT_EXPECT_EQ(test, bat->charge_status, POWER_SUPPLY_STATUS_DISCHARGING); 25 26 handled = hidinput_update_battery_charge_status(bat, HID_BAT_CHARGING, 1); 27 KUNIT_EXPECT_TRUE(test, handled); 28 KUNIT_EXPECT_EQ(test, bat->charge_status, POWER_SUPPLY_STATUS_CHARGING); 29 } 30 31 static void hid_test_input_get_battery_property(struct kunit *test) 32 { 33 struct power_supply *psy; 34 struct hid_battery *bat; 35 struct hid_device *dev; 36 union power_supply_propval val; 37 int ret; 38 39 dev = kunit_kzalloc(test, sizeof(*dev), GFP_KERNEL); 40 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev); 41 42 bat = kunit_kzalloc(test, sizeof(*bat), GFP_KERNEL); 43 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, bat); 44 bat->dev = dev; 45 bat->avoid_query = true; 46 47 psy = kunit_kzalloc(test, sizeof(*psy), GFP_KERNEL); 48 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, psy); 49 psy->drv_data = bat; 50 51 bat->status = HID_BATTERY_UNKNOWN; 52 bat->charge_status = POWER_SUPPLY_STATUS_CHARGING; 53 ret = hidinput_get_battery_property(psy, POWER_SUPPLY_PROP_STATUS, &val); 54 KUNIT_EXPECT_EQ(test, ret, 0); 55 KUNIT_EXPECT_EQ(test, val.intval, POWER_SUPPLY_STATUS_UNKNOWN); 56 57 bat->status = HID_BATTERY_REPORTED; 58 bat->charge_status = POWER_SUPPLY_STATUS_CHARGING; 59 ret = hidinput_get_battery_property(psy, POWER_SUPPLY_PROP_STATUS, &val); 60 KUNIT_EXPECT_EQ(test, ret, 0); 61 KUNIT_EXPECT_EQ(test, val.intval, POWER_SUPPLY_STATUS_CHARGING); 62 63 bat->status = HID_BATTERY_REPORTED; 64 bat->charge_status = POWER_SUPPLY_STATUS_DISCHARGING; 65 ret = hidinput_get_battery_property(psy, POWER_SUPPLY_PROP_STATUS, &val); 66 KUNIT_EXPECT_EQ(test, ret, 0); 67 KUNIT_EXPECT_EQ(test, val.intval, POWER_SUPPLY_STATUS_DISCHARGING); 68 } 69 70 static struct kunit_case hid_input_tests[] = { 71 KUNIT_CASE(hid_test_input_update_battery_charge_status), 72 KUNIT_CASE(hid_test_input_get_battery_property), 73 { } 74 }; 75 76 static struct kunit_suite hid_input_test_suite = { 77 .name = "hid_input", 78 .test_cases = hid_input_tests, 79 }; 80 81 kunit_test_suite(hid_input_test_suite); 82 83 MODULE_DESCRIPTION("HID input KUnit tests"); 84 MODULE_LICENSE("GPL"); 85 MODULE_AUTHOR("José Expósito <jose.exposito89@gmail.com>"); 86