137df9043SVimal Agrawal // SPDX-License-Identifier: GPL-2.0
237df9043SVimal Agrawal #include <kunit/test.h>
337df9043SVimal Agrawal #include <kunit/test-bug.h>
437df9043SVimal Agrawal #include <linux/module.h>
537df9043SVimal Agrawal #include <linux/miscdevice.h>
637df9043SVimal Agrawal
737df9043SVimal Agrawal /* dynamic minor (2) */
837df9043SVimal Agrawal static struct miscdevice dev_dynamic_minor = {
937df9043SVimal Agrawal .minor = 2,
1037df9043SVimal Agrawal .name = "dev_dynamic_minor",
1137df9043SVimal Agrawal };
1237df9043SVimal Agrawal
1337df9043SVimal Agrawal /* static minor (LCD_MINOR) */
1437df9043SVimal Agrawal static struct miscdevice dev_static_minor = {
1537df9043SVimal Agrawal .minor = LCD_MINOR,
1637df9043SVimal Agrawal .name = "dev_static_minor",
1737df9043SVimal Agrawal };
1837df9043SVimal Agrawal
1937df9043SVimal Agrawal /* misc dynamic minor */
2037df9043SVimal Agrawal static struct miscdevice dev_misc_dynamic_minor = {
2137df9043SVimal Agrawal .minor = MISC_DYNAMIC_MINOR,
2237df9043SVimal Agrawal .name = "dev_misc_dynamic_minor",
2337df9043SVimal Agrawal };
2437df9043SVimal Agrawal
kunit_dynamic_minor(struct kunit * test)2537df9043SVimal Agrawal static void kunit_dynamic_minor(struct kunit *test)
2637df9043SVimal Agrawal {
2737df9043SVimal Agrawal int ret;
2837df9043SVimal Agrawal
2937df9043SVimal Agrawal ret = misc_register(&dev_dynamic_minor);
3037df9043SVimal Agrawal KUNIT_EXPECT_EQ(test, 0, ret);
3137df9043SVimal Agrawal KUNIT_EXPECT_EQ(test, 2, dev_dynamic_minor.minor);
3237df9043SVimal Agrawal misc_deregister(&dev_dynamic_minor);
3337df9043SVimal Agrawal }
3437df9043SVimal Agrawal
kunit_static_minor(struct kunit * test)3537df9043SVimal Agrawal static void kunit_static_minor(struct kunit *test)
3637df9043SVimal Agrawal {
3737df9043SVimal Agrawal int ret;
3837df9043SVimal Agrawal
3937df9043SVimal Agrawal ret = misc_register(&dev_static_minor);
4037df9043SVimal Agrawal KUNIT_EXPECT_EQ(test, 0, ret);
4137df9043SVimal Agrawal KUNIT_EXPECT_EQ(test, LCD_MINOR, dev_static_minor.minor);
4237df9043SVimal Agrawal misc_deregister(&dev_static_minor);
4337df9043SVimal Agrawal }
4437df9043SVimal Agrawal
kunit_misc_dynamic_minor(struct kunit * test)4537df9043SVimal Agrawal static void kunit_misc_dynamic_minor(struct kunit *test)
4637df9043SVimal Agrawal {
4737df9043SVimal Agrawal int ret;
4837df9043SVimal Agrawal
4937df9043SVimal Agrawal ret = misc_register(&dev_misc_dynamic_minor);
5037df9043SVimal Agrawal KUNIT_EXPECT_EQ(test, 0, ret);
5137df9043SVimal Agrawal misc_deregister(&dev_misc_dynamic_minor);
5237df9043SVimal Agrawal }
5337df9043SVimal Agrawal
5437df9043SVimal Agrawal static struct kunit_case test_cases[] = {
5537df9043SVimal Agrawal KUNIT_CASE(kunit_dynamic_minor),
5637df9043SVimal Agrawal KUNIT_CASE(kunit_static_minor),
5737df9043SVimal Agrawal KUNIT_CASE(kunit_misc_dynamic_minor),
5837df9043SVimal Agrawal {}
5937df9043SVimal Agrawal };
6037df9043SVimal Agrawal
6137df9043SVimal Agrawal static struct kunit_suite test_suite = {
62*96366bf1SGreg Kroah-Hartman .name = "misc_minor_test",
6337df9043SVimal Agrawal .test_cases = test_cases,
6437df9043SVimal Agrawal };
6537df9043SVimal Agrawal kunit_test_suite(test_suite);
6637df9043SVimal Agrawal
6737df9043SVimal Agrawal MODULE_LICENSE("GPL");
6837df9043SVimal Agrawal MODULE_AUTHOR("Vimal Agrawal");
69*96366bf1SGreg Kroah-Hartman MODULE_DESCRIPTION("misc minor testing");
70