| 
									
										
										
										
											2017-04-27 20:21:27 +02:00
										 |  |  | // SPDX-License-Identifier: GPL-2.0
 | 
					
						
							| 
									
										
										
										
											2015-03-10 14:27:14 -07:00
										 |  |  | #include "testparse.h"
 | 
					
						
							| 
									
										
										
										
											2019-03-04 23:20:29 +01:00
										 |  |  | #include "core/divesite.h"
 | 
					
						
							| 
									
										
										
										
											2019-08-05 19:41:15 +02:00
										 |  |  | #include "core/errorhelper.h"
 | 
					
						
							| 
									
										
										
										
											2019-05-31 16:09:14 +02:00
										 |  |  | #include "core/trip.h"
 | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | #include "core/file.h"
 | 
					
						
							| 
									
										
										
										
											2018-09-28 12:09:18 +02:00
										 |  |  | #include "core/import-csv.h"
 | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | #include "core/parse.h"
 | 
					
						
							| 
									
										
										
										
											2017-05-07 09:41:27 +03:00
										 |  |  | #include "core/qthelper.h"
 | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | #include "core/subsurface-string.h"
 | 
					
						
							|  |  |  | #include <QTextStream>
 | 
					
						
							| 
									
										
										
										
											2015-03-10 14:27:14 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | /* We have to use a macro since QCOMPARE
 | 
					
						
							|  |  |  |  * can only be called from a test method | 
					
						
							|  |  |  |  * invoked by the QTest framework | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | #define FILE_COMPARE(actual, expected)                    \
 | 
					
						
							|  |  |  | 	QFile org(expected);                              \ | 
					
						
							|  |  |  | 	org.open(QFile::ReadOnly);                        \ | 
					
						
							|  |  |  | 	QFile out(actual);                                \ | 
					
						
							|  |  |  | 	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());   \ | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-27 13:31:30 +01:00
										 |  |  | void TestParse::initTestCase() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	/* we need to manually tell that the resource exists, because we are using it as library. */ | 
					
						
							|  |  |  | 	Q_INIT_RESOURCE(subsurface); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | void TestParse::init() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	_sqlite3_handle = NULL; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void TestParse::cleanup() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	clear_dive_file_data(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Some test use sqlite3, ensure db is closed
 | 
					
						
							|  |  |  | 	sqlite3_close(_sqlite3_handle); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-13 21:53:44 +02:00
										 |  |  | int TestParse::parseCSV(int units, std::string file) | 
					
						
							| 
									
										
										
										
											2015-03-10 14:27:14 -07:00
										 |  |  | { | 
					
						
							|  |  |  | 	// some basic file parsing tests
 | 
					
						
							|  |  |  | 	//
 | 
					
						
							| 
									
										
										
										
											2015-06-16 12:52:39 -07:00
										 |  |  | 	// CSV import should work
 | 
					
						
							| 
									
										
										
										
											2015-03-10 14:27:14 -07:00
										 |  |  | 	verbose = 1; | 
					
						
							| 
									
										
										
										
											2015-08-23 20:56:19 +03:00
										 |  |  | 	char *params[55]; | 
					
						
							|  |  |  | 	int pnr = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-04 21:22:41 +03:00
										 |  |  | 	params[pnr++] = strdup("numberField"); | 
					
						
							| 
									
										
										
										
											2015-08-23 20:56:19 +03:00
										 |  |  | 	params[pnr++] = intdup(0); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("dateField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("timeField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(2); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("durationField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(3); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("locationField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("gpsField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("maxDepthField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(4); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("meanDepthField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(5); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("divemasterField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("buddyField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(6); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("suitField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(7); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("notesField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("weightField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("tagsField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("separatorIndex"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(0); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("units"); | 
					
						
							| 
									
										
										
										
											2017-03-13 21:53:44 +02:00
										 |  |  | 	params[pnr++] = intdup(units); | 
					
						
							| 
									
										
										
										
											2015-08-23 20:56:19 +03:00
										 |  |  | 	params[pnr++] = strdup("datefmt"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("durationfmt"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(2); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("cylindersizeField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("startpressureField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("endpressureField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("o2Field"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("heField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("airtempField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("watertempField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = NULL; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-28 22:45:17 +01:00
										 |  |  | 	return parse_manual_file(file.c_str(), params, pnr - 1, &dive_table, &trip_table, &dive_site_table); | 
					
						
							| 
									
										
										
										
											2015-03-10 14:27:14 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | int TestParse::parseDivingLog() | 
					
						
							| 
									
										
										
										
											2015-07-24 19:53:22 +03:00
										 |  |  | { | 
					
						
							|  |  |  | 	// Parsing of DivingLog import from SQLite database
 | 
					
						
							| 
									
										
										
										
											2019-02-26 22:26:11 +01:00
										 |  |  | 	struct dive_site *ds = alloc_or_get_dive_site(0xdeadbeef, &dive_site_table); | 
					
						
							| 
									
										
										
										
											2015-07-24 19:53:22 +03:00
										 |  |  | 	ds->name = copy_string("Suomi -  - Hälvälä"); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | 	int ret = sqlite3_open(SUBSURFACE_TEST_DATA "/dives/TestDivingLog4.1.1.sql", &_sqlite3_handle); | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | 	if (ret == 0) | 
					
						
							| 
									
										
										
										
											2019-02-28 22:45:17 +01:00
										 |  |  | 		ret = parse_divinglog_buffer(_sqlite3_handle, 0, 0, 0, &dive_table, &trip_table, &dive_site_table); | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | 	else | 
					
						
							|  |  |  | 		fprintf(stderr, "Can't open sqlite3 db: " SUBSURFACE_TEST_DATA "/dives/TestDivingLog4.1.1.sql"); | 
					
						
							| 
									
										
										
										
											2015-07-24 19:53:22 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | 	return ret; | 
					
						
							| 
									
										
										
										
											2015-07-24 19:53:22 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | int TestParse::parseV2NoQuestion() | 
					
						
							| 
									
										
										
										
											2015-03-10 14:27:14 -07:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2015-06-16 12:52:39 -07:00
										 |  |  | 	// parsing of a V2 file should work
 | 
					
						
							| 
									
										
										
										
											2019-02-28 22:45:17 +01:00
										 |  |  | 	return parse_file(SUBSURFACE_TEST_DATA "/dives/test40.xml", &dive_table, &trip_table, &dive_site_table); | 
					
						
							| 
									
										
										
										
											2015-03-10 14:27:14 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | int TestParse::parseV3() | 
					
						
							| 
									
										
										
										
											2015-03-10 14:27:14 -07:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2015-06-16 12:52:39 -07:00
										 |  |  | 	// parsing of a V3 files should succeed
 | 
					
						
							| 
									
										
										
										
											2019-02-28 22:45:17 +01:00
										 |  |  | 	return parse_file(SUBSURFACE_TEST_DATA "/dives/test42.xml", &dive_table, &trip_table, &dive_site_table); | 
					
						
							| 
									
										
										
										
											2015-03-10 14:27:14 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | void TestParse::testParse() | 
					
						
							| 
									
										
										
										
											2015-03-10 14:27:14 -07:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2017-03-13 21:53:44 +02:00
										 |  |  | 	QCOMPARE(parseCSV(0, SUBSURFACE_TEST_DATA "/dives/test41.csv"), 0); | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | 	fprintf(stderr, "number of dives %d \n", dive_table.nr); | 
					
						
							| 
									
										
										
										
											2017-05-27 07:21:37 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | 	QCOMPARE(parseDivingLog(), 0); | 
					
						
							|  |  |  | 	fprintf(stderr, "number of dives %d \n", dive_table.nr); | 
					
						
							| 
									
										
										
										
											2015-07-26 15:08:11 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | 	QCOMPARE(parseV2NoQuestion(), 0); | 
					
						
							|  |  |  | 	fprintf(stderr, "number of dives %d \n", dive_table.nr); | 
					
						
							| 
									
										
										
										
											2015-07-26 15:08:11 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | 	QCOMPARE(parseV3(), 0); | 
					
						
							|  |  |  | 	fprintf(stderr, "number of dives %d \n", dive_table.nr); | 
					
						
							| 
									
										
										
										
											2015-07-26 15:08:11 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | 	QCOMPARE(save_dives("./testout.ssrf"), 0); | 
					
						
							|  |  |  | 	FILE_COMPARE("./testout.ssrf", | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | 		     SUBSURFACE_TEST_DATA "/dives/test40-42.xml"); | 
					
						
							| 
									
										
										
										
											2015-07-26 15:08:11 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | void TestParse::testParseDM4() | 
					
						
							| 
									
										
										
										
											2015-07-26 15:08:11 +03:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | 	QCOMPARE(sqlite3_open(SUBSURFACE_TEST_DATA "/dives/TestDiveDM4.db", &_sqlite3_handle), 0); | 
					
						
							| 
									
										
										
										
											2019-02-28 22:45:17 +01:00
										 |  |  | 	QCOMPARE(parse_dm4_buffer(_sqlite3_handle, 0, 0, 0, &dive_table, &trip_table, &dive_site_table), 0); | 
					
						
							| 
									
										
										
										
											2017-05-27 07:21:37 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-26 15:08:11 +03:00
										 |  |  | 	QCOMPARE(save_dives("./testdm4out.ssrf"), 0); | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | 	FILE_COMPARE("./testdm4out.ssrf", | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | 		     SUBSURFACE_TEST_DATA "/dives/TestDiveDM4.xml"); | 
					
						
							| 
									
										
										
										
											2015-03-10 14:27:14 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-26 10:48:03 +02:00
										 |  |  | void TestParse::testParseDM5() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	QCOMPARE(sqlite3_open(SUBSURFACE_TEST_DATA "/dives/TestDiveDM5.db", &_sqlite3_handle), 0); | 
					
						
							| 
									
										
										
										
											2019-02-28 22:45:17 +01:00
										 |  |  | 	QCOMPARE(parse_dm5_buffer(_sqlite3_handle, 0, 0, 0, &dive_table, &trip_table, &dive_site_table), 0); | 
					
						
							| 
									
										
										
										
											2017-11-26 10:48:03 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	QCOMPARE(save_dives("./testdm5out.ssrf"), 0); | 
					
						
							|  |  |  | 	FILE_COMPARE("./testdm5out.ssrf", | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | 		     SUBSURFACE_TEST_DATA "/dives/TestDiveDM5.xml"); | 
					
						
							| 
									
										
										
										
											2017-11-26 10:48:03 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-27 16:13:33 +03:00
										 |  |  | void TestParse::testParseHUDC() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2015-08-27 17:36:24 +03:00
										 |  |  | 	char *params[37]; | 
					
						
							|  |  |  | 	int pnr = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	params[pnr++] = strdup("timeField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(0); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("depthField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("tempField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(5); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("po2Field"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("o2sensor1Field"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("o2sensor2Field"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("o2sensor3Field"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("cnsField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("ndlField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(2); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("ttsField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("stopdepthField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("pressureField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							| 
									
										
										
										
											2018-04-18 20:28:30 +03:00
										 |  |  | 	params[pnr++] = strdup("setpointField"); | 
					
						
							| 
									
										
										
										
											2015-08-27 17:36:24 +03:00
										 |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("separatorIndex"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(2); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("units"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(0); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("hw"); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("\"DC text\""); | 
					
						
							|  |  |  | 	params[pnr++] = NULL; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-24 13:52:07 +07:00
										 |  |  | 	QCOMPARE(parse_csv_file(SUBSURFACE_TEST_DATA "/dives/TestDiveSeabearHUDC.csv", | 
					
						
							| 
									
										
										
										
											2019-02-28 22:45:17 +01:00
										 |  |  | 				params, pnr - 1, "csv", &dive_table, &trip_table, &dive_site_table), | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | 		 0); | 
					
						
							| 
									
										
										
										
											2015-07-27 16:13:33 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-09 16:54:48 -08:00
										 |  |  | 	QCOMPARE(dive_table.nr, 1); | 
					
						
							| 
									
										
										
										
											2017-02-05 16:11:20 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-27 16:13:33 +03:00
										 |  |  | 	/*
 | 
					
						
							|  |  |  | 	 * CSV import uses time and date stamps relative to current | 
					
						
							|  |  |  | 	 * time, thus we need to use a static (random) timestamp | 
					
						
							|  |  |  | 	 */ | 
					
						
							| 
									
										
										
										
											2017-02-06 04:49:24 -08:00
										 |  |  | 	if (dive_table.nr > 0) { | 
					
						
							|  |  |  | 		struct dive *dive = dive_table.dives[dive_table.nr - 1]; | 
					
						
							|  |  |  | 		dive->when = 1255152761; | 
					
						
							|  |  |  | 		dive->dc.when = 1255152761; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-07-27 16:13:33 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	QCOMPARE(save_dives("./testhudcout.ssrf"), 0); | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | 	FILE_COMPARE("./testhudcout.ssrf", | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | 		     SUBSURFACE_TEST_DATA "/dives/TestDiveSeabearHUDC.xml"); | 
					
						
							| 
									
										
										
										
											2015-07-27 16:13:33 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-28 07:36:30 +03:00
										 |  |  | void TestParse::testParseNewFormat() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	QDir dir; | 
					
						
							|  |  |  | 	QStringList filter; | 
					
						
							|  |  |  | 	QStringList files; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/*
 | 
					
						
							|  |  |  | 	 * Set the directory location and file filter for H3 CSV files. | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-24 13:52:07 +07:00
										 |  |  | 	dir = QString::fromLatin1(SUBSURFACE_TEST_DATA "/dives"); | 
					
						
							| 
									
										
										
										
											2015-07-28 07:36:30 +03:00
										 |  |  | 	filter << "TestDiveSeabearH3*.csv"; | 
					
						
							|  |  |  | 	filter << "TestDiveSeabearT1*.csv"; | 
					
						
							|  |  |  | 	files = dir.entryList(filter, QDir::Files); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/*
 | 
					
						
							|  |  |  | 	 * Parse all files found matching the filter. | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	for (int i = 0; i < files.size(); ++i) { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-07 16:32:11 +03:00
										 |  |  | 		QCOMPARE(parse_seabear_log(QString::fromLatin1(SUBSURFACE_TEST_DATA | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | 							       "/dives/") | 
					
						
							|  |  |  | 						   .append(files.at(i)) | 
					
						
							|  |  |  | 						   .toLatin1() | 
					
						
							| 
									
										
										
										
											2019-02-28 22:45:17 +01:00
										 |  |  | 						   .data(), &dive_table, &trip_table, &dive_site_table), | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | 			 0); | 
					
						
							| 
									
										
										
										
											2017-02-09 09:41:12 -08:00
										 |  |  | 		QCOMPARE(dive_table.nr, i + 1); | 
					
						
							| 
									
										
										
										
											2015-07-28 07:36:30 +03:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	fprintf(stderr, "number of dives %d \n", dive_table.nr); | 
					
						
							|  |  |  | 	QCOMPARE(save_dives("./testsbnewout.ssrf"), 0); | 
					
						
							| 
									
										
										
										
											2017-02-06 22:08:56 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | 	// Currently the CSV parse fails
 | 
					
						
							|  |  |  | 	FILE_COMPARE("./testsbnewout.ssrf", | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | 		     SUBSURFACE_TEST_DATA "/dives/TestDiveSeabearNewFormat.xml"); | 
					
						
							| 
									
										
										
										
											2015-07-28 07:36:30 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-13 21:30:25 +03:00
										 |  |  | void TestParse::testParseDLD() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	struct memblock mem; | 
					
						
							| 
									
										
										
										
											2017-02-24 13:52:07 +07:00
										 |  |  | 	QString filename = SUBSURFACE_TEST_DATA "/dives/TestDiveDivelogsDE.DLD"; | 
					
						
							| 
									
										
										
										
											2015-09-13 21:30:25 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	QVERIFY(readfile(filename.toLatin1().data(), &mem) > 0); | 
					
						
							| 
									
										
										
										
											2019-02-28 22:45:17 +01:00
										 |  |  | 	QVERIFY(try_to_open_zip(filename.toLatin1().data(), &dive_table, &trip_table, &dive_site_table) > 0); | 
					
						
							| 
									
										
										
										
											2015-09-13 21:30:25 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	fprintf(stderr, "number of dives from DLD: %d \n", dive_table.nr); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | 	// Compare output
 | 
					
						
							| 
									
										
										
										
											2015-09-13 21:30:27 +03:00
										 |  |  | 	/*
 | 
					
						
							|  |  |  | 	 * DC is not cleared from previous tests with the | 
					
						
							|  |  |  | 	 * clear_dive_file_data(), so we do have an additional DC nick | 
					
						
							|  |  |  | 	 * name field on the log. | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  | 	QCOMPARE(save_dives("./testdldout.ssrf"), 0); | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | 	FILE_COMPARE("./testdldout.ssrf", | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | 		     SUBSURFACE_TEST_DATA "/dives/TestDiveDivelogsDE.xml") | 
					
						
							| 
									
										
										
										
											2015-09-13 21:30:27 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-09 22:16:08 -08:00
										 |  |  | void TestParse::testParseMerge() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	/*
 | 
					
						
							|  |  |  | 	 * check that we correctly merge mixed cylinder dives | 
					
						
							|  |  |  | 	 */ | 
					
						
							| 
									
										
										
										
											2019-02-28 22:45:17 +01:00
										 |  |  | 	QCOMPARE(parse_file(SUBSURFACE_TEST_DATA "/dives/ostc.xml", &dive_table, &trip_table, &dive_site_table), 0); | 
					
						
							|  |  |  | 	QCOMPARE(parse_file(SUBSURFACE_TEST_DATA "/dives/vyper.xml", &dive_table, &trip_table, &dive_site_table), 0); | 
					
						
							| 
									
										
										
										
											2017-02-09 22:16:08 -08:00
										 |  |  | 	QCOMPARE(save_dives("./testmerge.ssrf"), 0); | 
					
						
							| 
									
										
										
										
											2017-03-04 22:06:52 +07:00
										 |  |  | 	FILE_COMPARE("./testmerge.ssrf", | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | 		     SUBSURFACE_TEST_DATA "/dives/mergedVyperOstc.xml"); | 
					
						
							| 
									
										
										
										
											2017-02-09 22:16:08 -08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-14 06:58:59 +02:00
										 |  |  | int TestParse::parseCSVmanual(int units, std::string file) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	verbose = 1; | 
					
						
							|  |  |  | 	char *params[55]; | 
					
						
							|  |  |  | 	int pnr = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-14 21:38:38 +01:00
										 |  |  | 	// Numbers are column numbers
 | 
					
						
							| 
									
										
										
										
											2017-05-04 21:22:41 +03:00
										 |  |  | 	params[pnr++] = strdup("numberField"); | 
					
						
							| 
									
										
										
										
											2017-03-14 06:58:59 +02:00
										 |  |  | 	params[pnr++] = intdup(0); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("dateField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("timeField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(2); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("durationField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(3); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("maxDepthField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(4); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("meanDepthField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(5); | 
					
						
							| 
									
										
										
										
											2018-03-14 21:38:38 +01:00
										 |  |  | 	params[pnr++] = strdup("airtempField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(6); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("watertempField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(7); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("cylindersizeField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(8); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("startpressureField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(9); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("endpressureField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(10); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("o2Field"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(11); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("heField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(12); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("locationField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(13); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("gpsField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(14); | 
					
						
							| 
									
										
										
										
											2017-03-14 06:58:59 +02:00
										 |  |  | 	params[pnr++] = strdup("divemasterField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(15); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("buddyField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(16); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("suitField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(17); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("notesField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(20); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("weightField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(21); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("tagsField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(22); | 
					
						
							| 
									
										
										
										
											2018-03-14 21:38:38 +01:00
										 |  |  | 	// Numbers are indexes of possible options
 | 
					
						
							| 
									
										
										
										
											2017-03-14 06:58:59 +02:00
										 |  |  | 	params[pnr++] = strdup("separatorIndex"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(0); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("datefmt"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(2); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("durationfmt"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(2); | 
					
						
							| 
									
										
										
										
											2018-03-14 21:38:38 +01:00
										 |  |  | 	params[pnr++] = strdup("units"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(units); | 
					
						
							| 
									
										
										
										
											2017-03-14 06:58:59 +02:00
										 |  |  | 	params[pnr++] = NULL; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-28 22:45:17 +01:00
										 |  |  | 	return parse_manual_file(file.c_str(), params, pnr - 1, &dive_table, &trip_table, &dive_site_table); | 
					
						
							| 
									
										
										
										
											2017-03-14 06:58:59 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void TestParse::exportCSVDiveDetails() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2019-02-28 22:45:17 +01:00
										 |  |  | 	parse_file(SUBSURFACE_TEST_DATA "/dives/test40.xml", &dive_table, &trip_table, &dive_site_table); | 
					
						
							| 
									
										
										
										
											2017-03-14 06:58:59 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-10 14:47:56 +02:00
										 |  |  | 	export_dives_xslt("testcsvexportmanual.csv", 0, 0, "xml2manualcsv.xslt", false); | 
					
						
							|  |  |  | 	export_dives_xslt("testcsvexportmanualimperial.csv", 0, 1, "xml2manualcsv.xslt", false); | 
					
						
							| 
									
										
										
										
											2017-03-14 06:58:59 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	clear_dive_file_data(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	parseCSVmanual(1, "testcsvexportmanualimperial.csv"); | 
					
						
							| 
									
										
										
										
											2018-09-10 14:47:56 +02:00
										 |  |  | 	export_dives_xslt("testcsvexportmanual2.csv", 0, 0, "xml2manualcsv.xslt", false); | 
					
						
							| 
									
										
										
										
											2017-03-14 06:58:59 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	FILE_COMPARE("testcsvexportmanual2.csv", | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | 		     "testcsvexportmanual.csv"); | 
					
						
							| 
									
										
										
										
											2017-03-29 20:33:52 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	clear_dive_file_data(); | 
					
						
							| 
									
										
										
										
											2017-03-14 06:58:59 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-09 22:28:04 +03:00
										 |  |  | int TestParse::parseCSVprofile(int units, std::string file) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	verbose = 1; | 
					
						
							|  |  |  | 	char *params[55]; | 
					
						
							|  |  |  | 	int pnr = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-14 21:38:38 +01:00
										 |  |  | 	// Numbers are column numbers
 | 
					
						
							|  |  |  | 	params[pnr++] = strdup("numberField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(0); | 
					
						
							| 
									
										
										
										
											2017-05-09 22:28:04 +03:00
										 |  |  | 	params[pnr++] = strdup("dateField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("starttimeField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(2); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("timeField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(3); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("depthField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(4); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("tempField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(5); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("pressureField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(6); | 
					
						
							| 
									
										
										
										
											2018-03-14 21:38:38 +01:00
										 |  |  | 	// Numbers are indexes of possible options
 | 
					
						
							|  |  |  | 	params[pnr++] = strdup("datefmt"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(2); | 
					
						
							| 
									
										
										
										
											2017-05-09 22:28:04 +03:00
										 |  |  | 	params[pnr++] = strdup("units"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(units); | 
					
						
							|  |  |  | 	params[pnr++] = NULL; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-28 22:45:17 +01:00
										 |  |  | 	return parse_csv_file(file.c_str(), params, pnr - 1, "csv", &dive_table, &trip_table, &dive_site_table); | 
					
						
							| 
									
										
										
										
											2017-05-09 22:28:04 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void TestParse::exportCSVDiveProfile() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2019-02-28 22:45:17 +01:00
										 |  |  | 	parse_file(SUBSURFACE_TEST_DATA "/dives/test40.xml", &dive_table, &trip_table, &dive_site_table); | 
					
						
							| 
									
										
										
										
											2017-05-09 22:28:04 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-10 14:47:56 +02:00
										 |  |  | 	export_dives_xslt("testcsvexportprofile.csv", 0, 0, "xml2csv.xslt", false); | 
					
						
							|  |  |  | 	export_dives_xslt("testcsvexportprofileimperial.csv", 0, 1, "xml2csv.xslt", false); | 
					
						
							| 
									
										
										
										
											2017-05-09 22:28:04 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	clear_dive_file_data(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	parseCSVprofile(1, "testcsvexportprofileimperial.csv"); | 
					
						
							| 
									
										
										
										
											2018-09-10 14:47:56 +02:00
										 |  |  | 	export_dives_xslt("testcsvexportprofile2.csv", 0, 0, "xml2csv.xslt", false); | 
					
						
							| 
									
										
										
										
											2017-05-09 22:28:04 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	FILE_COMPARE("testcsvexportprofile2.csv", | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | 		     "testcsvexportprofile.csv"); | 
					
						
							| 
									
										
										
										
											2017-05-09 22:28:04 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	clear_dive_file_data(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-04 22:10:35 +03:00
										 |  |  | void TestParse::exportUDDF() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2019-02-28 22:45:17 +01:00
										 |  |  | 	parse_file(SUBSURFACE_TEST_DATA "/dives/test40.xml", &dive_table, &trip_table, &dive_site_table); | 
					
						
							| 
									
										
										
										
											2017-05-04 22:10:35 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-10 14:47:56 +02:00
										 |  |  | 	export_dives_xslt("testuddfexport.uddf", 0, 1, "uddf-export.xslt", false); | 
					
						
							| 
									
										
										
										
											2017-05-04 22:10:35 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	clear_dive_file_data(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-28 22:45:17 +01:00
										 |  |  | 	parse_file("testuddfexport.uddf", &dive_table, &trip_table, &dive_site_table); | 
					
						
							| 
									
										
										
										
											2018-09-10 14:47:56 +02:00
										 |  |  | 	export_dives_xslt("testuddfexport2.uddf", 0, 1, "uddf-export.xslt", false); | 
					
						
							| 
									
										
										
										
											2017-05-04 22:10:35 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	FILE_COMPARE("testuddfexport.uddf", | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | 		     "testuddfexport2.uddf"); | 
					
						
							| 
									
										
										
										
											2017-05-04 22:10:35 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	clear_dive_file_data(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-14 06:58:59 +02:00
										 |  |  | void TestParse::testExport() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	exportCSVDiveDetails(); | 
					
						
							| 
									
										
										
										
											2017-05-09 22:28:04 +03:00
										 |  |  | 	exportCSVDiveProfile(); | 
					
						
							| 
									
										
										
										
											2017-05-04 22:10:35 +03:00
										 |  |  | 	exportUDDF(); | 
					
						
							| 
									
										
										
										
											2017-03-14 06:58:59 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-06 21:16:53 +02:00
										 |  |  | void TestParse::parseDL7() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-01-07 15:25:14 +02:00
										 |  |  | 	char *params[51]; | 
					
						
							| 
									
										
										
										
											2018-01-06 21:16:53 +02:00
										 |  |  | 	int pnr = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	params[pnr++] = strdup("dateField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("datefmt"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(0); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("starttimeField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("numberField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("timeField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("depthField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(2); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("tempField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("po2Field"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("o2sensor1Field"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("o2sensor2Field"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("o2sensor3Field"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("cnsField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("ndlField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("ttsField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("stopdepthField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("pressureField"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							| 
									
										
										
										
											2018-04-18 20:28:30 +03:00
										 |  |  | 	params[pnr++] = strdup("setpointField"); | 
					
						
							| 
									
										
										
										
											2018-01-06 21:16:53 +02:00
										 |  |  | 	params[pnr++] = intdup(-1); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("separatorIndex"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(3); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("units"); | 
					
						
							|  |  |  | 	params[pnr++] = intdup(0); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("hw"); | 
					
						
							|  |  |  | 	params[pnr++] = strdup("DL7"); | 
					
						
							|  |  |  | 	params[pnr++] = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	clear_dive_file_data(); | 
					
						
							|  |  |  | 	QCOMPARE(parse_csv_file(SUBSURFACE_TEST_DATA "/dives/DL7.zxu", | 
					
						
							| 
									
										
										
										
											2019-02-28 22:45:17 +01:00
										 |  |  | 				params, pnr - 1, "DL7", &dive_table, &trip_table, &dive_site_table), | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | 		 0); | 
					
						
							| 
									
										
										
										
											2018-01-07 09:42:04 +02:00
										 |  |  | 	QCOMPARE(dive_table.nr, 3); | 
					
						
							| 
									
										
										
										
											2018-01-06 21:16:53 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-06 23:09:34 +02:00
										 |  |  | 	QCOMPARE(save_dives("./testdl7out.ssrf"), 0); | 
					
						
							|  |  |  | 	FILE_COMPARE("./testdl7out.ssrf", | 
					
						
							| 
									
										
										
										
											2018-07-25 12:39:04 -07:00
										 |  |  | 		     SUBSURFACE_TEST_DATA "/dives/DL7.xml"); | 
					
						
							| 
									
										
										
										
											2018-01-06 21:16:53 +02:00
										 |  |  | 	clear_dive_file_data(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-14 06:58:59 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-05 23:26:51 +01:00
										 |  |  | QTEST_GUILESS_MAIN(TestParse) |