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);
|
void sparsemap_set_data_size(sparsemap_t *map, size_t data_size);
|
||||||
|
|
||||||
/* Calculate remaining capacity, full when 0. */
|
/* 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. */
|
/* Returns the size of the underlying byte array. */
|
||||||
size_t sparsemap_get_range_size(sparsemap_t *map);
|
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
|
* Calculates the remaining capacity as an integer that approaches 0 to
|
||||||
* indicate full.
|
* indicate full.
|
||||||
*/
|
*/
|
||||||
int
|
double
|
||||||
sparsemap_remaining_capacity(sparsemap_t *map) {
|
sparsemap_capacity_remaining(sparsemap_t *map) {
|
||||||
if (map->m_data_used > map->m_data_size) {
|
if (map->m_data_used > map->m_data_size) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int remaining = (int)(map->m_data_size - map->m_data_used);
|
if (map->m_data_size == 0) {
|
||||||
return (remaining > 100) ? 100 : remaining;
|
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);
|
assert_ptr_not_null(map);
|
||||||
|
|
||||||
int i = 0, cap = sparsemap_remaining_capacity(map);
|
int i = 0;
|
||||||
while (cap > 0 && i < 10000) {
|
double cap;
|
||||||
|
do {
|
||||||
sparsemap_set(map, i++, true);
|
sparsemap_set(map, i++, true);
|
||||||
int new_cap = sparsemap_remaining_capacity(map);
|
cap = sparsemap_capacity_remaining(map);
|
||||||
assert_true(new_cap <= cap);
|
} while (cap > 1.0);
|
||||||
cap = new_cap;
|
//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;
|
return MUNIT_OK;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue