int DArray_push(DArray *array, void *el) { array->contents[array->end] = el; array->end++; if (array->end >= array->max) { return DArray_expand(array); } else { return 0; } }
int DArray_push(DArray* array, void* el) { array->contents[array->end] = el; ++array->end; if (DArray_end(array) >= DArray_max(array)) { return DArray_expand(array); } else { return 0; } }
int DArray_push(DArray *array, void *el) { check(array, "received darray null pointer"); assert(array->count <= array->max && "inconsistent darray capacity"); if (array->count == array->max) check(!DArray_expand(&array), "expand of darray failed"); return DArray_set(array, array->count, el); error: return 1; }
char *test_expand_contract() { int old_max = array->max; DArray_expand(array); mu_assert((unsigned int)array->max == old_max + array->expand_rate, "Wrong size after expand"); DArray_contract(array); mu_assert((unsigned int)array->max == array->expand_rate + 1, "Should stay at the expand_rate at least."); DArray_contract(array); mu_assert((unsigned int)array->max == array->expand_rate + 1, "Should stay at the expand_rate at least."); return NULL; }
char *test_expand_contract() { int old_max = array->max; DArray_expand(array); mu_assert((unsigned int)array->max == old_max + array->expand_rate, "Wrong size after expand."); old_max = array->max; DArray_contract(array); if ((unsigned int)(old_max - array->end - 1) > array->expand_rate) { mu_assert((unsigned int)array->max == old_max - array->expand_rate, "Should contract."); } else { mu_assert(array->max == old_max, "Should not contract."); } old_max = array->max; DArray_contract(array); if ((unsigned int)(old_max - array->end - 1) > array->expand_rate) { mu_assert((unsigned int)array->max == old_max - array->expand_rate, "Should contract."); } else { mu_assert(array->max == old_max, "Should not contract."); } return NULL; }