]>
Commit | Line | Data |
---|---|---|
6d511020 RF |
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 | ||
10 | static 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 | ||
27 | static 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 | ||
42 | static 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 | ||
62 | static 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 | ||
69 | static struct kunit_suite bits_test_suite = { | |
70 | .name = "bits-test", | |
71 | .test_cases = bits_test_cases, | |
72 | }; | |
73 | kunit_test_suite(bits_test_suite); | |
74 | ||
75 | MODULE_LICENSE("GPL"); |