Home | History | Annotate | Download | only in unit
      1 #include "test/jemalloc_test.h"
      2 
      3 #include "jemalloc/internal/ticker.h"
      4 
      5 TEST_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 }
     28 TEST_END
     29 
     30 TEST_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 }
     46 TEST_END
     47 
     48 TEST_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 }
     65 TEST_END
     66 
     67 int
     68 main(void) {
     69 	return test(
     70 	    test_ticker_tick,
     71 	    test_ticker_ticks,
     72 	    test_ticker_copy);
     73 }
     74