mirror of
https://gitee.com/zlgopen/awtk.git
synced 2024-11-30 19:18:53 +08:00
70 lines
1.4 KiB
C++
70 lines
1.4 KiB
C++
#include "base/timer.h"
|
|
#include "gtest/gtest.h"
|
|
|
|
#include <string>
|
|
|
|
using std::string;
|
|
|
|
static uint32_t now = 0;
|
|
static uint32_t timer_get_time() { return now; }
|
|
|
|
static string s_log;
|
|
static ret_t timer_once(const f_timer_t* timer) {
|
|
s_log += "o:";
|
|
return RET_OK;
|
|
}
|
|
|
|
static ret_t timer_repeat(const f_timer_t* timer) {
|
|
s_log += "r:";
|
|
return RET_REPEAT;
|
|
}
|
|
|
|
TEST(Timer, once) {
|
|
uint32_t i = 0;
|
|
uint32_t nr = 10;
|
|
timer_init(timer_get_time);
|
|
|
|
now = 0;
|
|
for (i = 0; i < nr; i++) {
|
|
ASSERT_EQ(timer_add(timer_once, NULL, 100), RET_OK);
|
|
ASSERT_EQ(timer_count(), i + 1);
|
|
}
|
|
ASSERT_EQ(timer_check(), RET_OK);
|
|
ASSERT_EQ(timer_count(), nr);
|
|
ASSERT_EQ(s_log, "");
|
|
|
|
now = 100;
|
|
|
|
ASSERT_EQ(timer_check(), RET_OK);
|
|
ASSERT_EQ(timer_count(), 0);
|
|
ASSERT_EQ(s_log, "o:o:o:o:o:o:o:o:o:o:");
|
|
}
|
|
|
|
TEST(Timer, repeat) {
|
|
uint32_t i = 0;
|
|
uint32_t nr = 10;
|
|
timer_init(timer_get_time);
|
|
|
|
now = 0;
|
|
s_log = "";
|
|
for (i = 0; i < nr; i++) {
|
|
ASSERT_EQ(timer_add(timer_repeat, NULL, 100), RET_OK);
|
|
ASSERT_EQ(timer_count(), i + 1);
|
|
}
|
|
ASSERT_EQ(timer_check(), RET_OK);
|
|
ASSERT_EQ(timer_count(), nr);
|
|
ASSERT_EQ(s_log, "");
|
|
|
|
now = 100;
|
|
s_log = "";
|
|
ASSERT_EQ(timer_check(), RET_OK);
|
|
ASSERT_EQ(timer_count(), nr);
|
|
ASSERT_EQ(s_log, "r:r:r:r:r:r:r:r:r:r:");
|
|
|
|
for (i = 0; i < nr; i++) {
|
|
ASSERT_EQ(timer_remove(timer_repeat, NULL, 100), RET_OK);
|
|
ASSERT_EQ(timer_count(), nr - i - 1);
|
|
}
|
|
ASSERT_EQ(timer_count(), 0);
|
|
}
|