Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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);
}