Skip to content

Commit 4497e94

Browse files
committed
tests: sys: Add unit test for Disjoint-set
Add unit tests for functions (`uf_makeset`, `uf_union` and `uf_find`). Signed-off-by: James Roy <[email protected]>
1 parent c3ccb0d commit 4497e94

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/uf/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/uf.h>
10+
#include <zephyr/ztest.h>
11+
12+
struct user_data {
13+
int n;
14+
struct uf_node ufnode;
15+
} data_list[5] = {{.n = 1}, {.n = 3}, {.n = 2}, {.n = 5}, {.n = 4}};
16+
17+
ZTEST(uf, test_find_union)
18+
{
19+
uf_makeset(&data_list[0].ufnode, 5);
20+
uf_makeset(&data_list[1].ufnode, 4);
21+
uf_makeset(&data_list[2].ufnode, 3);
22+
uf_makeset(&data_list[3].ufnode, 2);
23+
uf_makeset(&data_list[4].ufnode, 1);
24+
25+
uf_union(&data_list[0].ufnode, &data_list[1].ufnode);
26+
uf_union(&data_list[1].ufnode, &data_list[2].ufnode);
27+
uf_union(&data_list[2].ufnode, &data_list[3].ufnode);
28+
uf_union(&data_list[3].ufnode, &data_list[4].ufnode);
29+
30+
struct uf_node *root_node = uf_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(uf, NULL, NULL, NULL, NULL, NULL);

0 commit comments

Comments
 (0)