feat: common_unit support added

This commit is contained in:
Mateusz Pusz
2024-09-26 20:28:41 +02:00
parent 25af8c9d8f
commit 3190d15eba
5 changed files with 280 additions and 50 deletions
+10
View File
@@ -22,6 +22,7 @@
#include <mp-units/systems/iau.h>
#include <mp-units/systems/iec.h>
#include <mp-units/systems/international.h>
#include <mp-units/systems/si.h>
#ifdef MP_UNITS_IMPORT_STD
import std;
@@ -34,6 +35,7 @@ namespace {
using namespace mp_units;
using namespace mp_units::si;
using namespace mp_units::iec;
using namespace mp_units::international;
using enum text_encoding;
using enum unit_symbol_solidus;
@@ -114,6 +116,14 @@ static_assert(unit_symbol(mag<60> * second) == "[6 × 10¹] s");
static_assert(unit_symbol<unit_symbol_formatting{.encoding = ascii}>(mag<60> * second) == "[6 x 10^1] s");
static_assert(unit_symbol(mag_ratio<1, 18> * metre / second) == "[1/18] m/s");
// common units
static_assert(unit_symbol(get_common_unit(kilo<metre>, mile)) == "([1/25146] mi = [1/15625] km)");
static_assert(unit_symbol(get_common_unit(kilo<metre> / hour, metre / second)) == "([1/5] km/h = [1/18] m/s)");
static_assert(unit_symbol(get_common_unit(kilo<metre> / hour, metre / second) / second) ==
"([1/5] km/h = [1/18] m/s)/s");
static_assert(unit_symbol(get_common_unit(kilo<metre> / hour, metre / second) * second) ==
"([1/5] km/h = [1/18] m/s) s");
// derived units
static_assert(unit_symbol(one) == ""); // NOLINT(readability-container-size-empty)
static_assert(unit_symbol(percent) == "%");