diff options
author | David Goldblatt <davidgoldblatt@fb.com> | 2017-12-20 01:30:50 (GMT) |
---|---|---|
committer | David Goldblatt <davidtgoldblatt@gmail.com> | 2017-12-21 22:25:43 (GMT) |
commit | 21f7c13d0b172dac6ea76236bbe0a2f3ee4bcb7b (patch) | |
tree | 0b57b8ba7a9946d599adc21070f58983ce59d1f3 /test/unit | |
parent | 7f1b02e3fa9de7e0bb5e2562994b5ab3b82c0ec3 (diff) | |
download | jemalloc-21f7c13d0b172dac6ea76236bbe0a2f3ee4bcb7b.zip jemalloc-21f7c13d0b172dac6ea76236bbe0a2f3ee4bcb7b.tar.gz jemalloc-21f7c13d0b172dac6ea76236bbe0a2f3ee4bcb7b.tar.bz2 |
Add the div module, which allows fast division by dynamic values.
Diffstat (limited to 'test/unit')
-rw-r--r-- | test/unit/div.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/test/unit/div.c b/test/unit/div.c new file mode 100644 index 0000000..b47f10b --- /dev/null +++ b/test/unit/div.c @@ -0,0 +1,29 @@ +#include "test/jemalloc_test.h" + +#include "jemalloc/internal/div.h" + +TEST_BEGIN(test_div_exhaustive) { + for (size_t divisor = 2; divisor < 1000 * 1000; ++divisor) { + div_info_t div_info; + div_init(&div_info, divisor); + size_t max = 1000 * divisor; + if (max < 1000 * 1000) { + max = 1000 * 1000; + } + for (size_t dividend = 0; dividend < 1000 * divisor; + dividend += divisor) { + size_t quotient = div_compute( + &div_info, dividend); + assert_zu_eq(dividend, quotient * divisor, + "With divisor = %zu, dividend = %zu, " + "got quotient %zu", divisor, dividend, quotient); + } + } +} +TEST_END + +int +main(void) { + return test_no_reentrancy( + test_div_exhaustive); +} |