glib/tests/mainloop: Acquire the context while asserting its state
[platform/upstream/glib.git] / glib / tests / private.c
index cacf3f5..d23259c 100644 (file)
 static void
 test_private1 (void)
 {
-  GPrivate *private1;
+  static GPrivate private = G_PRIVATE_INIT (NULL);
   gpointer value;
 
-  private1 = g_private_new (NULL);
-
-  value = g_private_get (private1);
+  value = g_private_get (&private);
   g_assert (value == NULL);
 
-  g_private_set (private1, GINT_TO_POINTER(1));
-  value = g_private_get (private1);
+  g_private_set (&private, GINT_TO_POINTER(1));
+  value = g_private_get (&private);
   g_assert_cmpint (GPOINTER_TO_INT (value), ==, 1);
 
-  g_private_set (private1, GINT_TO_POINTER(2));
-  value = g_private_get (private1);
+  g_private_set (&private, GINT_TO_POINTER(2));
+  value = g_private_get (&private);
   g_assert_cmpint (GPOINTER_TO_INT (value), ==, 2);
 }
 
-static GPrivate *private2;
 static gint private2_destroy_count;
 
 static void
@@ -58,6 +55,8 @@ private2_destroy (gpointer data)
   g_atomic_int_inc (&private2_destroy_count);
 }
 
+static GPrivate private2 = G_PRIVATE_INIT (private2_destroy);
+
 static gpointer
 private2_func (gpointer data)
 {
@@ -68,9 +67,9 @@ private2_func (gpointer data)
   for (i = 0; i < 1000; i++)
     {
       v = value + (i % 5);
-      g_private_set (private2, GINT_TO_POINTER(v));
+      g_private_set (&private2, GINT_TO_POINTER (v));
       g_usleep (1000);
-      v2 = GPOINTER_TO_INT(g_private_get (private2));
+      v2 = GPOINTER_TO_INT (g_private_get (&private2));
       g_assert_cmpint (v, ==, v2);
     }
 
@@ -85,6 +84,7 @@ private2_func (gpointer data)
  * - destroy notifies are called for each thread exit
  * - destroy notifies are called for g_thread_exit() too
  * - destroy notifies are not called on g_private_set()
+ * - destroy notifies are called on g_private_replace()
  */
 static void
 test_private2 (void)
@@ -92,7 +92,8 @@ test_private2 (void)
   GThread *thread[10];
   gint i;
 
-  private2 = g_private_new (private2_destroy);
+  g_private_set (&private2, GINT_TO_POINTER (234));
+  g_private_replace (&private2, GINT_TO_POINTER (123));
 
   for (i = 0; i < 10; i++)
     thread[i] = g_thread_create (private2_func, GINT_TO_POINTER (i), TRUE, NULL);
@@ -100,7 +101,7 @@ test_private2 (void)
   for (i = 0; i < 10; i++)
     g_thread_join (thread[i]);
 
-  g_assert_cmpint (private2_destroy_count, ==, 10);
+  g_assert_cmpint (private2_destroy_count, ==, 11);
 }
 
 static gboolean private3_freed;
@@ -367,10 +368,6 @@ test_static_private5 (void)
 
   for (i = 0; i < 10; i++)
     g_thread_join (thread[i]);
-
-  g_mutex_clear (&m5);
-  g_cond_clear (&c5a);
-  g_cond_clear (&c5b);
 }
 
 int