summaryrefslogtreecommitdiffstats
path: root/tests/testmerge.cpp
diff options
context:
space:
mode:
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)