hid-input-test.c 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. // SPDX-License-Identifier: GPL-2.0+
  2. /*
  3. * HID to Linux Input mapping
  4. *
  5. * Copyright (c) 2022 José Expósito <[email protected]>
  6. */
  7. #include <kunit/test.h>
  8. static void hid_test_input_set_battery_charge_status(struct kunit *test)
  9. {
  10. struct hid_device *dev;
  11. bool handled;
  12. dev = kunit_kzalloc(test, sizeof(*dev), GFP_KERNEL);
  13. KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
  14. handled = hidinput_set_battery_charge_status(dev, HID_DG_HEIGHT, 0);
  15. KUNIT_EXPECT_FALSE(test, handled);
  16. KUNIT_EXPECT_EQ(test, dev->battery_charge_status, POWER_SUPPLY_STATUS_UNKNOWN);
  17. handled = hidinput_set_battery_charge_status(dev, HID_BAT_CHARGING, 0);
  18. KUNIT_EXPECT_TRUE(test, handled);
  19. KUNIT_EXPECT_EQ(test, dev->battery_charge_status, POWER_SUPPLY_STATUS_DISCHARGING);
  20. handled = hidinput_set_battery_charge_status(dev, HID_BAT_CHARGING, 1);
  21. KUNIT_EXPECT_TRUE(test, handled);
  22. KUNIT_EXPECT_EQ(test, dev->battery_charge_status, POWER_SUPPLY_STATUS_CHARGING);
  23. }
  24. static void hid_test_input_get_battery_property(struct kunit *test)
  25. {
  26. struct power_supply *psy;
  27. struct hid_device *dev;
  28. union power_supply_propval val;
  29. int ret;
  30. dev = kunit_kzalloc(test, sizeof(*dev), GFP_KERNEL);
  31. KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
  32. dev->battery_avoid_query = true;
  33. psy = kunit_kzalloc(test, sizeof(*psy), GFP_KERNEL);
  34. KUNIT_ASSERT_NOT_ERR_OR_NULL(test, psy);
  35. psy->drv_data = dev;
  36. dev->battery_status = HID_BATTERY_UNKNOWN;
  37. dev->battery_charge_status = POWER_SUPPLY_STATUS_CHARGING;
  38. ret = hidinput_get_battery_property(psy, POWER_SUPPLY_PROP_STATUS, &val);
  39. KUNIT_EXPECT_EQ(test, ret, 0);
  40. KUNIT_EXPECT_EQ(test, val.intval, POWER_SUPPLY_STATUS_UNKNOWN);
  41. dev->battery_status = HID_BATTERY_REPORTED;
  42. dev->battery_charge_status = POWER_SUPPLY_STATUS_CHARGING;
  43. ret = hidinput_get_battery_property(psy, POWER_SUPPLY_PROP_STATUS, &val);
  44. KUNIT_EXPECT_EQ(test, ret, 0);
  45. KUNIT_EXPECT_EQ(test, val.intval, POWER_SUPPLY_STATUS_CHARGING);
  46. dev->battery_status = HID_BATTERY_REPORTED;
  47. dev->battery_charge_status = POWER_SUPPLY_STATUS_DISCHARGING;
  48. ret = hidinput_get_battery_property(psy, POWER_SUPPLY_PROP_STATUS, &val);
  49. KUNIT_EXPECT_EQ(test, ret, 0);
  50. KUNIT_EXPECT_EQ(test, val.intval, POWER_SUPPLY_STATUS_DISCHARGING);
  51. }
  52. static struct kunit_case hid_input_tests[] = {
  53. KUNIT_CASE(hid_test_input_set_battery_charge_status),
  54. KUNIT_CASE(hid_test_input_get_battery_property),
  55. { }
  56. };
  57. static struct kunit_suite hid_input_test_suite = {
  58. .name = "hid_input",
  59. .test_cases = hid_input_tests,
  60. };
  61. kunit_test_suite(hid_input_test_suite);
  62. MODULE_DESCRIPTION("HID input KUnit tests");
  63. MODULE_LICENSE("GPL");
  64. MODULE_AUTHOR("José Expósito <[email protected]>");