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