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 */
17static 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
33DM_TEST(dm_test_tag_ptr, 0);
34
35/*
36 * Test dm_tag_val() API
37 */
38static int dm_test_tag_val(struct unit_test_state *uts)
39{
40	ulong val1 = 0x12345678, val2 = 0;
41
42	ut_assertok(dev_tag_set_val(uts->root, DM_TAG_EFI, val1));
43
44	ut_assertok(dev_tag_get_val(uts->root, DM_TAG_EFI, &val2));
45
46	ut_asserteq_64(val1, val2);
47
48	ut_assertok(dev_tag_del(uts->root, DM_TAG_EFI));
49
50	return 0;
51}
52
53DM_TEST(dm_test_tag_val, 0);
54
55/*
56 * Test against an invalid tag
57 */
58static int dm_test_tag_inval(struct unit_test_state *uts)
59{
60	ulong val;
61
62	ut_asserteq(-EINVAL, dev_tag_set_ptr(uts->root, DM_TAG_COUNT, &val));
63
64	return 0;
65}
66
67DM_TEST(dm_test_tag_inval, 0);
68
69/*
70 * Test dm_tag_del_all() AP:
71 */
72static int dm_test_tag_del_all(struct unit_test_state *uts)
73{
74	ulong val;
75
76	ut_assertok(dev_tag_set_ptr(uts->root, DM_TAG_EFI, &val));
77
78	ut_assertok(dev_tag_del_all(uts->root));
79
80	return 0;
81}
82
83DM_TEST(dm_test_tag_del_all, 0);
84