xref: /netbsd-src/external/bsd/jemalloc/dist/test/unit/div.c (revision 7bdf38e5b7a28439665f2fdeff81e36913eef7dd)
1a0698ed9Schristos #include "test/jemalloc_test.h"
2a0698ed9Schristos 
3a0698ed9Schristos #include "jemalloc/internal/div.h"
4a0698ed9Schristos 
5a0698ed9Schristos TEST_BEGIN(test_div_exhaustive) {
6a0698ed9Schristos 	for (size_t divisor = 2; divisor < 1000 * 1000; ++divisor) {
7a0698ed9Schristos 		div_info_t div_info;
8a0698ed9Schristos 		div_init(&div_info, divisor);
9a0698ed9Schristos 		size_t max = 1000 * divisor;
10a0698ed9Schristos 		if (max < 1000 * 1000) {
11a0698ed9Schristos 			max = 1000 * 1000;
12a0698ed9Schristos 		}
13a0698ed9Schristos 		for (size_t dividend = 0; dividend < 1000 * divisor;
14a0698ed9Schristos 		    dividend += divisor) {
15a0698ed9Schristos 			size_t quotient = div_compute(
16a0698ed9Schristos 			    &div_info, dividend);
17*7bdf38e5Schristos 			expect_zu_eq(dividend, quotient * divisor,
18a0698ed9Schristos 			    "With divisor = %zu, dividend = %zu, "
19a0698ed9Schristos 			    "got quotient %zu", divisor, dividend, quotient);
20a0698ed9Schristos 		}
21a0698ed9Schristos 	}
22a0698ed9Schristos }
23a0698ed9Schristos TEST_END
24a0698ed9Schristos 
25a0698ed9Schristos int
26a0698ed9Schristos main(void) {
27a0698ed9Schristos 	return test_no_reentrancy(
28a0698ed9Schristos 	    test_div_exhaustive);
29a0698ed9Schristos }
30