From c682feffb0a6cde943687587721f2603b3846ceb Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Sat, 5 Oct 2024 19:04:10 -0400 Subject: atomic: Rely on wrapping for al_inc_u16() Signed-off-by: Andrew Opalach --- tests/lib.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'tests') diff --git a/tests/lib.c b/tests/lib.c index f194abc..aa66803 100644 --- a/tests/lib.c +++ b/tests/lib.c @@ -1,4 +1,5 @@ #include +#include static bool lib_test_add_wrap(void) { @@ -29,11 +30,38 @@ static bool lib_test_add_wrap(void) AL_TEST_END(); } +static bool lib_test_add_wrap_atomic(void) +{ + AL_TEST_START("lib_add_wrap_atomic"); + + for (u32 i = 0; i < UINT16_MAX - 3; i++) { + al_inc_u16(); + } + + AL_TEST_EQ(al_inc_u16(), UINT16_MAX - 3, u16); + AL_TEST_EQ(al_inc_u16(), UINT16_MAX - 2, u16); + AL_TEST_EQ(al_inc_u16(), UINT16_MAX - 1, u16); + AL_TEST_EQ(al_inc_u16(), UINT16_MAX, u16); + AL_TEST_EQ(al_inc_u16(), 0, u16); + AL_TEST_EQ(al_inc_u16(), 1, u16); + AL_TEST_EQ(al_inc_u16(), 2, u16); + AL_TEST_EQ(al_inc_u16(), 3, u16); + + for (u32 i = 0; i < UINT16_MAX - 3; i++) { + AL_TEST_EQ(al_inc_u16(), i + 4, u16); + } + + AL_TEST_EQ(al_inc_u16(), 0, u16); + + AL_TEST_END(); +} + bool lib_tests_run(void) { AL_TEST_START_GROUP("lib"); AL_TEST_RUN(lib_test_add_wrap); + AL_TEST_RUN(lib_test_add_wrap_atomic); AL_TEST_END_GROUP(); } -- cgit v1.2.3-101-g0448