GnuCash  2.6.99
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
test-print-queries.c
1 
2 #include "config.h"
3 #include <glib.h>
4 #include <libguile.h>
5 #include "guile-mappings.h"
6 
7 #include "engine-helpers-guile.h"
8 #include "gnc-module.h"
9 #include "test-engine-stuff.h"
10 #include "test-stuff.h"
11 #include "Query.h"
12 #include "TransLog.h"
13 
14 
15 static void
16 test_query (Query *q, SCM val2str)
17 {
18  SCM scm_q;
19  SCM str_q;
20  SCM args = SCM_EOL;
21 
22  scm_q = gnc_query2scm (q);
23  args = scm_cons (scm_q, SCM_EOL);
24  str_q = scm_apply (val2str, args, SCM_EOL);
25 
26  args = scm_cons (scm_from_utf8_string ("'"), scm_cons (str_q, SCM_EOL));
27  str_q = scm_string_append (args);
28 
29  scm_display (str_q, SCM_UNDEFINED);
30  scm_newline (SCM_UNDEFINED);
31  scm_newline (SCM_UNDEFINED);
32 }
33 
34 static void
35 run_tests (int count)
36 {
37  Query *q;
38  SCM val2str;
39  int i;
40 
41  val2str = scm_c_eval_string ("gnc:value->string");
42  g_return_if_fail (scm_is_procedure (val2str));
43 
44  for (i = 0; i < count; i++)
45  {
46  q = get_random_query ();
47  test_query (q, val2str);
49  }
50  success ("");
51 }
52 
53 static void
54 main_helper (void *closure, int argc, char **argv)
55 {
56  int count = 50;
57 
58  gnc_module_load("gnucash/engine", 0);
59  gnc_module_load("gnucash/app-utils", 0);
60 
61  if (argc > 1)
62  count = atoi (argv[1]);
63 
64  if (count < 0)
65  count = 0;
66 
67  xaccLogDisable ();
68 
69  run_tests (count);
70 
71  print_test_results ();
72 
73  exit (get_rv ());
74 }
75 
76 int
77 main (int argc, char **argv)
78 {
79  scm_boot_guile (argc, argv, main_helper, NULL);
80  return 0;
81 }
void xaccLogDisable(void)
Definition: TransLog.c:93
void qof_query_destroy(QofQuery *q)
API for the transaction logger.