4 #include <glib/gstdio.h>
8 #include "gnc-module.h"
9 #include "gnc-xml-helper.h"
13 #include "sixtp-parsers.h"
14 #include "sixtp-utils.h"
16 #include "sixtp-dom-parsers.h"
18 #include "io-gncxml-gen.h"
20 #include "test-stuff.h"
22 #include "test-file-stuff.h"
29 node_and_commodity_equal(xmlNodePtr node,
const gnc_commodity *com)
33 while (g_strcmp0 ((
char*)node->name,
"text") == 0)
36 if (!check_dom_tree_version(node,
"2.0.0"))
38 return "version wrong. Not 2.0.0 or not there";
41 if (!node->name || g_strcmp0((
char*)node->name,
"gnc:commodity"))
43 return "Name of toplevel node is bad";
46 for (mark = node->xmlChildrenNode; mark; mark = mark->next)
48 if (g_strcmp0((
char*)mark->name,
"text") == 0)
51 else if (g_strcmp0((
char*)mark->name,
"cmdty:space") == 0)
53 if (!equals_node_val_vs_string(
56 return "namespaces differ";
59 else if (g_strcmp0((
char*)mark->name,
"cmdty:id") == 0)
61 if (!equals_node_val_vs_string(
64 return "mnemonic differ";
67 else if (g_strcmp0((
char*)mark->name,
"cmdty:name") == 0)
69 if (!equals_node_val_vs_string(
72 return "names differ";
75 else if (g_strcmp0((
char*)mark->name,
"cmdty:xcode") == 0)
77 if (!equals_node_val_vs_string(
80 return "exchange codes differ";
83 else if (g_strcmp0((
char*)mark->name,
"cmdty:fraction") == 0)
88 txt = dom_tree_to_text(mark);
92 return "couldn't get fraction string";
95 else if (!string_to_gint64(txt, &type))
98 return "couldn't convert fraction string to int";
103 return "fractions differ";
110 else if (g_strcmp0((
char*)mark->name,
"cmdty:slots") == 0)
112 if (!equals_node_val_vs_kvp_frame(mark,
114 return "slots differ";
117 else if (g_strcmp0((
char*)mark->name,
"cmdty:get_quotes") == 0 ||
118 g_strcmp0((
char*)mark->name,
"cmdty:quote_source") == 0 ||
119 g_strcmp0((
char*)mark->name,
"cmdty:quote_tz") == 0)
125 return "unknown node";
140 test_add_commodity(
const char *tag, gpointer globaldata, gpointer data)
145 "gnc_commodity_sixtp_parser_create",
146 __FILE__, __LINE__,
"%d", gdata->value );
154 test_generation(
void)
157 for (i = 0; i < 20; i++)
160 xmlNodePtr test_node;
165 ran_com = get_random_commodity(book);
167 test_node = gnc_commodity_dom_tree_create(ran_com);
170 failure_args(
"commodity_xml", __FILE__, __LINE__,
171 "gnc_commodity_dom_tree_create returned NULL");
176 if ((compare_msg = node_and_commodity_equal(test_node, ran_com)) !=
179 failure_args(
"commodity_xml", __FILE__, __LINE__,
180 "node and commodity were not equal: %s", compare_msg);
181 xmlElemDump(stdout, NULL, test_node);
182 xmlFreeNode(test_node);
188 success_args(
"commodity_xml", __FILE__, __LINE__,
"%d", i);
191 filename1 = g_strdup_printf(
"test_file_XXXXXX");
193 fd = g_mkstemp(filename1);
195 write_dom_node_to_file(test_node, fd);
206 parser = gnc_commodity_sixtp_parser_create();
208 if (!gnc_xml_parse_file(parser, filename1, test_add_commodity,
209 (gpointer)&data, book))
211 failure_args(
"gnc_xml_parse_file returned FALSE",
212 __FILE__, __LINE__,
"%d", i);
222 xmlFreeNode(test_node);
227 test_real_commodity(
const char *tag, gpointer globaldata, gpointer data)
229 const char *msg = node_and_commodity_equal((xmlNodePtr)globaldata,
231 do_test_args(msg == NULL,
"test_real_commodity",
232 __FILE__, __LINE__, msg);
238 main(
int argc,
char **argv)
240 g_setenv (
"GNC_UNINSTALLED",
"1", TRUE);
247 test_files_in_dir(argc, argv, test_real_commodity,
248 gnc_commodity_sixtp_parser_create(),
249 "gnc:commodity", book);
256 print_test_results();
const char * gnc_commodity_get_cusip(const gnc_commodity *cm)
int gnc_commodity_get_fraction(const gnc_commodity *cm)
const char * gnc_commodity_get_mnemonic(const gnc_commodity *cm)
const char * gnc_commodity_get_namespace_compat(const gnc_commodity *cm)
QofBook * qof_book_new(void)
Account handling public routines.
void gnc_engine_init(int argc, char **argv)
const char * gnc_commodity_get_fullname(const gnc_commodity *cm)
#define gnc_commodity_get_kvp_frame(cm)
void gnc_commodity_destroy(gnc_commodity *cm)
gboolean gnc_commodity_equiv(const gnc_commodity *a, const gnc_commodity *b)