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