#include #include static bool lib_test_add_wrap(void) { AL_TEST_START("lib_add_wrap"); u32 x = UINT32_MAX - 5; x = al_u32_add_wrap(x, 15); AL_TEST_EQ(x, 10, u32); x = UINT32_MAX; x = al_u32_add_wrap(x, 1); AL_TEST_EQ(x, 1, u32); x = UINT32_MAX - 25; x = al_u32_add_wrap(x, 20); AL_TEST_EQ(x, UINT32_MAX - 5, u32); x = al_u32_add_wrap(x, 6); AL_TEST_EQ(x, 1, u32); u16 y = UINT16_MAX - 5; y = al_u16_add_wrap(y, 15); AL_TEST_EQ(y, 10, u16); y = UINT16_MAX; y = al_u16_add_wrap(y, 1); AL_TEST_EQ(y, 1, u16); 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(); }