mirror of
https://github.com/subsurface/subsurface.git
synced 2025-01-31 20:13:23 +00:00
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>
This commit is contained in:
parent
f4f791ffbd
commit
b47d8d5992
6 changed files with 7610 additions and 0 deletions
|
@ -152,6 +152,7 @@ SET(SUBSURFACE_CORE_LIB_SRCS
|
|||
devicedetails.cpp
|
||||
configuredivecomputer.cpp
|
||||
configuredivecomputerthreads.cpp
|
||||
divesitehelpers.cpp
|
||||
)
|
||||
|
||||
#the interface, in C++
|
||||
|
@ -265,6 +266,9 @@ MACRO(test NAME FILE)
|
|||
ENDMACRO()
|
||||
|
||||
ENABLE_TESTING()
|
||||
ADD_DEFINITIONS(-DSUBSURFACE_SOURCE="${CMAKE_SOURCE_DIR}")
|
||||
ADD_DEFINITIONS(-g)
|
||||
test(TestUnitConversion testunitconversion.cpp)
|
||||
test(TestProfile testprofile.cpp)
|
||||
test(TestGpsCoords testgpscoords.cpp)
|
||||
test(TestParse testparse.cpp)
|
||||
|
|
5022
dives/test40-42.xml
Normal file
5022
dives/test40-42.xml
Normal file
File diff suppressed because it is too large
Load diff
6
dives/test41.csv
Normal file
6
dives/test41.csv
Normal file
|
@ -0,0 +1,6 @@
|
|||
#Nr date time duration maxdepth avgdepth
|
||||
1 10/1/13 10:34 45:00 18 9
|
||||
2 10/1/13 12:13 41:00 16.2 8.2
|
||||
3 10/1/14 10:02 48:00 13.3 9.1
|
||||
4 10/1/14 14:19 34:00 24.9 12.1
|
||||
|
|
2505
dives/test42.xml
Normal file
2505
dives/test42.xml
Normal file
File diff suppressed because it is too large
Load diff
57
tests/testparse.cpp
Normal file
57
tests/testparse.cpp
Normal file
|
@ -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)
|
16
tests/testparse.h
Normal file
16
tests/testparse.h
Normal file
|
@ -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
|
Loading…
Add table
Reference in a new issue