From 8dcdc7bdacca24e8e7451f3196b692fc1ed7e181 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Sun, 23 Oct 2022 22:19:44 +0200 Subject: [PATCH] fix: printing of symbols with fractional powers fixed --- src/core/include/units/unit.h | 4 ++-- test/unit_test/static/unit_test.cpp | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/core/include/units/unit.h b/src/core/include/units/unit.h index 31604c86..31cd3827 100644 --- a/src/core/include/units/unit.h +++ b/src/core/include/units/unit.h @@ -642,8 +642,8 @@ constexpr auto unit_symbol_impl(Out out, const power&, unit_symb constexpr ratio r = power::exponent; if constexpr (r.den != 1) { // add root part - constexpr auto txt = txt + basic_fixed_string("^(") + regular() + basic_fixed_string("/") + - regular() + basic_fixed_string(")"); + constexpr auto txt = basic_fixed_string("^(") + regular() + basic_fixed_string("/") + regular() + + basic_fixed_string(")"); return copy(txt, fmt.encoding, out); } else if constexpr (r.num != 1) { // add exponent part diff --git a/test/unit_test/static/unit_test.cpp b/test/unit_test/static/unit_test.cpp index 9df7d453..987df90b 100644 --- a/test/unit_test/static/unit_test.cpp +++ b/test/unit_test/static/unit_test.cpp @@ -478,6 +478,10 @@ static_assert(unit_symbol(kilogram / metre / square, {.encoding = ascii, "kg m^-1 s^-2"); static_assert(unit_symbol(kilogram / metre / square, {.denominator = always_negative, .separator = dot}) == "kg⋅m⁻¹⋅s⁻²"); +static_assert(unit_symbol(pow<123>(metre)) == "m¹²³"); +static_assert(unit_symbol(pow<1, 2>(metre)) == "m^(1/2)"); +static_assert(unit_symbol(pow<3, 5>(metre)) == "m^(3/5)"); +static_assert(unit_symbol(pow<1, 2>(metre / second)) == "m^(1/2)/s^(1/2)"); #endif // __cpp_lib_constexpr_string