void test__create_priority_queue_auxiliary__c_builtin(void** state) { priority_queue_t* pque = malloc(sizeof(priority_queue_t)); assert_true(_create_priority_queue_auxiliary(pque, "double")); priority_queue_destroy(pque); }
void test__create_priority_queue_auxiliary__libcstl_builtin(void** state) { priority_queue_t* pque = malloc(sizeof(priority_queue_t)); assert_true(_create_priority_queue_auxiliary(pque, "priority_queue_t< vector_t < string_t>> ")); priority_queue_destroy(pque); }
void test__create_priority_queue__libcstl_builtin_type(void** state) { priority_queue_t* ppque = _create_priority_queue("vector_t < int> "); assert_true(ppque != NULL); priority_queue_destroy(ppque); }
void test__create_priority_queue__c_builtin_type(void** state) { priority_queue_t* ppque = _create_priority_queue("unsigned int"); assert_true(ppque != NULL); priority_queue_destroy(ppque); }
void test__create_priority_queue_auxiliary__user_defined_dup(void** state) { priority_queue_t* pque = NULL; type_duplicate(struct _tag_test__create_priority_queue_auxiliary__user_defined, _test__create_priority_queue_auxiliary__user_defined_t); pque = malloc(sizeof(priority_queue_t)); assert_true(_create_priority_queue_auxiliary(pque, "_test__create_priority_queue_auxiliary__user_defined_t")); priority_queue_destroy(pque); }
void test__create_priority_queue_auxiliary__user_defined(void** state) { priority_queue_t* pque = NULL; type_register(struct _tag_test__create_priority_queue_auxiliary__user_defined, NULL, NULL, NULL, NULL); pque = malloc(sizeof(priority_queue_t)); assert_true(_create_priority_queue_auxiliary(pque, "struct _tag_test__create_priority_queue_auxiliary__user_defined")); priority_queue_destroy(pque); }
void test__create_priority_queue__user_defined_type(void** state) { priority_queue_t* ppque = NULL; type_register(struct _tag_test__create_priority_queue__user_defined_type, NULL, NULL, NULL, NULL); ppque = _create_priority_queue("struct _tag_test__create_priority_queue__user_defined_type"); assert_true(ppque != NULL); priority_queue_destroy(ppque); }
/* TODO do random inserts and deletes */ int main(void) { float numbers[8] = {0.5f, 1.0f, 0.1f, 10.0f, 5.0f, 0.3f, 0.0f, 42.0f}; int ordered[8] = {6, 2, 5, 0, 1, 4, 3, 7}; struct PriorityQueue *queue = priority_queue_create(); for (int i = 0; i < 8; ++i) priority_queue_insert(queue, i, numbers[i]); for (int i = 0; priority_queue_length(queue); ++i) { int id; float value; priority_queue_minimum(queue, &id, &value); assert(ordered[i] == id); assert(numbers[ordered[i]] == value); priority_queue_extract_min(queue); } /* worst case test */ for (int i = 10000000; i >= 0; --i) priority_queue_insert(queue, 10000000 - i, i); /* should be sorted */ int previous = -1; for (int i = 0; i < 10000000; ++i) { int id; float value; priority_queue_minimum(queue, &id, &value); priority_queue_extract_min(queue); if (previous > value) printf("%g[%d] ", value, id); previous = value; } printf("\n"); priority_queue_destroy(queue); return 0; }