From 3fef6ec31da786bde7f249dd9c07121944ddd9ee Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Tue, 21 Feb 2017 17:23:19 -0800 Subject: [PATCH] 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 --- dives/test47+48.xml | 22 ++++++++++++++++ dives/test48.xml | 13 ++++++++++ tests/CMakeLists.txt | 2 ++ tests/testmerge.cpp | 61 ++++++++++++++++++++++++++++++++++++++++++++ tests/testmerge.h | 14 ++++++++++ 5 files changed, 112 insertions(+) create mode 100644 dives/test47+48.xml create mode 100644 dives/test48.xml create mode 100644 tests/testmerge.cpp create mode 100644 tests/testmerge.h diff --git a/dives/test47+48.xml b/dives/test47+48.xml new file mode 100644 index 000000000..aa4c129c0 --- /dev/null +++ b/dives/test47+48.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/dives/test48.xml b/dives/test48.xml new file mode 100644 index 000000000..421325c4b --- /dev/null +++ b/dives/test48.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + 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 + +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 + +class TestMerge : public QObject{ + Q_OBJECT +private slots: + void initTestCase(); + void testMergeEmpty(); + void testMergeBackwards(); +}; + +#endif