diff options
author | Matthias Clasen <mclasen@redhat.com> | 2011-06-19 01:05:26 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2011-06-19 01:05:26 -0400 |
commit | 9fa5b8e5c7701d9ea40577a9a317d02c79b17d18 (patch) | |
tree | da51eed196391464061297a4dd06ef1855004654 /tests | |
parent | 63fa44251a24d01854b86c82ce7e625c0553b88d (diff) |
asyncqueue: improve test coverage
Diffstat (limited to 'tests')
-rw-r--r-- | tests/asyncqueue-test.c | 57 |
1 files changed, 54 insertions, 3 deletions
diff --git a/tests/asyncqueue-test.c b/tests/asyncqueue-test.c index eb38d9ec5..588baa3d1 100644 --- a/tests/asyncqueue-test.c +++ b/tests/asyncqueue-test.c @@ -1,5 +1,6 @@ #undef G_DISABLE_ASSERT #undef G_LOG_DOMAIN +#undef G_DISABLE_DEPRECATED #include <time.h> #include <stdlib.h> @@ -103,7 +104,7 @@ sort_queue (gpointer user_data) static void enter_thread (gpointer data, gpointer user_data) { - gint len; + gint len G_GNUC_UNUSED; gint id; gulong ms; @@ -126,6 +127,54 @@ enter_thread (gpointer data, gpointer user_data) id, len)); } +static gint destroy_count = 0; + +static void +counting_destroy (gpointer item) +{ + destroy_count++; +} + +static void +basic_tests (void) +{ + GAsyncQueue *q; + gpointer item; + + destroy_count = 0; + + q = g_async_queue_new_full (counting_destroy); + g_async_queue_lock (q); + g_async_queue_ref (q); + g_async_queue_unlock (q); + g_async_queue_lock (q); + g_async_queue_ref_unlocked (q); + g_async_queue_unref_and_unlock (q); + + item = g_async_queue_try_pop (q); + g_assert (item == NULL); + + g_async_queue_lock (q); + item = g_async_queue_try_pop_unlocked (q); + g_async_queue_unlock (q); + g_assert (item == NULL); + + g_async_queue_push (q, GINT_TO_POINTER (1)); + g_async_queue_push (q, GINT_TO_POINTER (2)); + g_async_queue_push (q, GINT_TO_POINTER (3)); + g_assert_cmpint (destroy_count, ==, 0); + + g_async_queue_unref (q); + g_assert_cmpint (destroy_count, ==, 0); + + item = g_async_queue_pop (q); + g_assert_cmpint (GPOINTER_TO_INT (item), ==, 1); + g_assert_cmpint (destroy_count, ==, 0); + + g_async_queue_unref (q); + g_assert_cmpint (destroy_count, ==, 2); +} + int main (int argc, char *argv[]) { @@ -135,10 +184,12 @@ main (int argc, char *argv[]) gint max_unused_threads = MAX_THREADS; gint sort_multiplier = MAX_SORTS; gint sort_interval; - gchar *msg; + gchar *msg G_GNUC_UNUSED; g_thread_init (NULL); + basic_tests (); + PRINT_MSG (("creating async queue...")); async_queue = g_async_queue_new (); @@ -189,6 +240,6 @@ main (int argc, char *argv[]) main_loop = g_main_loop_new (NULL, FALSE); g_main_loop_run (main_loop); #endif - + return EXIT_SUCCESS; } |