Linux Audio

Check our new training course

Loading...
v5.14.15
 1// SPDX-License-Identifier: GPL-2.0+
 2/*
 3 * Test cases for functions and macros in bits.h
 4 */
 5
 6#include <kunit/test.h>
 7#include <linux/bits.h>
 8
 9
10static void genmask_test(struct kunit *test)
11{
12	KUNIT_EXPECT_EQ(test, 1ul, GENMASK(0, 0));
13	KUNIT_EXPECT_EQ(test, 3ul, GENMASK(1, 0));
14	KUNIT_EXPECT_EQ(test, 6ul, GENMASK(2, 1));
15	KUNIT_EXPECT_EQ(test, 0xFFFFFFFFul, GENMASK(31, 0));
16
17#ifdef TEST_GENMASK_FAILURES
18	/* these should fail compilation */
19	GENMASK(0, 1);
20	GENMASK(0, 10);
21	GENMASK(9, 10);
22#endif
23
24
25}
26
27static void genmask_ull_test(struct kunit *test)
28{
29	KUNIT_EXPECT_EQ(test, 1ull, GENMASK_ULL(0, 0));
30	KUNIT_EXPECT_EQ(test, 3ull, GENMASK_ULL(1, 0));
31	KUNIT_EXPECT_EQ(test, 0x000000ffffe00000ull, GENMASK_ULL(39, 21));
32	KUNIT_EXPECT_EQ(test, 0xffffffffffffffffull, GENMASK_ULL(63, 0));
33
34#ifdef TEST_GENMASK_FAILURES
35	/* these should fail compilation */
36	GENMASK_ULL(0, 1);
37	GENMASK_ULL(0, 10);
38	GENMASK_ULL(9, 10);
39#endif
40}
41
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42static void genmask_input_check_test(struct kunit *test)
43{
44	unsigned int x, y;
45	int z, w;
46
47	/* Unknown input */
48	KUNIT_EXPECT_EQ(test, 0, GENMASK_INPUT_CHECK(x, 0));
49	KUNIT_EXPECT_EQ(test, 0, GENMASK_INPUT_CHECK(0, x));
50	KUNIT_EXPECT_EQ(test, 0, GENMASK_INPUT_CHECK(x, y));
51
52	KUNIT_EXPECT_EQ(test, 0, GENMASK_INPUT_CHECK(z, 0));
53	KUNIT_EXPECT_EQ(test, 0, GENMASK_INPUT_CHECK(0, z));
54	KUNIT_EXPECT_EQ(test, 0, GENMASK_INPUT_CHECK(z, w));
55
56	/* Valid input */
57	KUNIT_EXPECT_EQ(test, 0, GENMASK_INPUT_CHECK(1, 1));
58	KUNIT_EXPECT_EQ(test, 0, GENMASK_INPUT_CHECK(39, 21));
 
 
 
59}
60
61
62static struct kunit_case bits_test_cases[] = {
63	KUNIT_CASE(genmask_test),
64	KUNIT_CASE(genmask_ull_test),
 
65	KUNIT_CASE(genmask_input_check_test),
66	{}
67};
68
69static struct kunit_suite bits_test_suite = {
70	.name = "bits-test",
71	.test_cases = bits_test_cases,
72};
73kunit_test_suite(bits_test_suite);
74
 
75MODULE_LICENSE("GPL");
v6.13.7
  1// SPDX-License-Identifier: GPL-2.0+
  2/*
  3 * Test cases for functions and macros in bits.h
  4 */
  5
  6#include <kunit/test.h>
  7#include <linux/bits.h>
  8
  9
 10static void genmask_test(struct kunit *test)
 11{
 12	KUNIT_EXPECT_EQ(test, 1ul, GENMASK(0, 0));
 13	KUNIT_EXPECT_EQ(test, 3ul, GENMASK(1, 0));
 14	KUNIT_EXPECT_EQ(test, 6ul, GENMASK(2, 1));
 15	KUNIT_EXPECT_EQ(test, 0xFFFFFFFFul, GENMASK(31, 0));
 16
 17#ifdef TEST_GENMASK_FAILURES
 18	/* these should fail compilation */
 19	GENMASK(0, 1);
 20	GENMASK(0, 10);
 21	GENMASK(9, 10);
 22#endif
 23
 24
 25}
 26
 27static void genmask_ull_test(struct kunit *test)
 28{
 29	KUNIT_EXPECT_EQ(test, 1ull, GENMASK_ULL(0, 0));
 30	KUNIT_EXPECT_EQ(test, 3ull, GENMASK_ULL(1, 0));
 31	KUNIT_EXPECT_EQ(test, 0x000000ffffe00000ull, GENMASK_ULL(39, 21));
 32	KUNIT_EXPECT_EQ(test, 0xffffffffffffffffull, GENMASK_ULL(63, 0));
 33
 34#ifdef TEST_GENMASK_FAILURES
 35	/* these should fail compilation */
 36	GENMASK_ULL(0, 1);
 37	GENMASK_ULL(0, 10);
 38	GENMASK_ULL(9, 10);
 39#endif
 40}
 41
 42static void genmask_u128_test(struct kunit *test)
 43{
 44#ifdef CONFIG_ARCH_SUPPORTS_INT128
 45	/* Below 64 bit masks */
 46	KUNIT_EXPECT_EQ(test, 0x0000000000000001ull, GENMASK_U128(0, 0));
 47	KUNIT_EXPECT_EQ(test, 0x0000000000000003ull, GENMASK_U128(1, 0));
 48	KUNIT_EXPECT_EQ(test, 0x0000000000000006ull, GENMASK_U128(2, 1));
 49	KUNIT_EXPECT_EQ(test, 0x00000000ffffffffull, GENMASK_U128(31, 0));
 50	KUNIT_EXPECT_EQ(test, 0x000000ffffe00000ull, GENMASK_U128(39, 21));
 51	KUNIT_EXPECT_EQ(test, 0xffffffffffffffffull, GENMASK_U128(63, 0));
 52
 53	/* Above 64 bit masks - only 64 bit portion can be validated once */
 54	KUNIT_EXPECT_EQ(test, 0xffffffffffffffffull, GENMASK_U128(64, 0) >> 1);
 55	KUNIT_EXPECT_EQ(test, 0x00000000ffffffffull, GENMASK_U128(81, 50) >> 50);
 56	KUNIT_EXPECT_EQ(test, 0x0000000000ffffffull, GENMASK_U128(87, 64) >> 64);
 57	KUNIT_EXPECT_EQ(test, 0x0000000000ff0000ull, GENMASK_U128(87, 80) >> 64);
 58
 59	KUNIT_EXPECT_EQ(test, 0xffffffffffffffffull, GENMASK_U128(127, 0) >> 64);
 60	KUNIT_EXPECT_EQ(test, 0xffffffffffffffffull, (u64)GENMASK_U128(127, 0));
 61	KUNIT_EXPECT_EQ(test, 0x0000000000000003ull, GENMASK_U128(127, 126) >> 126);
 62	KUNIT_EXPECT_EQ(test, 0x0000000000000001ull, GENMASK_U128(127, 127) >> 127);
 63#ifdef TEST_GENMASK_FAILURES
 64	/* these should fail compilation */
 65	GENMASK_U128(0, 1);
 66	GENMASK_U128(0, 10);
 67	GENMASK_U128(9, 10);
 68#endif /* TEST_GENMASK_FAILURES */
 69#endif /* CONFIG_ARCH_SUPPORTS_INT128 */
 70}
 71
 72static void genmask_input_check_test(struct kunit *test)
 73{
 74	unsigned int x, y;
 75	int z, w;
 76
 77	/* Unknown input */
 78	KUNIT_EXPECT_EQ(test, 0, GENMASK_INPUT_CHECK(x, 0));
 79	KUNIT_EXPECT_EQ(test, 0, GENMASK_INPUT_CHECK(0, x));
 80	KUNIT_EXPECT_EQ(test, 0, GENMASK_INPUT_CHECK(x, y));
 81
 82	KUNIT_EXPECT_EQ(test, 0, GENMASK_INPUT_CHECK(z, 0));
 83	KUNIT_EXPECT_EQ(test, 0, GENMASK_INPUT_CHECK(0, z));
 84	KUNIT_EXPECT_EQ(test, 0, GENMASK_INPUT_CHECK(z, w));
 85
 86	/* Valid input */
 87	KUNIT_EXPECT_EQ(test, 0, GENMASK_INPUT_CHECK(1, 1));
 88	KUNIT_EXPECT_EQ(test, 0, GENMASK_INPUT_CHECK(39, 21));
 89	KUNIT_EXPECT_EQ(test, 0, GENMASK_INPUT_CHECK(100, 80));
 90	KUNIT_EXPECT_EQ(test, 0, GENMASK_INPUT_CHECK(110, 65));
 91	KUNIT_EXPECT_EQ(test, 0, GENMASK_INPUT_CHECK(127, 0));
 92}
 93
 94
 95static struct kunit_case bits_test_cases[] = {
 96	KUNIT_CASE(genmask_test),
 97	KUNIT_CASE(genmask_ull_test),
 98	KUNIT_CASE(genmask_u128_test),
 99	KUNIT_CASE(genmask_input_check_test),
100	{}
101};
102
103static struct kunit_suite bits_test_suite = {
104	.name = "bits-test",
105	.test_cases = bits_test_cases,
106};
107kunit_test_suite(bits_test_suite);
108
109MODULE_DESCRIPTION("Test cases for functions and macros in bits.h");
110MODULE_LICENSE("GPL");