2017-04-27 18:21:27 +00:00
|
|
|
// SPDX-License-Identifier: GPL-2.0
|
2014-04-14 17:27:32 +00:00
|
|
|
#include "testunitconversion.h"
|
2016-04-05 17:22:00 +00:00
|
|
|
#include "core/dive.h"
|
2018-05-11 15:25:41 +00:00
|
|
|
#include "core/subsurface-string.h"
|
2014-04-14 17:27:32 +00:00
|
|
|
|
|
|
|
void TestUnitConversion::testUnitConversions()
|
|
|
|
{
|
2014-04-15 16:39:51 +00:00
|
|
|
QCOMPARE(IS_FP_SAME(grams_to_lbs(1000), 2.204586), true);
|
2014-04-14 17:27:32 +00:00
|
|
|
QCOMPARE(lbs_to_grams(1), 454);
|
|
|
|
QCOMPARE(IS_FP_SAME(ml_to_cuft(1000), 0.0353147), true);
|
2014-04-15 16:39:51 +00:00
|
|
|
QCOMPARE(IS_FP_SAME(cuft_to_l(1), 28.316847), true);
|
|
|
|
QCOMPARE(IS_FP_SAME(mm_to_feet(1000), 3.280840), true);
|
2022-01-04 17:42:00 +00:00
|
|
|
QCOMPARE(feet_to_mm(1), 305L);
|
2018-07-25 19:39:04 +00:00
|
|
|
QCOMPARE(to_feet((depth_t){1000}), 3);
|
2014-04-16 03:48:35 +00:00
|
|
|
QCOMPARE(IS_FP_SAME(mkelvin_to_C(647000), 373.85), true);
|
|
|
|
QCOMPARE(IS_FP_SAME(mkelvin_to_F(647000), 704.93), true);
|
2022-01-04 17:42:00 +00:00
|
|
|
QCOMPARE(F_to_mkelvin(704.93), 647000UL);
|
|
|
|
QCOMPARE(C_to_mkelvin(373.85), 647000UL);
|
2014-04-16 03:48:35 +00:00
|
|
|
QCOMPARE(IS_FP_SAME(psi_to_bar(14.6959488), 1.01325), true);
|
2022-01-04 17:42:00 +00:00
|
|
|
QCOMPARE(psi_to_mbar(14.6959488), 1013L);
|
core: return floating point from to_PSI() functions
Dive data are stored internally using integral types using
appropriately fine units (mm, mbar, mkelvin, etc.). These
are converted with functions defined in units.h for display
(m, bar, C, etc.). Usually floating points are returned by
these functions, to retain the necessary precision. There
is one exception: the to_PSI() and mbar_to_PSI() functions.
For consistency, make these functions likewise return floats.
This will be needed for the rework of the profile-axes.
The plan is to use the conversion functions to make the
axes aware of the displayed values. This in turn will be
necessary to place the ticks at sensible distances. However,
the conversions need to be precise, which is not the
case for the current to_PSI() functions.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-09-24 13:07:11 +00:00
|
|
|
QCOMPARE(IS_FP_SAME(to_PSI((pressure_t){1013}), 14.6923228594), true);
|
2016-02-02 02:00:49 +00:00
|
|
|
QCOMPARE(IS_FP_SAME(bar_to_atm(1.013), 1.0), true);
|
|
|
|
QCOMPARE(IS_FP_SAME(mbar_to_atm(1013), 1.0), true);
|
core: return floating point from to_PSI() functions
Dive data are stored internally using integral types using
appropriately fine units (mm, mbar, mkelvin, etc.). These
are converted with functions defined in units.h for display
(m, bar, C, etc.). Usually floating points are returned by
these functions, to retain the necessary precision. There
is one exception: the to_PSI() and mbar_to_PSI() functions.
For consistency, make these functions likewise return floats.
This will be needed for the rework of the profile-axes.
The plan is to use the conversion functions to make the
axes aware of the displayed values. This in turn will be
necessary to place the ticks at sensible distances. However,
the conversions need to be precise, which is not the
case for the current to_PSI() functions.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-09-24 13:07:11 +00:00
|
|
|
QCOMPARE(IS_FP_SAME(mbar_to_PSI(1013), 14.6923228594), true);
|
2014-04-14 17:27:32 +00:00
|
|
|
}
|
|
|
|
|
2017-02-05 22:26:51 +00:00
|
|
|
QTEST_GUILESS_MAIN(TestUnitConversion)
|