From 598531f7e62200a76d23161e1aab1599fa484c8a Mon Sep 17 00:00:00 2001 From: Geert Janssens Date: Tue, 22 Sep 2015 19:27:12 +0200 Subject: [PATCH] csv-imp - add basic test for gnc_csv_parse --- .../csv-imp/test/utest-gnc-csv-model.c | 62 ++++++++++++++++++- 1 file changed, 59 insertions(+), 3 deletions(-) diff --git a/src/import-export/csv-imp/test/utest-gnc-csv-model.c b/src/import-export/csv-imp/test/utest-gnc-csv-model.c index 396a8dcc58..ea8f20fade 100644 --- a/src/import-export/csv-imp/test/utest-gnc-csv-model.c +++ b/src/import-export/csv-imp/test/utest-gnc-csv-model.c @@ -46,6 +46,28 @@ teardown( Fixture *fixture, gconstpointer pData ) static const gchar *suitename = "/import-export/csv-imp/gnc-csv-model"; void test_suite_gnc_csv_model ( void ); +static char* get_filepath(const char* filename, gboolean test_existence) +{ + char *result; + + const char *srcdir = g_getenv("SRCDIR"); + if (!srcdir) + { + g_test_message("No env variable SRCDIR exists, assuming \".\"\n"); + srcdir = "."; + } + + result = g_strdup_printf("%s/%s", srcdir, filename); + + g_test_message("Using file path %s\n", result); + + // Test whether the file really exists + if (test_existence) + g_assert(g_file_test(result, G_FILE_TEST_EXISTS)); + + return result; +} + /* parse_date_with_year time64 parse_date_with_year (const char* date_str, int format)// Local: 1:0:0 */ @@ -91,10 +113,44 @@ test_gnc_csv_load_file (Fixture *fixture, gconstpointer pData) /* gnc_csv_parse int gnc_csv_parse (GncCsvParseData* parse_data, gboolean guessColTypes, GError** error)// C: 13 in 1 Local: 0:0:0 */ -/* static void +static void test_gnc_csv_parse (Fixture *fixture, gconstpointer pData) { -}*/ + + char *file1 = get_filepath ("notexist.csv", FALSE); + char *file2 = get_filepath ("sample1.csv", TRUE); + GError *the_error = NULL; + int resultcode = 0; + + GncCsvParseData* parse_data = gnc_csv_new_parse_data (); + + /* Test if object creation worked */ + g_assert (parse_data != NULL); + + /* Test loading of a non-existing file */ + resultcode = gnc_csv_load_file (parse_data, file1, + &the_error); + g_assert ((the_error->domain == GNC_CSV_IMP_ERROR) && + (the_error->code == GNC_CSV_IMP_ERROR_OPEN)); + + /* Test loading of a valid csv file */ + resultcode = gnc_csv_load_file (parse_data, file2, + &the_error); + g_assert (resultcode == 0); + + /* Test basic parsing of the loaded file + * A few fields are sampled in the parsed data. */ + resultcode = gnc_csv_parse (parse_data, TRUE, &the_error); + g_assert (g_strcmp0 ((char*)((GPtrArray*)(parse_data->orig_lines->pdata[0]))->pdata[0], + "Date") == 0); + g_assert (g_strcmp0 ((char*)((GPtrArray*)(parse_data->orig_lines->pdata[1]))->pdata[6], + "1,100.00") == 0); + + /* Clean up */ + g_free(file1); + g_free(file2); + gnc_csv_parse_data_free (parse_data); +} /* trans_property_free static void trans_property_free (TransProperty* prop)// Local: 2:0:0 */ @@ -156,7 +212,7 @@ test_suite_gnc_csv_model (void) // GNC_TEST_ADD (suitename, "gnc csv parse data free", Fixture, NULL, setup, test_gnc_csv_parse_data_free, teardown); // GNC_TEST_ADD (suitename, "gnc csv convert encoding", Fixture, NULL, setup, test_gnc_csv_convert_encoding, teardown); // GNC_TEST_ADD (suitename, "gnc csv load file", Fixture, NULL, setup, test_gnc_csv_load_file, teardown); -// GNC_TEST_ADD (suitename, "gnc csv parse", Fixture, NULL, setup, test_gnc_csv_parse, teardown); +GNC_TEST_ADD (suitename, "gnc csv parse", Fixture, NULL, setup, test_gnc_csv_parse, teardown); // GNC_TEST_ADD (suitename, "trans property free", Fixture, NULL, setup, test_trans_property_free, teardown); // GNC_TEST_ADD (suitename, "trans property set", Fixture, NULL, setup, test_trans_property_set, teardown); // GNC_TEST_ADD (suitename, "trans property list free", Fixture, NULL, setup, test_trans_property_list_free, teardown);