summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/lib.c28
1 files changed, 28 insertions, 0 deletions
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 <al/test.h>
+#include <al/random.h>
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();
}