mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +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
|
devicedetails.cpp
|
||||||
configuredivecomputer.cpp
|
configuredivecomputer.cpp
|
||||||
configuredivecomputerthreads.cpp
|
configuredivecomputerthreads.cpp
|
||||||
|
divesitehelpers.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
#the interface, in C++
|
#the interface, in C++
|
||||||
|
@ -265,6 +266,9 @@ MACRO(test NAME FILE)
|
||||||
ENDMACRO()
|
ENDMACRO()
|
||||||
|
|
||||||
ENABLE_TESTING()
|
ENABLE_TESTING()
|
||||||
|
ADD_DEFINITIONS(-DSUBSURFACE_SOURCE="${CMAKE_SOURCE_DIR}")
|
||||||
|
ADD_DEFINITIONS(-g)
|
||||||
test(TestUnitConversion testunitconversion.cpp)
|
test(TestUnitConversion testunitconversion.cpp)
|
||||||
test(TestProfile testprofile.cpp)
|
test(TestProfile testprofile.cpp)
|
||||||
test(TestGpsCoords testgpscoords.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