tests: add test for k_timer_user_data_set/get()

Change-Id: I1baaa4d1a4c1626b3acdbeb4b0bfe58c9b8fff0c
Signed-off-by: Benjamin Walsh <walsh.benj@gmail.com>
This commit is contained in:
Benjamin Walsh 2017-01-12 21:58:49 -05:00 committed by Anas Nashif
commit 7ddec7b471
3 changed files with 64 additions and 1 deletions

View file

@ -39,6 +39,7 @@ void test_main(void *p1, void *p2, void *p3)
ztest_unit_test(test_timer_status_get),
ztest_unit_test(test_timer_status_get_anytime),
ztest_unit_test(test_timer_status_sync),
ztest_unit_test(test_timer_k_define));
ztest_unit_test(test_timer_k_define),
ztest_unit_test(test_timer_user_data));
ztest_run_test_suite(test_timer_api);
}

View file

@ -31,5 +31,6 @@ void test_timer_status_get(void);
void test_timer_status_get_anytime(void);
void test_timer_status_sync(void);
void test_timer_k_define(void);
void test_timer_user_data(void);
#endif /* __TEST_TIMER_H__ */

View file

@ -213,3 +213,64 @@ void test_timer_k_define(void)
/* cleanup environment */
k_timer_stop(&ktimer);
}
/* k_timer_user_data_set/get test */
static void user_data_timer_handler(struct k_timer *timer);
static struct k_timer user_data_timer[5] = {
K_TIMER_INITIALIZER(user_data_timer[0], user_data_timer_handler, NULL),
K_TIMER_INITIALIZER(user_data_timer[1], user_data_timer_handler, NULL),
K_TIMER_INITIALIZER(user_data_timer[2], user_data_timer_handler, NULL),
K_TIMER_INITIALIZER(user_data_timer[3], user_data_timer_handler, NULL),
K_TIMER_INITIALIZER(user_data_timer[4], user_data_timer_handler, NULL),
};
static const intptr_t user_data[5] = {0x1337, 0xbabe, 0xd00d, 0xdeaf, 0xfade};
static int user_data_correct[5] = {0, 0, 0, 0, 0};
static void user_data_timer_handler(struct k_timer *timer)
{
int timer_num = timer == &user_data_timer[0] ? 0 :
timer == &user_data_timer[1] ? 1 :
timer == &user_data_timer[2] ? 2 :
timer == &user_data_timer[3] ? 3 :
timer == &user_data_timer[4] ? 4 : -1;
if (timer_num == -1) {
return;
}
intptr_t data_retrieved = (intptr_t)k_timer_user_data_get(timer);
user_data_correct[timer_num] = user_data[timer_num] == data_retrieved;
}
void test_timer_user_data(void)
{
int ii;
for (ii = 0; ii < 5; ii++) {
intptr_t check;
k_timer_user_data_set(&user_data_timer[ii],
(void *)user_data[ii]);
check = (intptr_t)k_timer_user_data_get(&user_data_timer[ii]);
assert_true(check == user_data[ii], NULL);
}
for (ii = 0; ii < 5; ii++) {
k_timer_start(&user_data_timer[ii], 50 + ii * 50, 0);
}
k_sleep(50 * ii + 50);
for (ii = 0; ii < 5; ii++) {
k_timer_stop(&user_data_timer[ii]);
}
for (ii = 0; ii < 5; ii++) {
assert_true(user_data_correct[ii], NULL);
}
}