static PyObject *common_quote(PyObject *args, quote_fn qfunc) { unsigned char *src = NULL; Py_ssize_t src_len = 0; PyObject *arg, *res, *strtmp = NULL; if (!PyArg_ParseTuple(args, "O", &arg)) return NULL; if (arg != Py_None) { src_len = get_buffer(arg, &src, &strtmp); if (src_len < 0) return NULL; } res = qfunc(src, src_len); Py_CLEAR(strtmp); return res; }
short xGetPayrollSetup(RDApayroll *paysetup,void (*qfunc)(void *),void *arg,int line, char *file) { #ifdef USE_RDA_DIAGNOSTICS if(diagmix) { prterr("DIAG GetPayrollSetup at line [%d] program [%s].",line,file); } #endif /* ifdef USE_RDA_DIAGNOSTICS */ if(getpayrollbin(paysetup)==(-1)) { ERRORDIALOG("Payroll Setup Not Available","The Payroll Setup File cannot opened.\n",NULL,TRUE); ShutdownSecurity(); RDAAPPMAINLOOP(); if(qfunc!=NULL) qfunc(arg); return(-1); } return(0); }
int main (int argc, char **argv) { RhythmDB *db; RhythmDBEntry *entry, *entry2, *entry3, *entry4; GtkTreeModel *main_model; GtkTreeIter iter; guint testnum = 1; query_func qfunc; gtk_init (&argc, &argv); gdk_threads_init (); rb_thread_helpers_init (); rb_debug_init (TRUE); GDK_THREADS_ENTER (); qfunc = rhythmdb_do_full_query; begin: db = rhythmdb_tree_new ("test"); /* * TEST 1: Entry creation with album */ g_print ("Test %d\n", testnum); rhythmdb_write_lock (db); entry = create_entry (db, "file:///sin.mp3", "Sin", "Pretty Hate Machine", "Nine Inch Nails", "Rock"); rhythmdb_write_unlock (db); g_print ("Test %d\n", testnum); testnum++; /* * TEST 2: Do a query for all songs, verify our single song is in it */ g_print ("Test %d\n", testnum); rhythmdb_read_lock (db); main_model = GTK_TREE_MODEL (rhythmdb_query_model_new_empty (db)); qfunc (db, main_model, RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_TYPE, RHYTHMDB_ENTRY_TYPE_IGNORE, RHYTHMDB_QUERY_END); wait_for_model_completion (RHYTHMDB_QUERY_MODEL (main_model)); g_assert (gtk_tree_model_get_iter_first (main_model, &iter)); /* We should only have one entry. */ g_assert (!gtk_tree_model_iter_next (main_model, &iter)); VERIFY_META_MODELS ("Pretty Hate Machine", "Nine Inch Nails", "Rock"); VERIFY_MAIN_MODEL (entry); DESTROY_MODELS (); rhythmdb_read_unlock (db); g_print ("Test %d\n", testnum); testnum++; /* * TEST 3: Do a query for songs named "Sin" */ g_print ("Test %d\n", testnum); rhythmdb_read_lock (db); main_model = GTK_TREE_MODEL (rhythmdb_query_model_new_empty (db)); rhythmdb_do_full_query (db, main_model, RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_TITLE, "Sin", RHYTHMDB_QUERY_END); wait_for_model_completion (RHYTHMDB_QUERY_MODEL (main_model)); g_assert (gtk_tree_model_get_iter_first (main_model, &iter)); /* We should only have one entry. */ g_assert (!gtk_tree_model_iter_next (main_model, &iter)); VERIFY_META_MODELS ("Pretty Hate Machine", "Nine Inch Nails", "Rock"); VERIFY_MAIN_MODEL (entry); DESTROY_MODELS (); rhythmdb_read_unlock (db); g_print ("Test %d\n", testnum); testnum++; /* * TEST 4: Do a query for songs named "Cow", should be empty */ g_print ("Test %d\n", testnum); rhythmdb_read_lock (db); main_model = GTK_TREE_MODEL (rhythmdb_query_model_new_empty (db)); rhythmdb_do_full_query (db, main_model, RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_TITLE, "Cow", RHYTHMDB_QUERY_END); wait_for_model_completion (RHYTHMDB_QUERY_MODEL (main_model)); g_assert (!gtk_tree_model_get_iter_first (main_model, &iter)); DESTROY_MODELS (); rhythmdb_read_unlock (db); g_print ("Test %d\n", testnum); testnum++; /* * TEST 5 * Do a query for songs named "Cow" and "Sin", should be empty. */ g_print ("Test %d\n", testnum); rhythmdb_read_lock (db); main_model = GTK_TREE_MODEL (rhythmdb_query_model_new_empty (db)); rhythmdb_do_full_query (db, main_model, RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_TITLE, "Cow", RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_TITLE, "Sin", RHYTHMDB_QUERY_END); wait_for_model_completion (RHYTHMDB_QUERY_MODEL (main_model)); g_assert (!gtk_tree_model_get_iter_first (main_model, &iter)); DESTROY_MODELS (); rhythmdb_read_unlock (db); g_print ("Test %d\n", testnum); testnum++; /* * TEST 6 * Do a query for songs named "Cow" or "Sin", should have our song. */ g_print ("Test %d\n", testnum); rhythmdb_read_lock (db); main_model = GTK_TREE_MODEL (rhythmdb_query_model_new_empty (db)); rhythmdb_do_full_query (db, main_model, RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_TITLE, "Cow", RHYTHMDB_QUERY_DISJUNCTION, RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_TITLE, "Sin", RHYTHMDB_QUERY_END); wait_for_model_completion (RHYTHMDB_QUERY_MODEL (main_model)); g_assert (gtk_tree_model_get_iter_first (main_model, &iter)); /* We should only have one entry. */ g_assert (!gtk_tree_model_iter_next (main_model, &iter)); VERIFY_META_MODELS ("Pretty Hate Machine", "Nine Inch Nails", "Rock"); VERIFY_MAIN_MODEL (entry); DESTROY_MODELS (); rhythmdb_read_unlock (db); g_print ("Test %d\n", testnum); testnum++; /* * TEST 7 * Do a query for songs with Genre "Rock", should have our song. */ g_print ("Test %d\n", testnum); rhythmdb_read_lock (db); main_model = GTK_TREE_MODEL (rhythmdb_query_model_new_empty (db)); rhythmdb_do_full_query (db, main_model, RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_GENRE, "Rock", RHYTHMDB_QUERY_END); wait_for_model_completion (RHYTHMDB_QUERY_MODEL (main_model)); g_assert (gtk_tree_model_get_iter_first (main_model, &iter)); /* We should only have one entry. */ g_assert (!gtk_tree_model_iter_next (main_model, &iter)); VERIFY_META_MODELS ("Pretty Hate Machine", "Nine Inch Nails", "Rock"); VERIFY_MAIN_MODEL (entry); DESTROY_MODELS (); rhythmdb_read_unlock (db); g_print ("Test %d\n", testnum); testnum++; /* * TEST 8 * Do a query for songs with Genre "Nine Inch Nails", * should be empty. */ g_print ("Test %d\n", testnum); rhythmdb_read_lock (db); main_model = GTK_TREE_MODEL (rhythmdb_query_model_new_empty (db)); rhythmdb_do_full_query (db, main_model, RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_GENRE, "Nine Inch Nails", RHYTHMDB_QUERY_END); wait_for_model_completion (RHYTHMDB_QUERY_MODEL (main_model)); g_assert (!gtk_tree_model_get_iter_first (main_model, &iter)); DESTROY_MODELS (); rhythmdb_read_unlock (db); g_print ("Test %d\n", testnum); testnum++; /* * TEST 9 * Do a query for songs with album "Pretty Hate Machine", * should have our song. */ g_print ("Test %d\n", testnum); rhythmdb_read_lock (db); main_model = GTK_TREE_MODEL (rhythmdb_query_model_new_empty (db)); rhythmdb_do_full_query (db, main_model, RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_ALBUM, "Pretty Hate Machine", RHYTHMDB_QUERY_END); wait_for_model_completion (RHYTHMDB_QUERY_MODEL (main_model)); g_assert (gtk_tree_model_get_iter_first (main_model, &iter)); /* We should only have one entry. */ g_assert (!gtk_tree_model_iter_next (main_model, &iter)); VERIFY_META_MODELS ("Pretty Hate Machine", "Nine Inch Nails", "Rock"); VERIFY_MAIN_MODEL (entry); DESTROY_MODELS (); rhythmdb_read_unlock (db); g_print ("Test %d\n", testnum); testnum++; /* * TEST 10 * Do a query for songs with artist "Nine Inch Nails", * should have our song. */ g_print ("Test %d\n", testnum); rhythmdb_read_lock (db); main_model = GTK_TREE_MODEL (rhythmdb_query_model_new_empty (db)); rhythmdb_do_full_query (db, main_model, RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_ARTIST, "Nine Inch Nails", RHYTHMDB_QUERY_END); wait_for_model_completion (RHYTHMDB_QUERY_MODEL (main_model)); g_assert (gtk_tree_model_get_iter_first (main_model, &iter)); /* We should only have one entry. */ g_assert (!gtk_tree_model_iter_next (main_model, &iter)); VERIFY_META_MODELS ("Pretty Hate Machine", "Nine Inch Nails", "Rock"); VERIFY_MAIN_MODEL (entry); DESTROY_MODELS (); rhythmdb_read_unlock (db); g_print ("Test %d\n", testnum); testnum++; g_print ("Test %d\n", testnum); rhythmdb_write_lock (db); entry2 = create_entry (db, "file:///head like a hole.mp3", "Head Like A Hole", "Pretty Hate Machine", "Nine Inch Nails", "Rock"); main_model = GTK_TREE_MODEL (rhythmdb_query_model_new_empty (db)); rhythmdb_do_full_query (db, main_model, RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_ARTIST, "Nine Inch Nails", RHYTHMDB_QUERY_END); wait_for_model_completion (RHYTHMDB_QUERY_MODEL (main_model)); g_assert (gtk_tree_model_get_iter_first (main_model, &iter)); g_assert (gtk_tree_model_iter_next (main_model, &iter)); g_assert (!gtk_tree_model_iter_next (main_model, &iter)); VERIFY_META_MODELS ("Pretty Hate Machine", "Nine Inch Nails", "Rock"); VERIFY_MAIN_MODEL (entry); VERIFY_MAIN_MODEL (entry2); DESTROY_MODELS (); rhythmdb_write_unlock (db); g_print ("Test %d\n", testnum); testnum++; g_print ("Test %d\n", testnum); rhythmdb_write_lock (db); main_model = GTK_TREE_MODEL (rhythmdb_query_model_new_empty (db)); rhythmdb_do_full_query (db, main_model, RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_ALBUM, "Pretty Hate Machine", RHYTHMDB_QUERY_END); wait_for_model_completion (RHYTHMDB_QUERY_MODEL (main_model)); g_assert (gtk_tree_model_get_iter_first (main_model, &iter)); g_assert (gtk_tree_model_iter_next (main_model, &iter)); g_assert (!gtk_tree_model_iter_next (main_model, &iter)); VERIFY_META_MODELS ("Pretty Hate Machine", "Nine Inch Nails", "Rock"); VERIFY_MAIN_MODEL (entry); VERIFY_MAIN_MODEL (entry2); DESTROY_MODELS (); rhythmdb_write_unlock (db); g_print ("Test %d\n", testnum); testnum++; g_print ("Test %d\n", testnum); rhythmdb_write_lock (db); main_model = GTK_TREE_MODEL (rhythmdb_query_model_new_empty (db)); rhythmdb_do_full_query (db, main_model, RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_GENRE, "Rock", RHYTHMDB_QUERY_END); wait_for_model_completion (RHYTHMDB_QUERY_MODEL (main_model)); g_assert (gtk_tree_model_get_iter_first (main_model, &iter)); g_assert (gtk_tree_model_iter_next (main_model, &iter)); g_assert (!gtk_tree_model_iter_next (main_model, &iter)); VERIFY_META_MODELS ("Pretty Hate Machine", "Nine Inch Nails", "Rock"); VERIFY_MAIN_MODEL (entry); VERIFY_MAIN_MODEL (entry2); DESTROY_MODELS (); rhythmdb_write_unlock (db); g_print ("Test %d\n", testnum); g_print ("Test %d\n", testnum); rhythmdb_write_lock (db); entry3 = create_entry (db, "file:///angel.ogg", "Angel", "Mezzanine", "Massive Attack", "Electronica"); main_model = GTK_TREE_MODEL (rhythmdb_query_model_new_empty (db)); rhythmdb_do_full_query (db, main_model, RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_GENRE, "Electronica", RHYTHMDB_QUERY_END); wait_for_model_completion (RHYTHMDB_QUERY_MODEL (main_model)); g_assert (gtk_tree_model_get_iter_first (main_model, &iter)); g_assert (!gtk_tree_model_iter_next (main_model, &iter)); VERIFY_META_MODELS ("Mezzanine", "Massive Attack", "Electronica"); VERIFY_MAIN_MODEL (entry3); DESTROY_MODELS (); rhythmdb_write_unlock (db); g_print ("Test %d\n", testnum); testnum++; g_print ("Test %d\n", testnum); rhythmdb_write_lock (db); entry4 = create_entry (db, "file:///killa bees.ogg", "Killa Bees", "Armageddon", "Usual Suspects", "Drum N' Bass"); main_model = GTK_TREE_MODEL (rhythmdb_query_model_new_empty (db)); rhythmdb_do_full_query (db, main_model, RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_TITLE, "Angel", RHYTHMDB_QUERY_DISJUNCTION, RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_TITLE, "Sin", RHYTHMDB_QUERY_DISJUNCTION, RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_TITLE, "Head Like A Hole", RHYTHMDB_QUERY_DISJUNCTION, RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_TITLE, "Killa Bees", RHYTHMDB_QUERY_END); wait_for_model_completion (RHYTHMDB_QUERY_MODEL (main_model)); g_assert (gtk_tree_model_get_iter_first (main_model, &iter)); g_assert (gtk_tree_model_iter_next (main_model, &iter)); g_assert (gtk_tree_model_iter_next (main_model, &iter)); g_assert (gtk_tree_model_iter_next (main_model, &iter)); g_assert (!gtk_tree_model_iter_next (main_model, &iter)); VERIFY_META_MODELS ("Mezzanine", "Massive Attack", "Electronica"); VERIFY_META_MODELS ("Armageddon", "Usual Suspects", "Drum N' Bass"); VERIFY_META_MODELS ("Pretty Hate Machine", "Nine Inch Nails", "Rock"); VERIFY_MAIN_MODEL (entry); VERIFY_MAIN_MODEL (entry2); VERIFY_MAIN_MODEL (entry3); VERIFY_MAIN_MODEL (entry4); DESTROY_MODELS (); rhythmdb_write_unlock (db); g_print ("Test %d\n", testnum); testnum++; if (qfunc == rhythmdb_do_full_query) { rhythmdb_shutdown (db); g_object_unref (G_OBJECT (db)); qfunc = rhythmdb_do_full_query_async; goto begin; } /* * THE END */ rhythmdb_shutdown (db); g_object_unref (G_OBJECT (db)); GDK_THREADS_LEAVE (); exit (0); }