mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-12 16:06:17 +00:00
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>
27 lines
1.1 KiB
C++
27 lines
1.1 KiB
C++
// SPDX-License-Identifier: GPL-2.0
|
|
#include "testunitconversion.h"
|
|
#include "core/dive.h"
|
|
#include "core/subsurface-string.h"
|
|
|
|
void TestUnitConversion::testUnitConversions()
|
|
{
|
|
QCOMPARE(IS_FP_SAME(grams_to_lbs(1000), 2.204586), true);
|
|
QCOMPARE(lbs_to_grams(1), 454);
|
|
QCOMPARE(IS_FP_SAME(ml_to_cuft(1000), 0.0353147), true);
|
|
QCOMPARE(IS_FP_SAME(cuft_to_l(1), 28.316847), true);
|
|
QCOMPARE(IS_FP_SAME(mm_to_feet(1000), 3.280840), true);
|
|
QCOMPARE(feet_to_mm(1), (long unsigned int)305);
|
|
QCOMPARE(to_feet((depth_t){1000}), 3);
|
|
QCOMPARE(IS_FP_SAME(mkelvin_to_C(647000), 373.85), true);
|
|
QCOMPARE(IS_FP_SAME(mkelvin_to_F(647000), 704.93), true);
|
|
QCOMPARE(F_to_mkelvin(704.93), (unsigned long)647000);
|
|
QCOMPARE(C_to_mkelvin(373.85), (unsigned long)647000);
|
|
QCOMPARE(IS_FP_SAME(psi_to_bar(14.6959488), 1.01325), true);
|
|
QCOMPARE(psi_to_mbar(14.6959488), (long)1013);
|
|
QCOMPARE(IS_FP_SAME(to_PSI((pressure_t){1013}), 14.6923228594), true);
|
|
QCOMPARE(IS_FP_SAME(bar_to_atm(1.013), 1.0), true);
|
|
QCOMPARE(IS_FP_SAME(mbar_to_atm(1013), 1.0), true);
|
|
QCOMPARE(IS_FP_SAME(mbar_to_PSI(1013), 14.6923228594), true);
|
|
}
|
|
|
|
QTEST_GUILESS_MAIN(TestUnitConversion)
|