void ThreadPool_free(ThreadPool** th_pool_ptr) { ThreadPool_close(*th_pool_ptr); Queue_free(&((*th_pool_ptr)->idle_queue)); Queue_free(&((*th_pool_ptr)->curt_queue)); pthread_mutex_destroy(&((*th_pool_ptr)->pool_lock)); pthread_cond_destroy(&((*th_pool_ptr)->pool_cond)); pthread_mutex_destroy(&((*th_pool_ptr)->stop_lock)); pthread_cond_destroy(&((*th_pool_ptr)->stop_cond)); safe_free((void**)th_pool_ptr); log_debug(log_cat, "thread pool free success"); }
static int test_enqueue() { Queue* queue = Queue_new(0); int array[] = {1, 2, 3}; Queue_enqueue(queue, &array[0]); Queue_enqueue(queue, &array[1]); Queue_enqueue(queue, &array[2]); nu_assert_eq_int(3, Queue_size(queue)); Queue_free(queue); return 0; }
static int test_capacity() { Queue* queue = Queue_new(2); int array[] = {1, 2, 3}; nu_assert(Queue_enqueue(queue, &array[0])); nu_assert(Queue_enqueue(queue, &array[1])); nu_assert(!Queue_enqueue(queue, &array[2])); Queue_dequeue(queue); nu_assert(Queue_enqueue(queue, &array[2])); Queue_free(queue); return 0; }
static bool run_test( Queue * queue) { TEST(void *, "%p", ((void *)queue), !=, NULL); if (!test_empty(queue)) return false; if (!push_range(queue, 0, 0, 4000)) return false; if (!pop_range(queue, 4000, 0, 1000)) return false; if (!push_range(queue, 3000, 4000, 6000)) return false; if (!pop_range(queue, 5000, 1000, 6000)) return false; if (!test_empty(queue)) return false; if (!push_range(queue, 0, 0, 1000)) return false; if (!pop_range(queue, 1000, 0, 999)) return false; if (!push_range(queue, 1, 1000, 6000)) return false; if (!pop_range(queue, 5001, 999, 6000)) return false; if (!test_empty(queue)) return false; if (!push_range(queue, 0, 0, 2000)) return false; if (!pop_range(queue, 2000, 0, 1998)) return false; if (!push_range(queue, 2, 2000, 10000)) return false; if (!pop_range(queue, 8002, 1998, 10000)) return false; if (!test_empty(queue)) return false; Queue_free(queue); return true; }
static int test_size() { Queue* queue = Queue_new(0); nu_assert_eq_int(0, Queue_size(queue)); int array[] = {1}; Queue_enqueue(queue, &array[0]); nu_assert_eq_int(1, Queue_size(queue)); Queue_dequeue(queue); nu_assert_eq_int(0, Queue_size(queue)); Queue_free(queue); return 0; }
static int test_empty() { Queue* queue = Queue_new(0); nu_assert(Queue_empty(queue)); int array[] = {1}; Queue_enqueue(queue, &array[0]); nu_assert(!Queue_empty(queue)); Queue_dequeue(queue); nu_assert(Queue_empty(queue)); Queue_free(queue); return 0; }
static int test_front_back() { Queue* queue = Queue_new(0); nu_assert_eq_ptr(NULL, Queue_front(queue)); nu_assert_eq_ptr(NULL, Queue_back(queue)); int array[] = {1, 2, 3}; Queue_enqueue(queue, &array[0]); Queue_enqueue(queue, &array[1]); Queue_enqueue(queue, &array[2]); nu_assert_eq_ptr(&array[0], Queue_front(queue)); nu_assert_eq_ptr(&array[2], Queue_back(queue)); nu_assert_eq_int(3, Queue_size(queue)); Queue_free(queue); return 0; }