#include "test/jemalloc_test.h"

TEST_BEGIN(test_arena_slab_regind)
{
	szind_t binind;

	for (binind = 0; binind < NBINS; binind++) {
		size_t regind;
		extent_t slab;
		const arena_bin_info_t *bin_info = &arena_bin_info[binind];
		extent_init(&slab, NULL, mallocx(bin_info->slab_size,
		    MALLOCX_LG_ALIGN(LG_PAGE)), bin_info->slab_size, 0, 0, true,
		    false, true, true);
		assert_ptr_not_null(extent_addr_get(&slab),
		    "Unexpected malloc() failure");
		for (regind = 0; regind < bin_info->nregs; regind++) {
			void *reg = (void *)((uintptr_t)extent_addr_get(&slab) +
			    (bin_info->reg_size * regind));
			assert_zu_eq(arena_slab_regind(&slab, binind, reg),
			    regind,
			    "Incorrect region index computed for size %zu",
			    bin_info->reg_size);
		}
		free(extent_addr_get(&slab));
	}
}
TEST_END

int
main(void)
{
	return (test(
	    test_arena_slab_regind));
}
