Skip to content

Commit de9abc2

Browse files
committed
tests: sys: Add unit test for Disjoint-set
Add unit tests for functions (`sys_set_makeset`, `sys_set_union` and `sys_set_find`). Signed-off-by: James Roy <[email protected]>
1 parent 11eb0b4 commit de9abc2

File tree

3 files changed

+48
-0
lines changed

3 files changed

+48
-0
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
3+
cmake_minimum_required(VERSION 3.20.0)
4+
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
5+
project(timespec_util)
6+
7+
FILE(GLOB app_sources src/main.c)
8+
target_sources(app PRIVATE ${app_sources})

tests/lib/data_structure/set/prj.conf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
3+
CONFIG_ZTEST=y
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*
2+
* Copyright (c) 2025 James Roy <[email protected]>
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#include <zephyr/kernel.h>
8+
#include <zephyr/sys/printk.h>
9+
#include <zephyr/sys/set.h>
10+
#include <zephyr/ztest.h>
11+
12+
struct user_data {
13+
int n;
14+
struct set_node ufnode;
15+
} data_list[5] = {{.n = 1}, {.n = 3}, {.n = 2}, {.n = 5}, {.n = 4}};
16+
17+
ZTEST(set, test_find_and_union)
18+
{
19+
sys_set_makeset(&data_list[0].ufnode, 5);
20+
sys_set_makeset(&data_list[1].ufnode, 4);
21+
sys_set_makeset(&data_list[2].ufnode, 3);
22+
sys_set_makeset(&data_list[3].ufnode, 2);
23+
sys_set_makeset(&data_list[4].ufnode, 1);
24+
25+
sys_set_union(&data_list[0].ufnode, &data_list[1].ufnode);
26+
sys_set_union(&data_list[1].ufnode, &data_list[2].ufnode);
27+
sys_set_union(&data_list[2].ufnode, &data_list[3].ufnode);
28+
sys_set_union(&data_list[3].ufnode, &data_list[4].ufnode);
29+
30+
struct set_node *root_node = sys_set_find(&data_list[4].ufnode);
31+
struct user_data *root_data = CONTAINER_OF(root_node, struct user_data, ufnode);
32+
33+
zassert_equal(root_data->n, data_list[0].n, "Root set data n are not equal");
34+
zassert_equal(root_data->ufnode.rank, root_node->rank, "Root set are not equal");
35+
}
36+
37+
ZTEST_SUITE(set, NULL, NULL, NULL, NULL, NULL);

0 commit comments

Comments
 (0)