summaryrefslogtreecommitdiffstats
path: root/tests/testmerge.cpp
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2017-02-21 17:23:19 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2017-02-21 18:22:56 -0800
commit3fef6ec31da786bde7f249dd9c07121944ddd9ee (patch)
treedc1d579f1072a6bf351935165cbafae20099ab7c /tests/testmerge.cpp
parentc4976b505a2c4a1fe62610b3c875eac56957c924 (diff)
downloadsubsurface-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/testmerge.cpp')
-rw-r--r--tests/testmerge.cpp61
1 files changed, 61 insertions, 0 deletions
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)