void __r_array_tests () { printf("Running __r_array_tests()...\n"); printf("tests (1)\n"); r_array_t *array = r_array_new(3, R_ARRAY_DEFAULT); assert(array->maxlen == 3); assert(array->len == 0); printf("tests (2)\n"); r_array_append(array, "0"); r_array_append(array, "1"); r_array_append(array, "2"); assert(array->maxlen == 3); assert(array->len == 3); printf("tests (3)\n"); r_array_append(array, "3"); assert(array->maxlen == 4); assert(array->len == 4); printf("tests (4)\n"); r_array_replace(array, 2, "2.0"); r_array_insert(array, 3, "2.5"); assert(array->maxlen == 5); assert(array->len == 5); printf("tests (5)\n"); r_array_insert(array, 0, "-1"); assert(array->maxlen == 6); assert(array->len == 6); printf("tests (6)\n"); r_array_insert(array, 5, "2.75"); assert(array->maxlen == 7); assert(array->len == 7); assert(strcmp(array->items[array->len - 1], "3") == 0); printf("tests (7)\n"); for (int i=0; i < array->len; i++) { printf("r_array_t array[%d]: '%s'\n", i, array->items[i]); } printf("tests (8)\n"); r_array_destroy(array); array = NULL; printf("tests (9)\n"); r_array_t *array_of_heapitems = r_array_new(3, R_ARRAY_DEALLOCATE_ITEMS); char *str = "abc"; r_array_append(array_of_heapitems, strdup(str)); r_array_append(array_of_heapitems, strdup(str)); assert(array_of_heapitems->len == 2); assert(array_of_heapitems->maxlen == 3); printf("tests (10)\n"); r_array_destroy(array_of_heapitems); array_of_heapitems = NULL; }
void rex_subset_addnewsubstate(rarray_t *subset, unsigned long uid) { long min, max, mid; unsigned long ss_uid; min = 0; max = min + r_array_length(subset); while (max > min) { mid = (min + max)/2; ss_uid = rex_subset_index(subset, mid); if (uid == ss_uid) { return; } else if (uid >= ss_uid) { min = mid + 1; } else { max = mid; } } r_array_insert(subset, min, &uid); }