diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2017-02-21 17:23:19 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2017-02-21 18:22:56 -0800 |
commit | 3fef6ec31da786bde7f249dd9c07121944ddd9ee (patch) | |
tree | dc1d579f1072a6bf351935165cbafae20099ab7c /tests | |
parent | c4976b505a2c4a1fe62610b3c875eac56957c924 (diff) | |
download | subsurface-3fef6ec31da786bde7f249dd9c07121944ddd9ee.tar.gz |
Simple test case for merging dives
We do some merging in a couple of the other tests as well, but the idea
is to have specific test cases that exercise our merge logic.
This one starts simple. Merge a dive with some valid info with a second
one that has less data filled. And then try it in both possible orders.
It shows a few potential problems.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/CMakeLists.txt | 2 | ||||
-rw-r--r-- | tests/testmerge.cpp | 61 | ||||
-rw-r--r-- | tests/testmerge.h | 14 |
3 files changed, 77 insertions, 0 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 5106588d0..1aab4ab1c 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -21,6 +21,7 @@ TEST(TestRenumber testrenumber.cpp) TEST(TestGitStorage testgitstorage.cpp) TEST(TestPreferences testpreferences.cpp) TEST(TestPicture testpicture.cpp) +TEST(TestMerge testmerge.cpp) add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} @@ -35,4 +36,5 @@ add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} TestPreferences TestRenumber TestPicture + TestMerge ) diff --git a/tests/testmerge.cpp b/tests/testmerge.cpp new file mode 100644 index 000000000..05c88a88e --- /dev/null +++ b/tests/testmerge.cpp @@ -0,0 +1,61 @@ +#include "testmerge.h" +#include "core/dive.h" +#include "core/file.h" +#include "core/divelist.h" +#include <QTextStream> + +void TestMerge::initTestCase() +{ + /* we need to manually tell that the resource exists, because we are using it as library. */ + Q_INIT_RESOURCE(subsurface); +} + +void TestMerge::testMergeEmpty() +{ + /* + * check that we correctly merge mixed cylinder dives + */ + QCOMPARE(parse_file(SUBSURFACE_SOURCE "/dives/test47.xml"), 0); + process_dives(true, false); + QCOMPARE(parse_file(SUBSURFACE_SOURCE "/dives/test48.xml"), 0); + process_dives(true, false); + QCOMPARE(save_dives("./testmerge47+48.ssrf"), 0); + QFile org(SUBSURFACE_SOURCE "/dives/test47+48.xml"); + org.open(QFile::ReadOnly); + QFile out("./testmerge47+48.ssrf"); + out.open(QFile::ReadOnly); + QTextStream orgS(&org); + QTextStream outS(&out); + QStringList readin = orgS.readAll().split("\n"); + QStringList written = outS.readAll().split("\n"); + while(readin.size() && written.size()){ + QCOMPARE(readin.takeFirst(), written.takeFirst()); + } + clear_dive_file_data(); +} + +void TestMerge::testMergeBackwards() +{ + /* + * check that we correctly merge mixed cylinder dives + */ + QCOMPARE(parse_file(SUBSURFACE_SOURCE "/dives/test48.xml"), 0); + process_dives(true, false); + QCOMPARE(parse_file(SUBSURFACE_SOURCE "/dives/test47.xml"), 0); + process_dives(true, false); + QCOMPARE(save_dives("./testmerge47+48.ssrf"), 0); + QFile org(SUBSURFACE_SOURCE "/dives/test47+48.xml"); + org.open(QFile::ReadOnly); + QFile out("./testmerge47+48.ssrf"); + out.open(QFile::ReadOnly); + QTextStream orgS(&org); + QTextStream outS(&out); + QStringList readin = orgS.readAll().split("\n"); + QStringList written = outS.readAll().split("\n"); + while(readin.size() && written.size()){ + QCOMPARE(readin.takeFirst(), written.takeFirst()); + } + clear_dive_file_data(); +} + +QTEST_GUILESS_MAIN(TestMerge) diff --git a/tests/testmerge.h b/tests/testmerge.h new file mode 100644 index 000000000..771afc4db --- /dev/null +++ b/tests/testmerge.h @@ -0,0 +1,14 @@ +#ifndef TESTMERGE_H +#define TESTMERGE_H + +#include <QtTest> + +class TestMerge : public QObject{ + Q_OBJECT +private slots: + void initTestCase(); + void testMergeEmpty(); + void testMergeBackwards(); +}; + +#endif |