| // SPDX-License-Identifier: GPL-2.0+ | |
| /* | |
| * HID to Linux Input mapping | |
| * | |
| * Copyright (c) 2022 José Expósito <jose.exposito89@gmail.com> | |
| */ | |
| #include <kunit/test.h> | |
| static void hid_test_input_update_battery_charge_status(struct kunit *test) | |
| { | |
| struct hid_battery *bat; | |
| bool handled; | |
| bat = kunit_kzalloc(test, sizeof(*bat), GFP_KERNEL); | |
| KUNIT_ASSERT_NOT_ERR_OR_NULL(test, bat); | |
| handled = hidinput_update_battery_charge_status(bat, HID_DG_HEIGHT, 0); | |
| KUNIT_EXPECT_FALSE(test, handled); | |
| KUNIT_EXPECT_EQ(test, bat->charge_status, POWER_SUPPLY_STATUS_UNKNOWN); | |
| handled = hidinput_update_battery_charge_status(bat, HID_BAT_CHARGING, 0); | |
| KUNIT_EXPECT_TRUE(test, handled); | |
| KUNIT_EXPECT_EQ(test, bat->charge_status, POWER_SUPPLY_STATUS_DISCHARGING); | |
| handled = hidinput_update_battery_charge_status(bat, HID_BAT_CHARGING, 1); | |
| KUNIT_EXPECT_TRUE(test, handled); | |
| KUNIT_EXPECT_EQ(test, bat->charge_status, POWER_SUPPLY_STATUS_CHARGING); | |
| } | |
| static void hid_test_input_get_battery_property(struct kunit *test) | |
| { | |
| struct power_supply *psy; | |
| struct hid_battery *bat; | |
| struct hid_device *dev; | |
| union power_supply_propval val; | |
| int ret; | |
| dev = kunit_kzalloc(test, sizeof(*dev), GFP_KERNEL); | |
| KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev); | |
| bat = kunit_kzalloc(test, sizeof(*bat), GFP_KERNEL); | |
| KUNIT_ASSERT_NOT_ERR_OR_NULL(test, bat); | |
| bat->dev = dev; | |
| bat->avoid_query = true; | |
| psy = kunit_kzalloc(test, sizeof(*psy), GFP_KERNEL); | |
| KUNIT_ASSERT_NOT_ERR_OR_NULL(test, psy); | |
| psy->drv_data = bat; | |
| bat->status = HID_BATTERY_UNKNOWN; | |
| bat->charge_status = POWER_SUPPLY_STATUS_CHARGING; | |
| ret = hidinput_get_battery_property(psy, POWER_SUPPLY_PROP_STATUS, &val); | |
| KUNIT_EXPECT_EQ(test, ret, 0); | |
| KUNIT_EXPECT_EQ(test, val.intval, POWER_SUPPLY_STATUS_UNKNOWN); | |
| bat->status = HID_BATTERY_REPORTED; | |
| bat->charge_status = POWER_SUPPLY_STATUS_CHARGING; | |
| ret = hidinput_get_battery_property(psy, POWER_SUPPLY_PROP_STATUS, &val); | |
| KUNIT_EXPECT_EQ(test, ret, 0); | |
| KUNIT_EXPECT_EQ(test, val.intval, POWER_SUPPLY_STATUS_CHARGING); | |
| bat->status = HID_BATTERY_REPORTED; | |
| bat->charge_status = POWER_SUPPLY_STATUS_DISCHARGING; | |
| ret = hidinput_get_battery_property(psy, POWER_SUPPLY_PROP_STATUS, &val); | |
| KUNIT_EXPECT_EQ(test, ret, 0); | |
| KUNIT_EXPECT_EQ(test, val.intval, POWER_SUPPLY_STATUS_DISCHARGING); | |
| } | |
| static struct kunit_case hid_input_tests[] = { | |
| KUNIT_CASE(hid_test_input_update_battery_charge_status), | |
| KUNIT_CASE(hid_test_input_get_battery_property), | |
| { } | |
| }; | |
| static struct kunit_suite hid_input_test_suite = { | |
| .name = "hid_input", | |
| .test_cases = hid_input_tests, | |
| }; | |
| kunit_test_suite(hid_input_test_suite); | |
| MODULE_DESCRIPTION("HID input KUnit tests"); | |
| MODULE_LICENSE("GPL"); | |
| MODULE_AUTHOR("José Expósito <jose.exposito89@gmail.com>"); |