| 
									
										
										
										
											2017-04-27 20:21:27 +02:00
										 |  |  | // SPDX-License-Identifier: GPL-2.0
 | 
					
						
							| 
									
										
										
										
											2017-02-21 17:23:19 -08:00
										 |  |  | #include "testmerge.h"
 | 
					
						
							| 
									
										
										
										
											2020-10-17 12:32:22 +02:00
										 |  |  | #include "core/device.h"
 | 
					
						
							| 
									
										
										
										
											2020-05-01 13:43:52 +02:00
										 |  |  | #include "core/dive.h" // for save_dives()
 | 
					
						
							| 
									
										
										
										
											2019-03-04 23:20:29 +01:00
										 |  |  | #include "core/divesite.h"
 | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | #include "core/file.h"
 | 
					
						
							| 
									
										
										
										
											2019-05-31 16:09:14 +02:00
										 |  |  | #include "core/trip.h"
 | 
					
						
							| 
									
										
										
										
											2021-04-16 06:47:51 -07:00
										 |  |  | #include "core/pref.h"
 | 
					
						
							| 
									
										
										
										
											2017-02-21 17:23:19 -08:00
										 |  |  | #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); | 
					
						
							| 
									
										
										
										
											2021-07-21 13:32:28 -07:00
										 |  |  | 	copy_prefs(&default_prefs, &prefs); | 
					
						
							| 
									
										
										
										
											2017-02-21 17:23:19 -08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-03 13:33:25 +07:00
										 |  |  | void TestMerge::cleanup() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	clear_dive_file_data(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-21 17:23:19 -08:00
										 |  |  | void TestMerge::testMergeEmpty() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	/*
 | 
					
						
							|  |  |  | 	 * check that we correctly merge mixed cylinder dives | 
					
						
							|  |  |  | 	 */ | 
					
						
							| 
									
										
										
										
											2020-01-08 21:25:02 -08:00
										 |  |  | 	struct dive_table table = empty_dive_table; | 
					
						
							|  |  |  | 	struct trip_table trips = empty_trip_table; | 
					
						
							|  |  |  | 	struct dive_site_table sites = empty_dive_site_table; | 
					
						
							| 
									
										
										
										
											2020-10-17 12:32:22 +02:00
										 |  |  | 	struct device_table devices; | 
					
						
							| 
									
										
										
										
											2020-10-17 09:58:23 +02:00
										 |  |  | 	struct filter_preset_table filter_presets; | 
					
						
							| 
									
										
										
										
											2020-10-17 12:32:22 +02:00
										 |  |  | 	QCOMPARE(parse_file(SUBSURFACE_TEST_DATA "/dives/test47.xml", &table, &trips, &sites, &devices, &filter_presets), 0); | 
					
						
							| 
									
										
										
										
											2020-10-17 16:07:39 +02:00
										 |  |  | 	add_imported_dives(&table, &trips, &sites, &devices, IMPORT_MERGE_ALL_TRIPS); | 
					
						
							| 
									
										
										
										
											2020-10-17 12:32:22 +02:00
										 |  |  | 	QCOMPARE(parse_file(SUBSURFACE_TEST_DATA "/dives/test48.xml", &table, &trips, &sites, &devices, &filter_presets), 0); | 
					
						
							| 
									
										
										
										
											2020-10-17 16:07:39 +02:00
										 |  |  | 	add_imported_dives(&table, &trips, &sites, &devices, IMPORT_MERGE_ALL_TRIPS); | 
					
						
							| 
									
										
										
										
											2017-02-21 17:23:19 -08:00
										 |  |  | 	QCOMPARE(save_dives("./testmerge47+48.ssrf"), 0); | 
					
						
							| 
									
										
										
										
											2017-02-24 13:52:07 +07:00
										 |  |  | 	QFile org(SUBSURFACE_TEST_DATA "/dives/test47+48.xml"); | 
					
						
							| 
									
										
										
										
											2017-02-21 17:23:19 -08:00
										 |  |  | 	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"); | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | 	while (readin.size() && written.size()) { | 
					
						
							| 
									
										
										
										
											2017-03-03 13:22:22 +07:00
										 |  |  | 		QCOMPARE(written.takeFirst().trimmed(), readin.takeFirst().trimmed()); | 
					
						
							| 
									
										
										
										
											2017-02-21 17:23:19 -08:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void TestMerge::testMergeBackwards() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	/*
 | 
					
						
							|  |  |  | 	 * check that we correctly merge mixed cylinder dives | 
					
						
							|  |  |  | 	 */ | 
					
						
							| 
									
										
										
										
											2020-01-08 21:25:02 -08:00
										 |  |  | 	struct dive_table table = empty_dive_table; | 
					
						
							|  |  |  | 	struct trip_table trips = empty_trip_table; | 
					
						
							|  |  |  | 	struct dive_site_table sites = empty_dive_site_table; | 
					
						
							| 
									
										
										
										
											2020-10-17 12:32:22 +02:00
										 |  |  | 	struct device_table devices; | 
					
						
							| 
									
										
										
										
											2020-10-17 09:58:23 +02:00
										 |  |  | 	struct filter_preset_table filter_presets; | 
					
						
							| 
									
										
										
										
											2020-10-17 12:32:22 +02:00
										 |  |  | 	QCOMPARE(parse_file(SUBSURFACE_TEST_DATA "/dives/test48.xml", &table, &trips, &sites, &devices, &filter_presets), 0); | 
					
						
							| 
									
										
										
										
											2020-10-17 16:07:39 +02:00
										 |  |  | 	add_imported_dives(&table, &trips, &sites, &devices, IMPORT_MERGE_ALL_TRIPS); | 
					
						
							| 
									
										
										
										
											2020-10-17 12:32:22 +02:00
										 |  |  | 	QCOMPARE(parse_file(SUBSURFACE_TEST_DATA "/dives/test47.xml", &table, &trips, &sites, &devices, &filter_presets), 0); | 
					
						
							| 
									
										
										
										
											2020-10-17 16:07:39 +02:00
										 |  |  | 	add_imported_dives(&table, &trips, &sites, &devices, IMPORT_MERGE_ALL_TRIPS); | 
					
						
							| 
									
										
										
										
											2017-02-21 17:23:19 -08:00
										 |  |  | 	QCOMPARE(save_dives("./testmerge47+48.ssrf"), 0); | 
					
						
							| 
									
										
										
										
											2019-04-05 21:56:20 +02:00
										 |  |  | 	QFile org(SUBSURFACE_TEST_DATA "/dives/test48+47.xml"); | 
					
						
							| 
									
										
										
										
											2017-02-21 17:23:19 -08:00
										 |  |  | 	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"); | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | 	while (readin.size() && written.size()) { | 
					
						
							| 
									
										
										
										
											2017-03-03 13:22:22 +07:00
										 |  |  | 		QCOMPARE(written.takeFirst().trimmed(), readin.takeFirst().trimmed()); | 
					
						
							| 
									
										
										
										
											2017-02-21 17:23:19 -08:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | QTEST_GUILESS_MAIN(TestMerge) |