Skip to content

Commit ccef878

Browse files
committed
tests: lib: Add sys_util_expr test
Add tests for EXPR utilities Signed-off-by: TOKITA Hiroshi <[email protected]>
1 parent a9d9a02 commit ccef878

File tree

10 files changed

+664
-0
lines changed

10 files changed

+664
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
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(sys_util_expr)
6+
7+
target_sources(app PRIVATE
8+
src/main.c
9+
src/logical.c
10+
src/shift.c
11+
src/compare.c
12+
src/add_sub.c
13+
src/multiply.c
14+
src/division.c
15+
)

tests/lib/sys_util_expr/prj.conf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CONFIG_ZTEST=y
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
/*
2+
* Copyright (c) 2025 TOKITA Hiroshi
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#include <zephyr/ztest.h>
8+
#include <zephyr/sys/util.h>
9+
#include <zephyr/sys/util_expr.h>
10+
11+
#pragma GCC diagnostic ignored "-Wshift-count-overflow"
12+
#pragma GCC diagnostic ignored "-Woverflow"
13+
14+
#define Z_EXPR_HEX_0xFFFFFFFE \
15+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
16+
1, 0
17+
#define Z_EXPR_HEX_0x7FFFFFFF \
18+
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
19+
1, 1
20+
#define Z_EXPR_HEX_0xFFFFFFFF \
21+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
22+
1, 1
23+
24+
/**
25+
* @brief Verify that the behavior of EXPR_ADD is equivalent to uint32 addition in C.
26+
*/
27+
ZTEST(sys_util_expr_add_sub, test_add)
28+
{
29+
zassert_equal(0x0 + 0x0, EXPR_HEX_ENCODE(EXPR_ADD(EXPR_HEX(0x0), EXPR_HEX(0x0))));
30+
zassert_equal(0x0 + 0x1, EXPR_HEX_ENCODE(EXPR_ADD(EXPR_HEX(0x0), EXPR_HEX(0x1))));
31+
zassert_equal(0x1 + 0x0, EXPR_HEX_ENCODE(EXPR_ADD(EXPR_HEX(0x1), EXPR_HEX(0x0))));
32+
zassert_equal(0x1 + 0x1, EXPR_HEX_ENCODE(EXPR_ADD(EXPR_HEX(0x1), EXPR_HEX(0x1))));
33+
zassert_equal(0x2 + 0x1, EXPR_HEX_ENCODE(EXPR_ADD(EXPR_HEX(0x2), EXPR_HEX(0x1))));
34+
zassert_equal(0xFFFFFFFE + 0x1,
35+
EXPR_HEX_ENCODE(EXPR_ADD(EXPR_HEX(0xFFFFFFFE), EXPR_HEX(0x1))));
36+
zassert_equal(0xFFFFFFFE + 0x2,
37+
EXPR_HEX_ENCODE(EXPR_ADD(EXPR_HEX(0xFFFFFFFE), EXPR_HEX(0x2))));
38+
zassert_equal(0xFFFFFFFF + 0x0,
39+
EXPR_HEX_ENCODE(EXPR_ADD(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x0))));
40+
zassert_equal(0xFFFFFFFF + 0x1,
41+
EXPR_HEX_ENCODE(EXPR_ADD(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x1))));
42+
zassert_equal(0xFFFFFFFF + 0x2,
43+
EXPR_HEX_ENCODE(EXPR_ADD(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x2))));
44+
zassert_equal(0xFFFFFFFF + 0xFFFFFFFF,
45+
EXPR_HEX_ENCODE(EXPR_ADD(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0xFFFFFFFF))));
46+
}
47+
48+
/**
49+
* @brief Verify that the behavior of EXPR_SUB is equivalent to uint32_t subtraction in C.
50+
*/
51+
ZTEST(sys_util_expr_add_sub, test_sub)
52+
{
53+
zassert_equal(0x0 - 0x0, EXPR_HEX_ENCODE(EXPR_SUB(EXPR_HEX(0x0), EXPR_HEX(0x0))));
54+
zassert_equal(0x0 - 0x1, EXPR_HEX_ENCODE(EXPR_SUB(EXPR_HEX(0x0), EXPR_HEX(0x1))));
55+
zassert_equal(0x1 - 0x0, EXPR_HEX_ENCODE(EXPR_SUB(EXPR_HEX(0x1), EXPR_HEX(0x0))));
56+
zassert_equal(0x1 - 0x1, EXPR_HEX_ENCODE(EXPR_SUB(EXPR_HEX(0x1), EXPR_HEX(0x1))));
57+
zassert_equal(0x2 - 0x1, EXPR_HEX_ENCODE(EXPR_SUB(EXPR_HEX(0x2), EXPR_HEX(0x1))));
58+
zassert_equal(0xFFFFFFFE - 0x1,
59+
EXPR_HEX_ENCODE(EXPR_SUB(EXPR_HEX(0xFFFFFFFE), EXPR_HEX(0x1))));
60+
zassert_equal(0xFFFFFFFE - 0x2,
61+
EXPR_HEX_ENCODE(EXPR_SUB(EXPR_HEX(0xFFFFFFFE), EXPR_HEX(0x2))));
62+
zassert_equal(0xFFFFFFFF - 0x0,
63+
EXPR_HEX_ENCODE(EXPR_SUB(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x0))));
64+
zassert_equal(0xFFFFFFFF - 0x1,
65+
EXPR_HEX_ENCODE(EXPR_SUB(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x1))));
66+
zassert_equal(0xFFFFFFFF - 0x2,
67+
EXPR_HEX_ENCODE(EXPR_SUB(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x2))));
68+
zassert_equal(0xFFFFFFFF - 0xFFFFFFFF,
69+
EXPR_HEX_ENCODE(EXPR_SUB(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0xFFFFFFFF))));
70+
}
71+
72+
ZTEST_SUITE(sys_util_expr_add_sub, NULL, NULL, NULL, NULL, NULL);
Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
/*
2+
* Copyright (c) 2025 TOKITA Hiroshi
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#include <zephyr/ztest.h>
8+
#include <zephyr/sys/util.h>
9+
#include <zephyr/sys/util_expr.h>
10+
11+
#pragma GCC diagnostic ignored "-Wshift-count-overflow"
12+
#pragma GCC diagnostic ignored "-Woverflow"
13+
14+
#define Z_EXPR_HEX_0xFFFFFFFE \
15+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
16+
1, 0
17+
#define Z_EXPR_HEX_0x7FFFFFFF \
18+
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
19+
1, 1
20+
#define Z_EXPR_HEX_0xFFFFFFFF \
21+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
22+
1, 1
23+
24+
/**
25+
* @brief Verify that the behavior of EXPR_EQ is equivalent to == in C.
26+
*/
27+
ZTEST(sys_util_expr_compare, test_eq)
28+
{
29+
zassert_equal(0x0 == 0x0, EXPR_HEX_ENCODE(EXPR_EQ(EXPR_HEX(0x0), EXPR_HEX(0x0))));
30+
zassert_equal(0x0 == 0x1, EXPR_HEX_ENCODE(EXPR_EQ(EXPR_HEX(0x0), EXPR_HEX(0x1))));
31+
zassert_equal(0x1 == 0x0, EXPR_HEX_ENCODE(EXPR_EQ(EXPR_HEX(0x1), EXPR_HEX(0x0))));
32+
zassert_equal(0x1 == 0x1, EXPR_HEX_ENCODE(EXPR_EQ(EXPR_HEX(0x1), EXPR_HEX(0x1))));
33+
zassert_equal(0x2 == 0x1, EXPR_HEX_ENCODE(EXPR_EQ(EXPR_HEX(0x2), EXPR_HEX(0x1))));
34+
zassert_equal(0x2 == 0x2, EXPR_HEX_ENCODE(EXPR_EQ(EXPR_HEX(0x2), EXPR_HEX(0x2))));
35+
zassert_equal(0xFFFFFFFE == 0x1,
36+
EXPR_HEX_ENCODE(EXPR_EQ(EXPR_HEX(0xFFFFFFFE), EXPR_HEX(0x1))));
37+
zassert_equal(0xFFFFFFFE == 0x2,
38+
EXPR_HEX_ENCODE(EXPR_EQ(EXPR_HEX(0xFFFFFFFE), EXPR_HEX(0x2))));
39+
zassert_equal(0xFFFFFFFF == 0x0,
40+
EXPR_HEX_ENCODE(EXPR_EQ(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x0))));
41+
zassert_equal(0xFFFFFFFF == 0x1,
42+
EXPR_HEX_ENCODE(EXPR_EQ(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x1))));
43+
zassert_equal(0xFFFFFFFF == 0x2,
44+
EXPR_HEX_ENCODE(EXPR_EQ(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x2))));
45+
zassert_equal(0x0 == 0xFFFFFFFF,
46+
EXPR_HEX_ENCODE(EXPR_EQ(EXPR_HEX(0x0), EXPR_HEX(0xFFFFFFFF))));
47+
zassert_equal(0xFFFFFFFF == 0xFFFFFFFF,
48+
EXPR_HEX_ENCODE(EXPR_EQ(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0xFFFFFFFF))));
49+
}
50+
51+
/**
52+
* @brief Verify that the behavior of EXPR_GT is equivalent to > in C.
53+
*/
54+
ZTEST(sys_util_expr_compare, test_gt)
55+
{
56+
zassert_equal(0x0 > 0x0, EXPR_HEX_ENCODE(EXPR_GT(EXPR_HEX(0x0), EXPR_HEX(0x0))));
57+
zassert_equal(0x0 > 0x1, EXPR_HEX_ENCODE(EXPR_GT(EXPR_HEX(0x0), EXPR_HEX(0x1))));
58+
zassert_equal(0x1 > 0x0, EXPR_HEX_ENCODE(EXPR_GT(EXPR_HEX(0x1), EXPR_HEX(0x0))));
59+
zassert_equal(0x1 > 0x1, EXPR_HEX_ENCODE(EXPR_GT(EXPR_HEX(0x1), EXPR_HEX(0x1))));
60+
zassert_equal(0x2 > 0x1, EXPR_HEX_ENCODE(EXPR_GT(EXPR_HEX(0x2), EXPR_HEX(0x1))));
61+
zassert_equal(0x2 > 0x2, EXPR_HEX_ENCODE(EXPR_GT(EXPR_HEX(0x2), EXPR_HEX(0x2))));
62+
zassert_equal(0xFFFFFFFE > 0x1,
63+
EXPR_HEX_ENCODE(EXPR_GT(EXPR_HEX(0xFFFFFFFE), EXPR_HEX(0x1))));
64+
zassert_equal(0xFFFFFFFE > 0x2,
65+
EXPR_HEX_ENCODE(EXPR_GT(EXPR_HEX(0xFFFFFFFE), EXPR_HEX(0x2))));
66+
zassert_equal(0xFFFFFFFF > 0x0,
67+
EXPR_HEX_ENCODE(EXPR_GT(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x0))));
68+
zassert_equal(0xFFFFFFFF > 0x1,
69+
EXPR_HEX_ENCODE(EXPR_GT(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x1))));
70+
zassert_equal(0xFFFFFFFF > 0x2,
71+
EXPR_HEX_ENCODE(EXPR_GT(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x2))));
72+
zassert_equal(0x0 > 0xFFFFFFFF,
73+
EXPR_HEX_ENCODE(EXPR_GT(EXPR_HEX(0x0), EXPR_HEX(0xFFFFFFFF))));
74+
zassert_equal(0xFFFFFFFF > 0xFFFFFFFF,
75+
EXPR_HEX_ENCODE(EXPR_GT(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0xFFFFFFFF))));
76+
}
77+
78+
/**
79+
* @brief Verify that the behavior of EXPR_LT is equivalent to < in C.
80+
*/
81+
ZTEST(sys_util_expr_compare, test_lt)
82+
{
83+
zassert_equal(0x0 < 0x0, EXPR_HEX_ENCODE(EXPR_LT(EXPR_HEX(0x0), EXPR_HEX(0x0))));
84+
zassert_equal(0x0 < 0x1, EXPR_HEX_ENCODE(EXPR_LT(EXPR_HEX(0x0), EXPR_HEX(0x1))));
85+
zassert_equal(0x1 < 0x0, EXPR_HEX_ENCODE(EXPR_LT(EXPR_HEX(0x1), EXPR_HEX(0x0))));
86+
zassert_equal(0x1 < 0x1, EXPR_HEX_ENCODE(EXPR_LT(EXPR_HEX(0x1), EXPR_HEX(0x1))));
87+
zassert_equal(0x2 < 0x1, EXPR_HEX_ENCODE(EXPR_LT(EXPR_HEX(0x2), EXPR_HEX(0x1))));
88+
zassert_equal(0x2 < 0x2, EXPR_HEX_ENCODE(EXPR_LT(EXPR_HEX(0x2), EXPR_HEX(0x2))));
89+
zassert_equal(0xFFFFFFFE < 0x1,
90+
EXPR_HEX_ENCODE(EXPR_LT(EXPR_HEX(0xFFFFFFFE), EXPR_HEX(0x1))));
91+
zassert_equal(0xFFFFFFFE < 0x2,
92+
EXPR_HEX_ENCODE(EXPR_LT(EXPR_HEX(0xFFFFFFFE), EXPR_HEX(0x2))));
93+
zassert_equal(0xFFFFFFFF < 0x0,
94+
EXPR_HEX_ENCODE(EXPR_LT(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x0))));
95+
zassert_equal(0xFFFFFFFF < 0x1,
96+
EXPR_HEX_ENCODE(EXPR_LT(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x1))));
97+
zassert_equal(0xFFFFFFFF < 0x2,
98+
EXPR_HEX_ENCODE(EXPR_LT(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x2))));
99+
zassert_equal(0x0 < 0xFFFFFFFF,
100+
EXPR_HEX_ENCODE(EXPR_LT(EXPR_HEX(0x0), EXPR_HEX(0xFFFFFFFF))));
101+
zassert_equal(0xFFFFFFFF < 0xFFFFFFFF,
102+
EXPR_HEX_ENCODE(EXPR_LT(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0xFFFFFFFF))));
103+
}
104+
105+
/**
106+
* @brief Verify that the behavior of EXPR_GTE is equivalent to >= in C.
107+
*/
108+
ZTEST(sys_util_expr_compare, test_gte)
109+
{
110+
zassert_equal(0x0 >= 0x0, EXPR_HEX_ENCODE(EXPR_GTE(EXPR_HEX(0x0), EXPR_HEX(0x0))));
111+
zassert_equal(0x0 >= 0x1, EXPR_HEX_ENCODE(EXPR_GTE(EXPR_HEX(0x0), EXPR_HEX(0x1))));
112+
zassert_equal(0x1 >= 0x0, EXPR_HEX_ENCODE(EXPR_GTE(EXPR_HEX(0x1), EXPR_HEX(0x0))));
113+
zassert_equal(0x1 >= 0x1, EXPR_HEX_ENCODE(EXPR_GTE(EXPR_HEX(0x1), EXPR_HEX(0x1))));
114+
zassert_equal(0x2 >= 0x1, EXPR_HEX_ENCODE(EXPR_GTE(EXPR_HEX(0x2), EXPR_HEX(0x1))));
115+
zassert_equal(0x2 >= 0x2, EXPR_HEX_ENCODE(EXPR_GTE(EXPR_HEX(0x2), EXPR_HEX(0x2))));
116+
zassert_equal(0xFFFFFFFE >= 0x1,
117+
EXPR_HEX_ENCODE(EXPR_GTE(EXPR_HEX(0xFFFFFFFE), EXPR_HEX(0x1))));
118+
zassert_equal(0xFFFFFFFE >= 0x2,
119+
EXPR_HEX_ENCODE(EXPR_GTE(EXPR_HEX(0xFFFFFFFE), EXPR_HEX(0x2))));
120+
zassert_equal(0xFFFFFFFF >= 0x0,
121+
EXPR_HEX_ENCODE(EXPR_GTE(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x0))));
122+
zassert_equal(0xFFFFFFFF >= 0x1,
123+
EXPR_HEX_ENCODE(EXPR_GTE(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x1))));
124+
zassert_equal(0xFFFFFFFF >= 0x2,
125+
EXPR_HEX_ENCODE(EXPR_GTE(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x2))));
126+
zassert_equal(0x0 >= 0xFFFFFFFF,
127+
EXPR_HEX_ENCODE(EXPR_GTE(EXPR_HEX(0x0), EXPR_HEX(0xFFFFFFFF))));
128+
zassert_equal(0xFFFFFFFF >= 0xFFFFFFFF,
129+
EXPR_HEX_ENCODE(EXPR_GTE(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0xFFFFFFFF))));
130+
}
131+
132+
/**
133+
* @brief Verify that the behavior of EXPR_LTE is equivalent to <= in C.
134+
*/
135+
ZTEST(sys_util_expr_compare, test_lte)
136+
{
137+
zassert_equal(0x0 <= 0x0, EXPR_HEX_ENCODE(EXPR_LTE(EXPR_HEX(0x0), EXPR_HEX(0x0))));
138+
zassert_equal(0x0 <= 0x1, EXPR_HEX_ENCODE(EXPR_LTE(EXPR_HEX(0x0), EXPR_HEX(0x1))));
139+
zassert_equal(0x1 <= 0x0, EXPR_HEX_ENCODE(EXPR_LTE(EXPR_HEX(0x1), EXPR_HEX(0x0))));
140+
zassert_equal(0x1 <= 0x1, EXPR_HEX_ENCODE(EXPR_LTE(EXPR_HEX(0x1), EXPR_HEX(0x1))));
141+
zassert_equal(0x2 <= 0x1, EXPR_HEX_ENCODE(EXPR_LTE(EXPR_HEX(0x2), EXPR_HEX(0x1))));
142+
zassert_equal(0x2 <= 0x2, EXPR_HEX_ENCODE(EXPR_LTE(EXPR_HEX(0x2), EXPR_HEX(0x2))));
143+
zassert_equal(0xFFFFFFFE <= 0x1,
144+
EXPR_HEX_ENCODE(EXPR_LTE(EXPR_HEX(0xFFFFFFFE), EXPR_HEX(0x1))));
145+
zassert_equal(0xFFFFFFFE <= 0x2,
146+
EXPR_HEX_ENCODE(EXPR_LTE(EXPR_HEX(0xFFFFFFFE), EXPR_HEX(0x2))));
147+
zassert_equal(0xFFFFFFFF <= 0x0,
148+
EXPR_HEX_ENCODE(EXPR_LTE(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x0))));
149+
zassert_equal(0xFFFFFFFF <= 0x1,
150+
EXPR_HEX_ENCODE(EXPR_LTE(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x1))));
151+
zassert_equal(0xFFFFFFFF <= 0x2,
152+
EXPR_HEX_ENCODE(EXPR_LTE(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x2))));
153+
zassert_equal(0x0 <= 0xFFFFFFFF,
154+
EXPR_HEX_ENCODE(EXPR_LTE(EXPR_HEX(0x0), EXPR_HEX(0xFFFFFFFF))));
155+
zassert_equal(0xFFFFFFFF <= 0xFFFFFFFF,
156+
EXPR_HEX_ENCODE(EXPR_LTE(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0xFFFFFFFF))));
157+
}
158+
159+
ZTEST_SUITE(sys_util_expr_compare, NULL, NULL, NULL, NULL, NULL);
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
/*
2+
* Copyright (c) 2025 TOKITA Hiroshi
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#include <zephyr/ztest.h>
8+
#include <zephyr/sys/util.h>
9+
#include <zephyr/sys/util_expr.h>
10+
11+
#pragma GCC diagnostic ignored "-Wshift-count-overflow"
12+
#pragma GCC diagnostic ignored "-Woverflow"
13+
14+
#define Z_EXPR_HEX_0xFFFFFFFE \
15+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
16+
1, 0
17+
#define Z_EXPR_HEX_0x7FFFFFFF \
18+
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
19+
1, 1
20+
#define Z_EXPR_HEX_0xFFFFFFFF \
21+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
22+
1, 1
23+
24+
/**
25+
* @brief Verify that the behavior of EXPR_DIV is equivalent to uint32_t division in C.
26+
*/
27+
ZTEST(sys_util_expr_division, test_div)
28+
{
29+
zassert_equal(0x0 / 0x1, EXPR_HEX_ENCODE(EXPR_DIV(EXPR_HEX(0x0), EXPR_HEX(0x1))));
30+
zassert_equal(0x1 / 0x1, EXPR_HEX_ENCODE(EXPR_DIV(EXPR_HEX(0x1), EXPR_HEX(0x1))));
31+
zassert_equal(0x2 / 0x1, EXPR_HEX_ENCODE(EXPR_DIV(EXPR_HEX(0x2), EXPR_HEX(0x1))));
32+
zassert_equal(0x2 / 0x2, EXPR_HEX_ENCODE(EXPR_DIV(EXPR_HEX(0x2), EXPR_HEX(0x2))));
33+
zassert_equal(0x3 / 0x2, EXPR_HEX_ENCODE(EXPR_DIV(EXPR_HEX(0x3), EXPR_HEX(0x2))));
34+
zassert_equal(0xFFFFFFFE / 0x1,
35+
EXPR_HEX_ENCODE(EXPR_DIV(EXPR_HEX(0xFFFFFFFE), EXPR_HEX(0x1))));
36+
zassert_equal(0xFFFFFFFE / 0x2,
37+
EXPR_HEX_ENCODE(EXPR_DIV(EXPR_HEX(0xFFFFFFFE), EXPR_HEX(0x2))));
38+
zassert_equal(0x7FFFFFFF / 0x1,
39+
EXPR_HEX_ENCODE(EXPR_DIV(EXPR_HEX(0x7FFFFFFF), EXPR_HEX(0x1))));
40+
zassert_equal(0x7FFFFFFF / 0x2,
41+
EXPR_HEX_ENCODE(EXPR_DIV(EXPR_HEX(0x7FFFFFFF), EXPR_HEX(0x2))));
42+
zassert_equal(0xFFFFFFFF / 0x1,
43+
EXPR_HEX_ENCODE(EXPR_DIV(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x1))));
44+
zassert_equal(0xFFFFFFFF / 0x2,
45+
EXPR_HEX_ENCODE(EXPR_DIV(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x2))));
46+
zassert_equal(0xFFFFFFFF / 0x7,
47+
EXPR_HEX_ENCODE(EXPR_DIV(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x7))));
48+
zassert_equal(0xFFFFFFFF / 0xFFFFFFFF,
49+
EXPR_HEX_ENCODE(EXPR_DIV(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0xFFFFFFFF))));
50+
}
51+
52+
/**
53+
* @brief Verify that the behavior of EXPR_MOD is equivalent to uint32_t modulo in C.
54+
*/
55+
ZTEST(sys_util_expr_division, test_mod)
56+
{
57+
zassert_equal(0x0 % 0x1, EXPR_HEX_ENCODE(EXPR_MOD(EXPR_HEX(0x0), EXPR_HEX(0x1))));
58+
zassert_equal(0x1 % 0x1, EXPR_HEX_ENCODE(EXPR_MOD(EXPR_HEX(0x1), EXPR_HEX(0x1))));
59+
zassert_equal(0x2 % 0x1, EXPR_HEX_ENCODE(EXPR_MOD(EXPR_HEX(0x2), EXPR_HEX(0x1))));
60+
zassert_equal(0x2 % 0x2, EXPR_HEX_ENCODE(EXPR_MOD(EXPR_HEX(0x2), EXPR_HEX(0x2))));
61+
zassert_equal(0x3 % 0x2, EXPR_HEX_ENCODE(EXPR_MOD(EXPR_HEX(0x3), EXPR_HEX(0x2))));
62+
zassert_equal(0xFFFFFFFE % 0x1,
63+
EXPR_HEX_ENCODE(EXPR_MOD(EXPR_HEX(0xFFFFFFFE), EXPR_HEX(0x1))));
64+
zassert_equal(0xFFFFFFFE % 0x2,
65+
EXPR_HEX_ENCODE(EXPR_MOD(EXPR_HEX(0xFFFFFFFE), EXPR_HEX(0x2))));
66+
zassert_equal(0x7FFFFFFF % 0x1,
67+
EXPR_HEX_ENCODE(EXPR_MOD(EXPR_HEX(0x7FFFFFFF), EXPR_HEX(0x1))));
68+
zassert_equal(0x7FFFFFFF % 0x2,
69+
EXPR_HEX_ENCODE(EXPR_MOD(EXPR_HEX(0x7FFFFFFF), EXPR_HEX(0x2))));
70+
zassert_equal(0xFFFFFFFF % 0x1,
71+
EXPR_HEX_ENCODE(EXPR_MOD(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x1))));
72+
zassert_equal(0xFFFFFFFF % 0x2,
73+
EXPR_HEX_ENCODE(EXPR_MOD(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x2))));
74+
zassert_equal(0xFFFFFFFF % 0x7,
75+
EXPR_HEX_ENCODE(EXPR_MOD(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0x7))));
76+
zassert_equal(0xFFFFFFFF % 0xFFFFFFFF,
77+
EXPR_HEX_ENCODE(EXPR_MOD(EXPR_HEX(0xFFFFFFFF), EXPR_HEX(0xFFFFFFFF))));
78+
}
79+
80+
ZTEST_SUITE(sys_util_expr_division, NULL, NULL, NULL, NULL, NULL);

0 commit comments

Comments
 (0)