summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2015-03-10 14:27:14 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-03-14 18:15:08 -0700
commitb47d8d5992da626f01620745d2a60d048734c4df (patch)
treedbb68e22932e920d2f90d6d1ea2543328a8b8be1 /tests
parentf4f791ffbdd281af48aae610bf88ef5fd6ae2ac9 (diff)
downloadsubsurface-b47d8d5992da626f01620745d2a60d048734c4df.tar.gz
Some simple test for file parsing
With no V2 question shown - parsing fails when a V2 file is loaded - parsing succeeds when a V3 file is loaded - import of CSV file succeeds With V2 question shown - parsing succeeds when a V2 file is loaded Finally compare the output of reading in the various files with reference output included in the sources. My guess is that this test might be a bit fragile, but hey, it's a start. (reminder: the tests only get built when using cmake) Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/testparse.cpp57
-rw-r--r--tests/testparse.h16
2 files changed, 73 insertions, 0 deletions
diff --git a/tests/testparse.cpp b/tests/testparse.cpp
new file mode 100644
index 000000000..818827bca
--- /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, -1, // Dive #, date, time, duration, maxdepth, avgdepth
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1), 0);
+ 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