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