xref: /linux/drivers/misc/misc_minor_kunit.c (revision 96366bf155ab57580e450d659a9edb3163b717d8)
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