From b47d8d5992da626f01620745d2a60d048734c4df Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Tue, 10 Mar 2015 14:27:14 -0700 Subject: 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 --- tests/testparse.cpp | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 tests/testparse.cpp (limited to 'tests/testparse.cpp') 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 + +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) -- cgit v1.2.3-70-g09d2