mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 05:00:20 +00:00
82af1b2377
As opposed to dive trips, dive sites were always directly added to the global table, even on import. Instead, parse the divesites into a distinct table and merge them on import. Currently, this does not do any merging of dive sites, i.e. dive sites are considered as either equal or different. Nevertheless, merging of data should be rather easy to implement and simply follow the code of the dive merging. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
71 lines
2.4 KiB
C++
71 lines
2.4 KiB
C++
// SPDX-License-Identifier: GPL-2.0
|
|
#include "testmerge.h"
|
|
#include "core/dive.h"
|
|
#include "core/divelist.h"
|
|
#include "core/file.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::cleanup()
|
|
{
|
|
clear_dive_file_data();
|
|
}
|
|
|
|
void TestMerge::testMergeEmpty()
|
|
{
|
|
/*
|
|
* check that we correctly merge mixed cylinder dives
|
|
*/
|
|
struct dive_table table = { 0 };
|
|
struct trip_table trips = { 0 };
|
|
struct dive_site_table sites = { 0 };
|
|
QCOMPARE(parse_file(SUBSURFACE_TEST_DATA "/dives/test47.xml", &table, &trips, &sites), 0);
|
|
add_imported_dives(&table, &trips, &sites, IMPORT_MERGE_ALL_TRIPS);
|
|
QCOMPARE(parse_file(SUBSURFACE_TEST_DATA "/dives/test48.xml", &table, &trips, &sites), 0);
|
|
add_imported_dives(&table, &trips, &sites, IMPORT_MERGE_ALL_TRIPS);
|
|
QCOMPARE(save_dives("./testmerge47+48.ssrf"), 0);
|
|
QFile org(SUBSURFACE_TEST_DATA "/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(written.takeFirst().trimmed(), readin.takeFirst().trimmed());
|
|
}
|
|
}
|
|
|
|
void TestMerge::testMergeBackwards()
|
|
{
|
|
/*
|
|
* check that we correctly merge mixed cylinder dives
|
|
*/
|
|
struct dive_table table = { 0 };
|
|
struct trip_table trips = { 0 };
|
|
struct dive_site_table sites = { 0 };
|
|
QCOMPARE(parse_file(SUBSURFACE_TEST_DATA "/dives/test48.xml", &table, &trips, &sites), 0);
|
|
add_imported_dives(&table, &trips, &sites, IMPORT_MERGE_ALL_TRIPS);
|
|
QCOMPARE(parse_file(SUBSURFACE_TEST_DATA "/dives/test47.xml", &table, &trips, &sites), 0);
|
|
add_imported_dives(&table, &trips, &sites, IMPORT_MERGE_ALL_TRIPS);
|
|
QCOMPARE(save_dives("./testmerge47+48.ssrf"), 0);
|
|
QFile org(SUBSURFACE_TEST_DATA "/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(written.takeFirst().trimmed(), readin.takeFirst().trimmed());
|
|
}
|
|
}
|
|
|
|
QTEST_GUILESS_MAIN(TestMerge)
|