Convert the atmospheric pressure in the Information Tab to an editable field

The Information tab shows the atmospheric pressure. Make this value editable
and also ensure that changes to it are undo-able.

Signed-off-by: willemferguson <willemferguson@zoology.up.ac.za>
This commit is contained in:
willemferguson 2019-04-30 12:42:33 +02:00 committed by Dirk Hohndel
parent ca6aa38139
commit 1bdf00b2b4
19 changed files with 323 additions and 20 deletions

View file

@ -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

63
tests/testAirPressure.cpp Normal file
View file

@ -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)

19
tests/testAirPressure.h Normal file
View file

@ -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