diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/testgpscoords.cpp | 23 | ||||
-rw-r--r-- | tests/testgpscoords.h | 4 | ||||
-rw-r--r-- | tests/testparse.cpp | 57 | ||||
-rw-r--r-- | tests/testparse.h | 16 |
4 files changed, 100 insertions, 0 deletions
diff --git a/tests/testgpscoords.cpp b/tests/testgpscoords.cpp index a38dcc807..c5a4d22a4 100644 --- a/tests/testgpscoords.cpp +++ b/tests/testgpscoords.cpp @@ -77,6 +77,29 @@ void TestGpsCoords::testSpaceDecimalParse() coord2double(52.83), coord2double(1.61)); } +void TestGpsCoords::testXmlFormatParse() +{ + testParseOK("46.473881 6.784696", + coord2double(46.473881), coord2double(6.784696)); +} + +void TestGpsCoords::testNegativeXmlFormatParse() +{ + testParseOK("46.473881 -6.784696", + coord2double(46.473881), -coord2double(6.784696)); +} + +void TestGpsCoords::testNoUnitParse() +{ + testParseOK("48 51.491n 2 17.677e", + coord2double(48, 51.491), coord2double(2, 17.677)); +} + +void TestGpsCoords::testPrefixNoUnitParse() +{ + testParseOK("n48 51.491 w2 17.677", + coord2double(48, 51.491), -coord2double(2, 17.677)); +} void TestGpsCoords::testParseOK(const QString &txt, double expectedLat, double expectedLon) diff --git a/tests/testgpscoords.h b/tests/testgpscoords.h index 5add3da93..784bc302e 100644 --- a/tests/testgpscoords.h +++ b/tests/testgpscoords.h @@ -18,6 +18,10 @@ private slots: void testDecimalParse(); void testSpaceDecimalParse(); void testDecimalInversedParse(); + void testXmlFormatParse(); + void testNoUnitParse(); + void testNegativeXmlFormatParse(); + void testPrefixNoUnitParse(); private: static void testParseOK(const QString &txt, double expectedLat, diff --git a/tests/testparse.cpp b/tests/testparse.cpp new file mode 100644 index 000000000..e5abbaa6a --- /dev/null +++ b/tests/testparse.cpp @@ -0,0 +1,57 @@ +#include "testparse.h" +#include "dive.h" +#include <QTextStream> + +void TestParse::testParseCSV() +{ + // some basic file parsing tests + // + // even with the V2 question not shown, CSV import should work + v2_question_shown = false; + verbose = 1; + QCOMPARE(parse_manual_file(SUBSURFACE_SOURCE "/dives/test41.csv", + 0, // tab separator + 0, // metric units + 1, // mm/dd/yyyy + 2, // min:sec + 0, 1, 2, 3, -1, -1, 4, 5, // Dive #, date, time, duration, maxdepth, avgdepth + -1, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1), 0); // buddy, suit + fprintf(stderr, "number of dives %d \n", dive_table.nr); +} + +void TestParse::testParseV2NoQuestion() +{ + // but parsing of a V2 file should fail + v2_question_shown = false; + QCOMPARE(parse_file(SUBSURFACE_SOURCE "/dives/test40.xml"), -1); +} + +void TestParse::testParseV3() +{ + // while parsing of a V3 files should succeed + v2_question_shown = false; + QCOMPARE(parse_file(SUBSURFACE_SOURCE "/dives/test42.xml"), 0); +} + +void TestParse::testParseV2YesQuestion() +{ + // once we claim to have shown the V2 question, parsing the V2 file should work as well + v2_question_shown = true; + QCOMPARE(parse_file(SUBSURFACE_SOURCE "/dives/test40.xml"), 0); +} + +void TestParse::testParseCompareOutput() +{ + QCOMPARE(save_dives("./testout.ssrf"), 0); + QFile org(SUBSURFACE_SOURCE "/dives/test40-42.xml"); + org.open(QFile::ReadOnly); + QFile out("./testout.ssrf"); + out.open(QFile::ReadOnly); + QTextStream orgS(&org); + QTextStream outS(&out); + QString readin = orgS.readAll(); + QString written = outS.readAll(); + QCOMPARE(readin, written); +} + +QTEST_MAIN(TestParse) diff --git a/tests/testparse.h b/tests/testparse.h new file mode 100644 index 000000000..df0afa9f5 --- /dev/null +++ b/tests/testparse.h @@ -0,0 +1,16 @@ +#ifndef TESTPARSE_H +#define TESTPARSE_H + +#include <QtTest> + +class TestParse : public QObject{ + Q_OBJECT +private slots: + void testParseCSV(); + void testParseV2NoQuestion(); + void testParseV2YesQuestion(); + void testParseV3(); + void testParseCompareOutput(); +}; + +#endif |