+ gboolean success;
+
+ success = GPOINTER_TO_INT (test_func (&error));
+
+ if (success)
+ return;
+
+ g_print ("FAIL: %s\n", error->message);
+ g_assert_not_reached ();
+}
+
+void test_multithread ()
+{
+ const int N = 100;
+
+ GThread *thread[N];
+ MoonshotError *error[N];
+ gboolean success[N];
+
+ GError *g_error = NULL;
+ int i;
+
+ for (i=0; i<N; i++) {
+ error[i] = NULL;
+ thread[i] = g_thread_create (test_func,
+ &error[i],
+ TRUE,
+ &g_error);
+ g_assert_no_error (g_error);
+ }
+
+ for (i=0; i<N; i++)
+ success[i] = GPOINTER_TO_INT (g_thread_join (thread[i]));