u-boot/test/dm/tag.c
AKASHI Takahiro 8ff50227be test: dm: add tests for tag support
The new test covers all tag-related interfaces.

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
2022-04-23 22:05:34 +02:00

85 lines
1.5 KiB
C

// SPDX-License-Identifier: GPL-2.0+
/*
* DM tag test
*
* Copyright (c) 2021 Linaro Limited
* Author: AKASHI Takahiro
*/
#include <common.h>
#include <dm/tag.h>
#include <dm/test.h> /* DM_TEST() */
#include <test/test.h> /* struct unit_test_state */
#include <test/ut.h> /* assertions */
/*
* Test dm_tag_ptr() API
*/
static int dm_test_tag_ptr(struct unit_test_state *uts)
{
ulong val;
void *ptr = NULL;
ut_assertok(dev_tag_set_ptr(uts->root, DM_TAG_EFI, &val));
ut_assertok(dev_tag_get_ptr(uts->root, DM_TAG_EFI, &ptr));
ut_asserteq_ptr(&val, ptr);
ut_assertok(dev_tag_del(uts->root, DM_TAG_EFI));
return 0;
}
DM_TEST(dm_test_tag_ptr, 0);
/*
* Test dm_tag_val() API
*/
static int dm_test_tag_val(struct unit_test_state *uts)
{
ulong val1 = 0x12345678, val2 = 0;
ut_assertok(dev_tag_set_val(uts->root, DM_TAG_EFI, val1));
ut_assertok(dev_tag_get_val(uts->root, DM_TAG_EFI, &val2));
ut_asserteq_64(val1, val2);
ut_assertok(dev_tag_del(uts->root, DM_TAG_EFI));
return 0;
}
DM_TEST(dm_test_tag_val, 0);
/*
* Test against an invalid tag
*/
static int dm_test_tag_inval(struct unit_test_state *uts)
{
ulong val;
ut_asserteq(-EINVAL, dev_tag_set_ptr(uts->root, DM_TAG_COUNT, &val));
return 0;
}
DM_TEST(dm_test_tag_inval, 0);
/*
* Test dm_tag_del_all() AP:
*/
static int dm_test_tag_del_all(struct unit_test_state *uts)
{
ulong val;
ut_assertok(dev_tag_set_ptr(uts->root, DM_TAG_EFI, &val));
ut_assertok(dev_tag_del_all(uts->root));
return 0;
}
DM_TEST(dm_test_tag_del_all, 0);