test remaining capacity
This commit is contained in:
parent
120eee0beb
commit
605e9e9227
3 changed files with 25 additions and 11 deletions
|
@ -90,7 +90,7 @@ void sparsemap_open(sparsemap_t *, uint8_t *data, size_t data_size);
|
|||
void sparsemap_set_data_size(sparsemap_t *map, size_t data_size);
|
||||
|
||||
/* Calculate remaining capacity, full when 0. */
|
||||
int sparsemap_remaining_capacity(sparsemap_t *map);
|
||||
double sparsemap_capacity_remaining(sparsemap_t *map);
|
||||
|
||||
/* Returns the size of the underlying byte array. */
|
||||
size_t sparsemap_get_range_size(sparsemap_t *map);
|
||||
|
|
|
@ -802,13 +802,15 @@ sparsemap_set_data_size(sparsemap_t *map, size_t data_size)
|
|||
* Calculates the remaining capacity as an integer that approaches 0 to
|
||||
* indicate full.
|
||||
*/
|
||||
int
|
||||
sparsemap_remaining_capacity(sparsemap_t *map) {
|
||||
double
|
||||
sparsemap_capacity_remaining(sparsemap_t *map) {
|
||||
if (map->m_data_used > map->m_data_size) {
|
||||
return 0;
|
||||
}
|
||||
int remaining = (int)(map->m_data_size - map->m_data_used);
|
||||
return (remaining > 100) ? 100 : remaining;
|
||||
if (map->m_data_size == 0) {
|
||||
return 100.0;
|
||||
}
|
||||
return 100 - (double)(((double)map->m_data_used / map->m_data_size) * 100);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
24
tests/test.c
24
tests/test.c
|
@ -201,13 +201,25 @@ test_api_remaining_capacity(const MunitParameter params[], void *data)
|
|||
|
||||
assert_ptr_not_null(map);
|
||||
|
||||
int i = 0, cap = sparsemap_remaining_capacity(map);
|
||||
while (cap > 0 && i < 10000) {
|
||||
int i = 0;
|
||||
double cap;
|
||||
do {
|
||||
sparsemap_set(map, i++, true);
|
||||
int new_cap = sparsemap_remaining_capacity(map);
|
||||
assert_true(new_cap <= cap);
|
||||
cap = new_cap;
|
||||
}
|
||||
cap = sparsemap_capacity_remaining(map);
|
||||
} while (cap > 1.0);
|
||||
//assert_true(i == 169985); when seed is 8675309
|
||||
assert_true(cap <= 1.0);
|
||||
|
||||
sparsemap_clear(map);
|
||||
i = 0;
|
||||
do {
|
||||
int p = munit_rand_int_range(0, 150000);
|
||||
sparsemap_set(map, p, true);
|
||||
i++;
|
||||
cap = sparsemap_capacity_remaining(map);
|
||||
} while (cap > 1.0);
|
||||
//assert_true(i == 64); when seed is 8675309
|
||||
assert_true(cap <= 1.0);
|
||||
|
||||
return MUNIT_OK;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue