summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2011-06-19 01:05:26 -0400
committerMatthias Clasen <mclasen@redhat.com>2011-06-19 01:05:26 -0400
commit9fa5b8e5c7701d9ea40577a9a317d02c79b17d18 (patch)
treeda51eed196391464061297a4dd06ef1855004654 /tests
parent63fa44251a24d01854b86c82ce7e625c0553b88d (diff)
asyncqueue: improve test coverage
Diffstat (limited to 'tests')
-rw-r--r--tests/asyncqueue-test.c57
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;
}