1*1208bc7eSAndroid Build Coastguard Worker #include "test/jemalloc_test.h"
2*1208bc7eSAndroid Build Coastguard Worker
3*1208bc7eSAndroid Build Coastguard Worker #include "jemalloc/internal/ticker.h"
4*1208bc7eSAndroid Build Coastguard Worker
TEST_BEGIN(test_ticker_tick)5*1208bc7eSAndroid Build Coastguard Worker TEST_BEGIN(test_ticker_tick) {
6*1208bc7eSAndroid Build Coastguard Worker #define NREPS 2
7*1208bc7eSAndroid Build Coastguard Worker #define NTICKS 3
8*1208bc7eSAndroid Build Coastguard Worker ticker_t ticker;
9*1208bc7eSAndroid Build Coastguard Worker int32_t i, j;
10*1208bc7eSAndroid Build Coastguard Worker
11*1208bc7eSAndroid Build Coastguard Worker ticker_init(&ticker, NTICKS);
12*1208bc7eSAndroid Build Coastguard Worker for (i = 0; i < NREPS; i++) {
13*1208bc7eSAndroid Build Coastguard Worker for (j = 0; j < NTICKS; j++) {
14*1208bc7eSAndroid Build Coastguard Worker assert_u_eq(ticker_read(&ticker), NTICKS - j,
15*1208bc7eSAndroid Build Coastguard Worker "Unexpected ticker value (i=%d, j=%d)", i, j);
16*1208bc7eSAndroid Build Coastguard Worker assert_false(ticker_tick(&ticker),
17*1208bc7eSAndroid Build Coastguard Worker "Unexpected ticker fire (i=%d, j=%d)", i, j);
18*1208bc7eSAndroid Build Coastguard Worker }
19*1208bc7eSAndroid Build Coastguard Worker assert_u32_eq(ticker_read(&ticker), 0,
20*1208bc7eSAndroid Build Coastguard Worker "Expected ticker depletion");
21*1208bc7eSAndroid Build Coastguard Worker assert_true(ticker_tick(&ticker),
22*1208bc7eSAndroid Build Coastguard Worker "Expected ticker fire (i=%d)", i);
23*1208bc7eSAndroid Build Coastguard Worker assert_u32_eq(ticker_read(&ticker), NTICKS,
24*1208bc7eSAndroid Build Coastguard Worker "Expected ticker reset");
25*1208bc7eSAndroid Build Coastguard Worker }
26*1208bc7eSAndroid Build Coastguard Worker #undef NTICKS
27*1208bc7eSAndroid Build Coastguard Worker }
28*1208bc7eSAndroid Build Coastguard Worker TEST_END
29*1208bc7eSAndroid Build Coastguard Worker
TEST_BEGIN(test_ticker_ticks)30*1208bc7eSAndroid Build Coastguard Worker TEST_BEGIN(test_ticker_ticks) {
31*1208bc7eSAndroid Build Coastguard Worker #define NTICKS 3
32*1208bc7eSAndroid Build Coastguard Worker ticker_t ticker;
33*1208bc7eSAndroid Build Coastguard Worker
34*1208bc7eSAndroid Build Coastguard Worker ticker_init(&ticker, NTICKS);
35*1208bc7eSAndroid Build Coastguard Worker
36*1208bc7eSAndroid Build Coastguard Worker assert_u_eq(ticker_read(&ticker), NTICKS, "Unexpected ticker value");
37*1208bc7eSAndroid Build Coastguard Worker assert_false(ticker_ticks(&ticker, NTICKS), "Unexpected ticker fire");
38*1208bc7eSAndroid Build Coastguard Worker assert_u_eq(ticker_read(&ticker), 0, "Unexpected ticker value");
39*1208bc7eSAndroid Build Coastguard Worker assert_true(ticker_ticks(&ticker, NTICKS), "Expected ticker fire");
40*1208bc7eSAndroid Build Coastguard Worker assert_u_eq(ticker_read(&ticker), NTICKS, "Unexpected ticker value");
41*1208bc7eSAndroid Build Coastguard Worker
42*1208bc7eSAndroid Build Coastguard Worker assert_true(ticker_ticks(&ticker, NTICKS + 1), "Expected ticker fire");
43*1208bc7eSAndroid Build Coastguard Worker assert_u_eq(ticker_read(&ticker), NTICKS, "Unexpected ticker value");
44*1208bc7eSAndroid Build Coastguard Worker #undef NTICKS
45*1208bc7eSAndroid Build Coastguard Worker }
46*1208bc7eSAndroid Build Coastguard Worker TEST_END
47*1208bc7eSAndroid Build Coastguard Worker
TEST_BEGIN(test_ticker_copy)48*1208bc7eSAndroid Build Coastguard Worker TEST_BEGIN(test_ticker_copy) {
49*1208bc7eSAndroid Build Coastguard Worker #define NTICKS 3
50*1208bc7eSAndroid Build Coastguard Worker ticker_t ta, tb;
51*1208bc7eSAndroid Build Coastguard Worker
52*1208bc7eSAndroid Build Coastguard Worker ticker_init(&ta, NTICKS);
53*1208bc7eSAndroid Build Coastguard Worker ticker_copy(&tb, &ta);
54*1208bc7eSAndroid Build Coastguard Worker assert_u_eq(ticker_read(&tb), NTICKS, "Unexpected ticker value");
55*1208bc7eSAndroid Build Coastguard Worker assert_true(ticker_ticks(&tb, NTICKS + 1), "Expected ticker fire");
56*1208bc7eSAndroid Build Coastguard Worker assert_u_eq(ticker_read(&tb), NTICKS, "Unexpected ticker value");
57*1208bc7eSAndroid Build Coastguard Worker
58*1208bc7eSAndroid Build Coastguard Worker ticker_tick(&ta);
59*1208bc7eSAndroid Build Coastguard Worker ticker_copy(&tb, &ta);
60*1208bc7eSAndroid Build Coastguard Worker assert_u_eq(ticker_read(&tb), NTICKS - 1, "Unexpected ticker value");
61*1208bc7eSAndroid Build Coastguard Worker assert_true(ticker_ticks(&tb, NTICKS), "Expected ticker fire");
62*1208bc7eSAndroid Build Coastguard Worker assert_u_eq(ticker_read(&tb), NTICKS, "Unexpected ticker value");
63*1208bc7eSAndroid Build Coastguard Worker #undef NTICKS
64*1208bc7eSAndroid Build Coastguard Worker }
65*1208bc7eSAndroid Build Coastguard Worker TEST_END
66*1208bc7eSAndroid Build Coastguard Worker
67*1208bc7eSAndroid Build Coastguard Worker int
main(void)68*1208bc7eSAndroid Build Coastguard Worker main(void) {
69*1208bc7eSAndroid Build Coastguard Worker return test(
70*1208bc7eSAndroid Build Coastguard Worker test_ticker_tick,
71*1208bc7eSAndroid Build Coastguard Worker test_ticker_ticks,
72*1208bc7eSAndroid Build Coastguard Worker test_ticker_copy);
73*1208bc7eSAndroid Build Coastguard Worker }
74