udapted vi.po
[rhythmbox.git] / tests / test-utils.c
blob08a03c7045f698cc3504e4d0a209803202ec6802
2 #include <check.h>
3 #include <gtk/gtk.h>
5 #include "test-utils.h"
6 #include "rhythmdb.h"
7 #include "rhythmdb-tree.h"
8 #include "rb-debug.h"
9 #include "rb-util.h"
11 void
12 start_test_case (void)
14 fprintf (stderr, "\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
17 void
18 end_step (void)
20 while (gtk_events_pending ())
21 gtk_main_iteration_do (FALSE);
22 fprintf (stderr, "----------------------------------------------------------------\n");
25 void
26 end_test_case (void)
28 fprintf (stderr, "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
31 gboolean waiting, signaled;
32 char *sig_name;
33 gulong sig_handler;
34 GObject *sig_object;
36 static void
37 mark_signal (void)
39 g_signal_handler_disconnect (sig_object, sig_handler);
40 sig_object = NULL;
41 sig_handler = 0;
43 if (signaled) {
44 rb_debug ("got signal '%s' multiple times", sig_name);
45 } else {
46 rb_debug ("got signal '%s'", sig_name);
47 signaled = TRUE;
48 if (waiting)
49 gtk_main_quit ();
53 void
54 set_waiting_signal (GObject *o, const char *name)
56 signaled = FALSE;
57 waiting = FALSE;
58 sig_name = g_strdup (name);
59 sig_object = o;
60 sig_handler = g_signal_connect (o, sig_name, G_CALLBACK (mark_signal), NULL);
63 void
64 wait_for_signal (void)
66 if (!signaled) {
67 rb_debug ("waiting for signal '%s'", sig_name);
68 waiting = TRUE;
69 gtk_main ();
70 } else {
71 rb_debug ("no need to wait for signal '%s', already received", sig_name);
74 g_free (sig_name);
75 sig_name = NULL;
79 /* common setup and teardown */
80 RhythmDB *db = NULL;
81 gboolean waiting_db, finalised_db;
83 void
84 test_rhythmdb_setup (void)
86 RhythmDBEntryType entry_type;
87 db = rhythmdb_tree_new ("test");
88 fail_unless (db != NULL, "failed to initialise DB");
89 rhythmdb_start_action_thread (db);
91 /* allow SONGs to be synced to for the tests */
92 entry_type = RHYTHMDB_ENTRY_TYPE_SONG;
93 entry_type->can_sync_metadata = (RhythmDBEntryCanSyncFunc)rb_true_function;
94 entry_type->sync_metadata = (RhythmDBEntrySyncFunc)rb_null_function;
97 void
98 test_rhythmdb_shutdown (void)
100 fail_unless (db != NULL, "failed to shutdown DB");
101 rhythmdb_shutdown (db);
103 /* release the reference, and wait until after finalisation */
104 g_object_weak_ref (G_OBJECT (db), (GWeakNotify)gtk_main_quit, NULL);
105 g_idle_add ((GSourceFunc)g_object_unref, db);
106 gtk_main ();
107 db = NULL;
110 void
111 set_entry_string (RhythmDB *db, RhythmDBEntry *entry, RhythmDBPropType prop, const char *value)
113 GValue v = {0,};
115 g_value_init (&v, G_TYPE_STRING);
116 g_value_set_string (&v, value);
117 rhythmdb_entry_set (db, entry, prop, &v);
118 g_value_unset (&v);
121 void
122 set_entry_ulong (RhythmDB *db, RhythmDBEntry *entry, RhythmDBPropType prop, gulong value)
124 GValue v = {0,};
126 g_value_init (&v, G_TYPE_ULONG);
127 g_value_set_ulong (&v, value);
128 rhythmdb_entry_set (db, entry, prop, &v);
129 g_value_unset (&v);
132 void
133 set_entry_hidden (RhythmDB *db, RhythmDBEntry *entry, gboolean hidden)
135 GValue v = {0,};
137 g_value_init (&v, G_TYPE_BOOLEAN);
138 g_value_set_boolean (&v, hidden);
139 rhythmdb_entry_set (db, entry, RHYTHMDB_PROP_HIDDEN, &v);
140 g_value_unset (&v);