summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/testgpscoords.cpp23
-rw-r--r--tests/testgpscoords.h4
-rw-r--r--tests/testparse.cpp57
-rw-r--r--tests/testparse.h16
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