summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/CMakeLists.txt2
-rw-r--r--tests/testAirPressure.cpp63
-rw-r--r--tests/testAirPressure.h19
3 files changed, 84 insertions, 0 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 229054631..887e1b34d 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -92,6 +92,7 @@ TEST(TestUnitConversion testunitconversion.cpp)
TEST(TestProfile testprofile.cpp)
TEST(TestGpsCoords testgpscoords.cpp)
TEST(TestParse testparse.cpp)
+TEST(TestAirPressure testAirPressure.cpp)
if (BTSUPPORT)
TEST(TestHelper testhelper.cpp)
endif()
@@ -128,6 +129,7 @@ add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND}
TestParse
TestGitStorage
TestPlan
+ TestAirPressure
TestDiveSiteDuplication
TestRenumber
TestPicture
diff --git a/tests/testAirPressure.cpp b/tests/testAirPressure.cpp
new file mode 100644
index 000000000..aa6b13014
--- /dev/null
+++ b/tests/testAirPressure.cpp
@@ -0,0 +1,63 @@
+// SPDX-License-Identifier: GPL-2.0
+#include "testAirPressure.h"
+#include "core/divesite.h"
+#include "core/divelist.h"
+#include "core/file.h"
+#include "core/dive.h"
+#include <QString>
+#include <core/qthelper.h>
+
+void TestAirPressure::initTestCase()
+{
+ /* we need to manually tell that the resource exists, because we are using it as library. */
+ Q_INIT_RESOURCE(subsurface);
+}
+
+void TestAirPressure::get_dives()
+{
+ struct dive *dive;
+ verbose = 1;
+
+ QCOMPARE(parse_file(SUBSURFACE_TEST_DATA "/dives/TestAtmPress.xml", &dive_table, &trip_table, &dive_site_table), 0);
+ dive = get_dive(0);
+ dive->selected = true;
+ QVERIFY(dive != NULL);
+}
+
+void TestAirPressure::testReadAirPressure()
+{
+ struct dive *dive;
+ dive = get_dive(0);
+ QVERIFY(dive != NULL);
+ dive->selected = true;
+ QCOMPARE(1012, dive->surface_pressure.mbar);
+ dive = get_dive(1);
+ QVERIFY(dive != NULL);
+ dive->selected = true;
+ QCOMPARE(991, dive->surface_pressure.mbar);
+}
+
+void TestAirPressure::testConvertAltitudetoAirPressure()
+{
+ QCOMPARE(891,altitude_to_pressure(1000000)); // 1000 m altitude in mm
+ QCOMPARE(1013,altitude_to_pressure(0)); // sea level
+}
+
+void TestAirPressure::testWriteReadBackAirPressure()
+{
+ struct dive *dive;
+ int32_t ap = 1111;
+ dive = get_dive(0);
+ QVERIFY(dive != NULL);
+ dive->selected = true;
+ dive->surface_pressure.mbar = ap;
+ QCOMPARE(save_dives("./testout.ssrf"), 0);
+ clear_dive_file_data();
+ QCOMPARE(parse_file("./testout.ssrf", &dive_table, &trip_table, &dive_site_table), 0);
+ dive = get_dive(0);
+ QVERIFY(dive != NULL);
+ dive->selected = true;
+ QCOMPARE(ap, dive->surface_pressure.mbar);
+}
+
+QTEST_GUILESS_MAIN(TestAirPressure)
diff --git a/tests/testAirPressure.h b/tests/testAirPressure.h
new file mode 100644
index 000000000..18544eb47
--- /dev/null
+++ b/tests/testAirPressure.h
@@ -0,0 +1,19 @@
+// SPDX-License-Identifier: GPL-2.0
+#ifndef TESTPICTURE_H
+#define TESTPICTURE_H
+
+#include <QtTest>
+
+class TestAirPressure : public QObject {
+ Q_OBJECT
+private slots:
+ void initTestCase();
+ void get_dives();
+ void testReadAirPressure();
+ void testWriteReadBackAirPressure();
+ void testConvertAltitudetoAirPressure();
+};
+
+#endif
+
+