1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  *  DM tag test
4  *
5  *  Copyright (c) 2021 Linaro Limited
6  *  Author: AKASHI Takahiro
7  */
8 
9 #include <dm/tag.h>
10 #include <dm/test.h> /* DM_TEST() */
11 #include <test/test.h> /* struct unit_test_state */
12 #include <test/ut.h> /* assertions */
13 
14 /*
15  * Test dm_tag_ptr() API
16  */
dm_test_tag_ptr(struct unit_test_state * uts)17 static int dm_test_tag_ptr(struct unit_test_state *uts)
18 {
19 	ulong val;
20 	void *ptr = NULL;
21 
22 	ut_assertok(dev_tag_set_ptr(uts->root, DM_TAG_EFI, &val));
23 
24 	ut_assertok(dev_tag_get_ptr(uts->root, DM_TAG_EFI, &ptr));
25 
26 	ut_asserteq_ptr(&val, ptr);
27 
28 	ut_assertok(dev_tag_del(uts->root, DM_TAG_EFI));
29 
30 	return 0;
31 }
32 DM_TEST(dm_test_tag_ptr, 0);
33 
34 /*
35  * Test dm_tag_val() API
36  */
dm_test_tag_val(struct unit_test_state * uts)37 static int dm_test_tag_val(struct unit_test_state *uts)
38 {
39 	ulong val1 = 0x12345678, val2 = 0;
40 
41 	ut_assertok(dev_tag_set_val(uts->root, DM_TAG_EFI, val1));
42 
43 	ut_assertok(dev_tag_get_val(uts->root, DM_TAG_EFI, &val2));
44 
45 	ut_asserteq_64(val1, val2);
46 
47 	ut_assertok(dev_tag_del(uts->root, DM_TAG_EFI));
48 
49 	return 0;
50 }
51 DM_TEST(dm_test_tag_val, 0);
52 
53 /*
54  * Test against an invalid tag
55  */
dm_test_tag_inval(struct unit_test_state * uts)56 static int dm_test_tag_inval(struct unit_test_state *uts)
57 {
58 	ulong val;
59 
60 	ut_asserteq(-EINVAL, dev_tag_set_ptr(uts->root, DM_TAG_COUNT, &val));
61 
62 	return 0;
63 }
64 DM_TEST(dm_test_tag_inval, 0);
65 
66 /*
67  * Test dm_tag_del_all() AP:
68  */
dm_test_tag_del_all(struct unit_test_state * uts)69 static int dm_test_tag_del_all(struct unit_test_state *uts)
70 {
71 	ulong val;
72 
73 	ut_assertok(dev_tag_set_ptr(uts->root, DM_TAG_EFI, &val));
74 
75 	ut_assertok(dev_tag_del_all(uts->root));
76 
77 	return 0;
78 }
79 DM_TEST(dm_test_tag_del_all, 0);
80