static void test_dom_tree_to_gnc_numeric(void) { int i; for (i = 0; i < 20; i++) { gchar *message = NULL; message = test_gnc_nums_internal(get_random_gnc_numeric(GNC_DENOM_AUTO)); do_test_args(message == NULL, "dom_tree_to_gnc_numeric", __FILE__, __LINE__, message); } { gchar *message = NULL; message = test_gnc_nums_internal (gnc_numeric_create(18768786810LL, 100000)); do_test_args(message == NULL, "gnc_num 18768786810/100000", __FILE__, __LINE__, message); } }
static void test_num_print_info (gnc_numeric n, GNCPrintAmountInfo print_info, int line) { gnc_numeric n_parsed = gnc_numeric_zero(); const char *s; gboolean ok, print_ok; auto msg = "[PrintAmountInternal()] Bad numeric from rounding: GNC_ERROR_OVERFLOW."; auto log_domain = "gnc.gui"; auto loglevel = static_cast<GLogLevelFlags>(G_LOG_LEVEL_WARNING); auto check = test_error_struct_new (log_domain, loglevel, msg); /* Throws overflows during rounding step in xaccPrintAmount when the "fraction" is high. See bug 665707. */ auto hdlr = g_log_set_handler (log_domain, loglevel, (GLogFunc)test_checked_handler, &check); s = xaccPrintAmount (n, print_info); print_ok = (s && s[0] != '\0'); if (!print_ok) return; ok = xaccParseAmount (s, print_info.monetary, &n_parsed, NULL); g_log_remove_handler (log_domain, hdlr); do_test_args (ok, "parsing failure", __FILE__, __LINE__, "num: %s, string %s (line %d)", gnc_numeric_to_string (n), s, line); ok = gnc_numeric_equal (n, n_parsed); do_test_args (ok, "not equal", __FILE__, __LINE__, "start: %s, string %s, finish: %s (line %d)", gnc_numeric_to_string (n), s, gnc_numeric_to_string (n_parsed), line); test_error_struct_free (check); }
static gboolean test_add_account (const char* tag, gpointer globaldata, gpointer data) { Account* account = static_cast<decltype (account)> (data); act_data* gdata = (act_data*)globaldata; gnc_commodity* com; gnc_commodity* new_com; gnc_commodity_table* t; com = xaccAccountGetCommodity (account); t = gnc_commodity_table_get_table (sixbook); new_com = gnc_commodity_table_lookup (t, gnc_commodity_get_namespace (com), gnc_commodity_get_mnemonic (com)); if (new_com) { xaccAccountSetCommodity (account, new_com); } do_test_args (xaccAccountEqual ((Account*)account, (Account*) (gdata->act), TRUE), "gnc_account_sixtp_parser_create", __FILE__, __LINE__, "%d", gdata->value); return TRUE; }
static void test_load_file(const char *filename) { QofSession *session; QofBook *book; Account *root; gboolean ignore_lock; gchar *logdomain = "GConf"; guint loglevel = G_LOG_LEVEL_WARNING; TestErrorStruct check = { loglevel, logdomain, NULL }; g_log_set_handler (logdomain, loglevel, (GLogFunc)test_checked_handler, &check); session = qof_session_new(); remove_locks(filename); ignore_lock = (safe_strcmp(g_getenv("SRCDIR"), ".") != 0); qof_session_begin(session, filename, ignore_lock, FALSE, TRUE); qof_session_load(session, NULL); book = qof_session_get_book (session); root = gnc_book_get_root_account(book); do_test (gnc_account_get_book (root) == book, "book and root account don't match"); do_test_args(qof_session_get_error(session) == ERR_BACKEND_NO_ERR, "session load xml2", __FILE__, __LINE__, "qof error=%d for file [%s]", qof_session_get_error(session), filename); /* Uncomment the line below to generate corrected files */ qof_session_save( session, NULL ); qof_session_end(session); }
static gboolean test_real_commodity (const char* tag, gpointer globaldata, gpointer data) { const char* msg = node_and_commodity_equal ((xmlNodePtr)globaldata, (gnc_commodity*)data); do_test_args (msg == NULL, "test_real_commodity", __FILE__, __LINE__, msg); gnc_commodity_destroy ((gnc_commodity*)data); return TRUE; }
static gboolean test_real_transaction (const char* tag, gpointer global_data, gpointer data) { const char* msg; msg = node_and_transaction_equal ((xmlNodePtr)global_data, (Transaction*)data); do_test_args (msg == NULL, "test_real_transaction", __FILE__, __LINE__, msg); really_get_rid_of_transaction ((Transaction*)data); return TRUE; }
static void test_bad_string (void) { const char* badstr = "foo\abar"; const char* sanitized = "foo?bar"; xmlNodePtr test_node = text_to_dom_tree ("test-string", badstr); char* backout = dom_tree_to_text (test_node); do_test_args (g_strcmp0 (backout, sanitized) == 0, "string sanitizing", __FILE__, __LINE__, "with string %s", badstr); }
static gboolean test_add_pricedb (const char* tag, gpointer globaldata, gpointer data) { sixtp_gdv2* gdata = static_cast<decltype (gdata)> (globaldata); GNCPriceDB* db1 = static_cast<decltype (db1)> (data); GNCPriceDB* db2 = gnc_pricedb_get_db (gdata->book); do_test_args (gnc_pricedb_equal (db1, db2), "gnc_pricedb_sixtp_parser_create", __FILE__, __LINE__, "%d", iter); return TRUE; }
static gboolean test_add_commodity (const char* tag, gpointer globaldata, gpointer data) { com_data* gdata = (com_data*)globaldata; do_test_args (gnc_commodity_equiv ((gnc_commodity*)data, gdata->com), "gnc_commodity_sixtp_parser_create", __FILE__, __LINE__, "%d", gdata->value); gnc_commodity_destroy ((gnc_commodity*)data); return TRUE; }
static void test_num (gnc_numeric n) { GNCPrintAmountInfo print_info; int fraction; int i; print_info.commodity = NULL; print_info.min_decimal_places = 0; print_info.use_locale = 1; print_info.use_symbol = 0; for (i = 1, fraction = 10; i < 9; i++, fraction *= 10) { gnc_numeric n1; print_info.use_separators = 1; print_info.monetary = 1; print_info.max_decimal_places = i; print_info.force_fit = 0; print_info.round = 0; n1 = gnc_numeric_convert (n, fraction, GNC_HOW_RND_ROUND_HALF_UP); if (gnc_numeric_check(n1)) { do_test_args((gnc_numeric_check(n1) == GNC_ERROR_OVERFLOW), "BAD NUMERIC CONVERSION", __FILE__, __LINE__, "num: %s, fraction: %d", gnc_numeric_to_string(n), fraction); continue; } test_num_print_info (n1, print_info, __LINE__); print_info.monetary = 0; test_num_print_info (n1, print_info, __LINE__); print_info.use_separators = 0; test_num_print_info (n1, print_info, __LINE__); print_info.round = 1; test_num_print_info (n1, print_info, __LINE__); print_info.round = 0; print_info.force_fit = 1; test_num_print_info (n1, print_info, __LINE__); print_info.round = 1; test_num_print_info (n1, print_info, __LINE__); } }
static void test_num_print_info (gnc_numeric n, GNCPrintAmountInfo print_info, int line) { gnc_numeric n_parsed = gnc_numeric_zero(); const char *s; gboolean ok, print_ok; s = xaccPrintAmount (n, print_info); print_ok = (s && s[0] != '\0'); if (!print_ok) return; ok = xaccParseAmount (s, print_info.monetary, &n_parsed, NULL); do_test_args (ok, "parsing failure", __FILE__, __LINE__, "num: %s, string %s (line %d)", gnc_numeric_to_string (n), s, line); ok = gnc_numeric_equal (n, n_parsed); do_test_args (ok, "not equal", __FILE__, __LINE__, "start: %s, string %s, finish: %s (line %d)", gnc_numeric_to_string (n), s, gnc_numeric_to_string (n_parsed), line); }
static void test_string_converters (void) { int i; for (i = 0; test_strings[i]; ++i) { const char* mark = test_strings[i]; xmlNodePtr test_node = text_to_dom_tree ("test-string", mark); char* backout = dom_tree_to_text (test_node); do_test_args ( g_strcmp0 (backout, mark) == 0, "string converting", __FILE__, __LINE__, "with string %s", mark); } }
static gboolean test_real_account (const char* tag, gpointer global_data, gpointer data) { char* msg; Account* act = (Account*)data; if (!gnc_account_get_parent (act)) { gnc_account_append_child (gnc_book_get_root_account (sixbook), act); } msg = node_and_account_equal ((xmlNodePtr)global_data, act); do_test_args (msg == NULL, "test_real_account", __FILE__, __LINE__, msg); g_free (msg); return TRUE; }
int main(int argc, char **argv) { int i; qof_init(); for (i = 0; strs[i].input != NULL; i++) { char *daout; char *dain; char *wantout; if (strs[i].prefix_home == 1) { dain = g_build_filename(g_get_home_dir(), strs[i].input, (gchar *)NULL); wantout = g_build_filename(g_get_home_dir(), strs[i].output, (gchar *)NULL); } else if (strs[i].prefix_home == 2) { dain = g_strdup(strs[i].input); wantout = g_build_filename(g_get_home_dir(), strs[i].output, (gchar *)NULL); } else { dain = g_strdup(strs[i].input); wantout = g_strdup(strs[i].output); } daout = gnc_resolve_file_path(dain); do_test_args(g_strcmp0(daout, wantout) == 0, "gnc_resolve_file_path", __FILE__, __LINE__, "%s (%s) vs %s", daout, dain, wantout); g_free(dain); g_free(wantout); g_free(daout); } print_test_results(); return get_rv(); }
static gboolean test_add_transaction (const char* tag, gpointer globaldata, gpointer data) { Transaction* trans = static_cast<decltype (trans)> (data); tran_data* gdata = static_cast<decltype (gdata)> (globaldata); gboolean retval = TRUE; xaccTransBeginEdit (trans); xaccTransSetCurrency (trans, gdata->com); xaccTransCommitEdit (trans); if (!do_test_args (xaccTransEqual (gdata->trn, trans, TRUE, TRUE, TRUE, FALSE), "gnc_transaction_sixtp_parser_create", __FILE__, __LINE__, "%d", gdata->value)) retval = FALSE; gdata->new_trn = trans; return retval; }
int main(int argc, char **argv) { int i; qof_init(); /* TEST: gnc_uri_get_components */ for (i = 0; strs[i].uri != NULL; i++) { gchar *tprotocol = NULL; gchar *thostname = NULL; gchar *tusername = NULL; gchar *tpassword = NULL; gchar *tpath = NULL; gint32 tport = 0; gboolean testresult; gnc_uri_get_components( strs[i].uri, &tprotocol, &thostname, &tport, &tusername, &tpassword, &tpath ); testresult = ( safe_strcmp ( tprotocol, strs[i].protocol ) == 0 ) & ( safe_strcmp ( thostname, strs[i].hostname ) == 0 ) & ( safe_strcmp ( tusername, strs[i].username ) == 0 ) & ( safe_strcmp ( tpassword, strs[i].password ) == 0 ) & ( safe_strcmp ( tpath, strs[i].path ) == 0 ) & ( tport == strs[i].port ); do_test_args(testresult, "gnc_uri_get_components", __FILE__, __LINE__, "\n %s:\n" " Expected: %s, %s, %s, %s, %s, %d\n" " Got : %s, %s, %s, %s, %s, %d\n", strs[i].uri, strs[i].protocol, strs[i].hostname, strs[i].username, strs[i].password, strs[i].path, strs[i].port, tprotocol, thostname, tusername, tpassword, tpath, tport); g_free(tprotocol); g_free(thostname); g_free(tusername); g_free(tpassword); g_free(tpath); } /* TEST: gnc_uri_get_protocol */ for (i = 0; strs[i].uri != NULL; i++) { gchar *tprotocol = NULL; gboolean testresult; tprotocol = gnc_uri_get_protocol( strs[i].uri ); testresult = ( safe_strcmp ( tprotocol, strs[i].protocol ) == 0 ); do_test_args(testresult, "gnc_uri_get_protocol", __FILE__, __LINE__, "\n %s:\n" " Expected: %s\n" " Got : %s\n", strs[i].uri, strs[i].protocol, tprotocol ); g_free(tprotocol); } /* TEST: gnc_uri_get_path */ for (i = 0; strs[i].uri != NULL; i++) { gchar *tpath = NULL; gboolean testresult; tpath = gnc_uri_get_path( strs[i].uri ); testresult = ( safe_strcmp ( tpath, strs[i].path ) == 0 ); do_test_args(testresult, "gnc_uri_get_path", __FILE__, __LINE__, "\n %s:\n" " Expected: %s\n" " Got : %s\n", strs[i].uri, strs[i].path, tpath ); g_free(tpath); } /* TEST: gnc_uri_create_uri */ for (i = 0; strs[i].uri != NULL; i++) { gchar *turi = NULL; gboolean testresult; turi = gnc_uri_create_uri( strs[i].protocol, strs[i].hostname, strs[i].port, strs[i].username, strs[i].password, strs[i].path ); testresult = ( safe_strcmp ( turi, strs[i].created_uri ) == 0 ); do_test_args(testresult, "gnc_uri_create_uri", __FILE__, __LINE__, "\n %s, %s, %s, %s, %s, %d:\n" " Expected: %s\n" " Got : %s\n", strs[i].protocol, strs[i].hostname, strs[i].username, strs[i].password, strs[i].path, strs[i].port, strs[i].created_uri, turi); g_free(turi); } /* TEST: gnc_uri_normalize_uri */ for (i = 0; strs[i].uri != NULL; i++) { gchar *turi = NULL; gboolean testresult; turi = gnc_uri_normalize_uri( strs[i].uri, strs[i].want_password ); testresult = ( safe_strcmp ( turi, strs[i].normalized_uri ) == 0 ); do_test_args(testresult, "gnc_uri_normalize_uri", __FILE__, __LINE__, "\n %s:\n" " Expected: %s\n" " Got : %s\n", strs[i].uri, strs[i].normalized_uri, turi ); g_free(turi); } /* TEST: gnc_uri_is_file_protocol */ for (i = 0; strs[i].uri != NULL; i++) { gboolean tis_file_protocol; gboolean testresult; tis_file_protocol = gnc_uri_is_file_protocol( strs[i].protocol ); testresult = ( tis_file_protocol == strs[i].is_file_protocol ); do_test_args(testresult, "gnc_uri_is_file_protocol", __FILE__, __LINE__, "\n %s:\n" " Expected: %s\n" " Got : %s\n", strs[i].uri, strs[i].is_file_protocol, tis_file_protocol ); } /* TEST: gnc_uri_is_file_uri */ for (i = 0; strs[i].uri != NULL; i++) { gboolean tis_file_uri; gboolean testresult; tis_file_uri = gnc_uri_is_file_uri( strs[i].uri ); testresult = ( tis_file_uri == strs[i].is_file_protocol ); do_test_args(testresult, "gnc_uri_is_file_uri", __FILE__, __LINE__, "\n %s:\n" " Expected: %s\n" " Got : %s\n", strs[i].uri, strs[i].is_file_protocol, tis_file_uri ); } print_test_results(); return get_rv(); }