diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/testparse.cpp | 183 | ||||
-rw-r--r-- | tests/testparse.h | 22 |
2 files changed, 86 insertions, 119 deletions
diff --git a/tests/testparse.cpp b/tests/testparse.cpp index 75f4ced18..78e86d0e2 100644 --- a/tests/testparse.cpp +++ b/tests/testparse.cpp @@ -4,12 +4,43 @@ #include "core/divelist.h" #include <QTextStream> +/* We have to use a macro since QCOMPARE + * can only be called from a test method + * invoked by the QTest framework + */ +#define FILE_COMPARE(actual, expected) \ + QFile org(expected); \ + org.open(QFile::ReadOnly); \ + QFile out(actual); \ + out.open(QFile::ReadOnly); \ + QTextStream orgS(&org); \ + QTextStream outS(&out); \ + QStringList readin = orgS.readAll().split("\n"); \ + QStringList written = outS.readAll().split("\n"); \ + while(readin.size() && written.size()){ \ + QCOMPARE(written.takeFirst().trimmed(), \ + readin.takeFirst().trimmed()); \ + } \ + void TestParse::initTestCase() { /* we need to manually tell that the resource exists, because we are using it as library. */ Q_INIT_RESOURCE(subsurface); } +void TestParse::init() +{ + _sqlite3_handle = NULL; +} + +void TestParse::cleanup() +{ + clear_dive_file_data(); + + // Some test use sqlite3, ensure db is closed + sqlite3_close(_sqlite3_handle); +} + char *intdup(int index) { char tmpbuf[21]; @@ -19,7 +50,7 @@ char *intdup(int index) return strdup(tmpbuf); } -void TestParse::testParseCSV() +int TestParse::parseCSV() { // some basic file parsing tests // @@ -80,78 +111,63 @@ void TestParse::testParseCSV() params[pnr++] = intdup(-1); params[pnr++] = NULL; - QCOMPARE(parse_manual_file(SUBSURFACE_TEST_DATA "/dives/test41.csv", params, pnr - 1), 0); - fprintf(stderr, "number of dives %d \n", dive_table.nr); + return parse_manual_file(SUBSURFACE_TEST_DATA "/dives/test41.csv", params, pnr - 1); } -void TestParse::testParseDivingLog() +int TestParse::parseDivingLog() { // Parsing of DivingLog import from SQLite database - sqlite3 *handle; - struct dive_site *ds = alloc_or_get_dive_site(0xdeadbeef); ds->name = copy_string("Suomi - - Hälvälä"); - QCOMPARE(sqlite3_open(SUBSURFACE_TEST_DATA "/dives/TestDivingLog4.1.1.sql", &handle), 0); - QCOMPARE(parse_divinglog_buffer(handle, 0, 0, 0, &dive_table), 0); + int ret = sqlite3_open(SUBSURFACE_TEST_DATA "/dives/TestDivingLog4.1.1.sql", &_sqlite3_handle); + if ( ret == 0 ) + ret = parse_divinglog_buffer(_sqlite3_handle, 0, 0, 0, &dive_table); + else + fprintf(stderr, "Can't open sqlite3 db: " SUBSURFACE_TEST_DATA "/dives/TestDivingLog4.1.1.sql"); - sqlite3_close(handle); + return ret; } -void TestParse::testParseV2NoQuestion() +int TestParse::parseV2NoQuestion() { // parsing of a V2 file should work - QCOMPARE(parse_file(SUBSURFACE_TEST_DATA "/dives/test40.xml"), 0); + return parse_file(SUBSURFACE_TEST_DATA "/dives/test40.xml"); } -void TestParse::testParseV3() +int TestParse::parseV3() { // parsing of a V3 files should succeed - QCOMPARE(parse_file(SUBSURFACE_TEST_DATA "/dives/test42.xml"), 0); + return parse_file(SUBSURFACE_TEST_DATA "/dives/test42.xml"); } -void TestParse::testParseCompareOutput() +void TestParse::testParse() { - QCOMPARE(save_dives("./testout.ssrf"), 0); - QFile org(SUBSURFACE_TEST_DATA "/dives/test40-42.xml"); - org.open(QFile::ReadOnly); - QFile out("./testout.ssrf"); - out.open(QFile::ReadOnly); - QTextStream orgS(&org); - QTextStream outS(&out); - QStringList readin = orgS.readAll().split("\n"); - QStringList written = outS.readAll().split("\n"); - while(readin.size() && written.size()){ - QCOMPARE(written.takeFirst().trimmed(), readin.takeFirst().trimmed()); - } - clear_dive_file_data(); -} + QCOMPARE(parseCSV(), 0); + fprintf(stderr, "number of dives %d \n", dive_table.nr); + + QCOMPARE(parseDivingLog(), 0); + fprintf(stderr, "number of dives %d \n", dive_table.nr); -void TestParse::testParseDM4() -{ - sqlite3 *handle; + QCOMPARE(parseV2NoQuestion(), 0); + fprintf(stderr, "number of dives %d \n", dive_table.nr); - QCOMPARE(sqlite3_open(SUBSURFACE_TEST_DATA "/dives/TestDiveDM4.db", &handle), 0); - QCOMPARE(parse_dm4_buffer(handle, 0, 0, 0, &dive_table), 0); + QCOMPARE(parseV3(), 0); + fprintf(stderr, "number of dives %d \n", dive_table.nr); - sqlite3_close(handle); + QCOMPARE(save_dives("./testout.ssrf"), 0); + FILE_COMPARE("./testout.ssrf", + SUBSURFACE_TEST_DATA "/dives/test40-42.xml"); } -void TestParse::testParseCompareDM4Output() +void TestParse::testParseDM4() { + QCOMPARE(sqlite3_open(SUBSURFACE_TEST_DATA "/dives/TestDiveDM4.db", &_sqlite3_handle), 0); + QCOMPARE(parse_dm4_buffer(_sqlite3_handle, 0, 0, 0, &dive_table), 0); + QCOMPARE(save_dives("./testdm4out.ssrf"), 0); - QFile org(SUBSURFACE_TEST_DATA "/dives/TestDiveDM4.xml"); - org.open(QFile::ReadOnly); - QFile out("./testdm4out.ssrf"); - out.open(QFile::ReadOnly); - QTextStream orgS(&org); - QTextStream outS(&out); - QStringList readin = orgS.readAll().split("\n"); - QStringList written = outS.readAll().split("\n"); - while(readin.size() && written.size()){ - QCOMPARE(written.takeFirst().trimmed(), readin.takeFirst().trimmed()); - } - clear_dive_file_data(); + FILE_COMPARE("./testdm4out.ssrf", + SUBSURFACE_TEST_DATA "/dives/TestDiveDM4.xml"); } void TestParse::testParseHUDC() @@ -207,25 +223,10 @@ void TestParse::testParseHUDC() dive->when = 1255152761; dive->dc.when = 1255152761; } -} -void TestParse::testParseCompareHUDCOutput() -{ QCOMPARE(save_dives("./testhudcout.ssrf"), 0); - QFile org(SUBSURFACE_TEST_DATA "/dives/TestDiveSeabearHUDC.xml"); - org.open(QFile::ReadOnly); - QFile out("./testhudcout.ssrf"); - out.open(QFile::ReadOnly); - QTextStream orgS(&org); - QTextStream outS(&out); - QStringList readin = orgS.readAll().split("\n"); - QStringList written = outS.readAll().split("\n"); - - while(readin.size() && written.size()){ - QCOMPARE(written.takeFirst().trimmed(), readin.takeFirst().trimmed()); - } - - clear_dive_file_data(); + FILE_COMPARE("./testhudcout.ssrf", + SUBSURFACE_TEST_DATA "/dives/TestDiveSeabearHUDC.xml"); } void TestParse::testParseNewFormat() @@ -363,26 +364,11 @@ void TestParse::testParseNewFormat() } fprintf(stderr, "number of dives %d \n", dive_table.nr); -} - -void TestParse::testParseCompareNewFormatOutput() -{ QCOMPARE(save_dives("./testsbnewout.ssrf"), 0); - QFile org(SUBSURFACE_TEST_DATA "/dives/TestDiveSeabearNewFormat.xml"); - org.open(QFile::ReadOnly); - QFile out("./testsbnewout.ssrf"); - out.open(QFile::ReadOnly); - QTextStream orgS(&org); - QTextStream outS(&out); - QStringList readin = orgS.readAll().split("\n"); - QStringList written = outS.readAll().split("\n"); - -// currently the CSV parse fails -// while(readin.size() && written.size()){ -// QCOMPARE(written.takeFirst().trimmed(), readin.takeFirst().trimmed()); -// } - clear_dive_file_data(); + // Currently the CSV parse fails + FILE_COMPARE("./testsbnewout.ssrf", + SUBSURFACE_TEST_DATA "/dives/TestDiveSeabearNewFormat.xml"); } void TestParse::testParseDLD() @@ -394,29 +380,16 @@ void TestParse::testParseDLD() QVERIFY(try_to_open_zip(filename.toLatin1().data()) > 0); fprintf(stderr, "number of dives from DLD: %d \n", dive_table.nr); -} -void TestParse::testParseCompareDLDOutput() -{ + // Compare output /* * DC is not cleared from previous tests with the * clear_dive_file_data(), so we do have an additional DC nick * name field on the log. */ - QCOMPARE(save_dives("./testdldout.ssrf"), 0); - QFile org(SUBSURFACE_TEST_DATA "/dives/TestDiveDivelogsDE.xml"); - org.open(QFile::ReadOnly); - QFile out("./testdldout.ssrf"); - out.open(QFile::ReadOnly); - QTextStream orgS(&org); - QTextStream outS(&out); - QStringList readin = orgS.readAll().split("\n"); - QStringList written = outS.readAll().split("\n"); - while(readin.size() && written.size()){ - QCOMPARE(written.takeFirst().trimmed(), readin.takeFirst().trimmed()); - } - clear_dive_file_data(); + FILE_COMPARE("./testdldout.ssrf", + SUBSURFACE_TEST_DATA "/dives/TestDiveDivelogsDE.xml") } void TestParse::testParseMerge() @@ -427,18 +400,8 @@ void TestParse::testParseMerge() QCOMPARE(parse_file(SUBSURFACE_TEST_DATA "/dives/ostc.xml"), 0); QCOMPARE(parse_file(SUBSURFACE_TEST_DATA "/dives/vyper.xml"), 0); QCOMPARE(save_dives("./testmerge.ssrf"), 0); - QFile org(SUBSURFACE_TEST_DATA "/dives/mergedVyperOstc.xml"); - org.open(QFile::ReadOnly); - QFile out("./testmerge.ssrf"); - out.open(QFile::ReadOnly); - QTextStream orgS(&org); - QTextStream outS(&out); - QStringList readin = orgS.readAll().split("\n"); - QStringList written = outS.readAll().split("\n"); - while(readin.size() && written.size()){ - QCOMPARE(written.takeFirst().trimmed(), readin.takeFirst().trimmed()); - } - clear_dive_file_data(); + FILE_COMPARE("./testmerge.ssrf", + SUBSURFACE_TEST_DATA "/dives/mergedVyperOstc.xml"); } QTEST_GUILESS_MAIN(TestParse) diff --git a/tests/testparse.h b/tests/testparse.h index c11420794..a79ce5a38 100644 --- a/tests/testparse.h +++ b/tests/testparse.h @@ -2,25 +2,29 @@ #define TESTPARSE_H #include <QtTest> +#include <sqlite3.h> class TestParse : public QObject{ Q_OBJECT private slots: void initTestCase(); - void testParseCSV(); - void testParseDivingLog(); - void testParseV2NoQuestion(); - void testParseV3(); - void testParseCompareOutput(); + void init(); + void cleanup(); + + int parseCSV(); + int parseDivingLog(); + int parseV2NoQuestion(); + int parseV3(); + void testParse(); + void testParseDM4(); - void testParseCompareDM4Output(); void testParseHUDC(); - void testParseCompareHUDCOutput(); void testParseNewFormat(); - void testParseCompareNewFormatOutput(); void testParseDLD(); - void testParseCompareDLDOutput(); void testParseMerge(); + +private: + sqlite3 *_sqlite3_handle = NULL; }; #endif |