diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2015-03-10 14:27:14 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-03-14 18:15:08 -0700 |
commit | b47d8d5992da626f01620745d2a60d048734c4df (patch) | |
tree | dbb68e22932e920d2f90d6d1ea2543328a8b8be1 /tests | |
parent | f4f791ffbdd281af48aae610bf88ef5fd6ae2ac9 (diff) | |
download | subsurface-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.cpp | 57 | ||||
-rw-r--r-- | tests/testparse.h | 16 |
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 |