test: cartesian_vector used in fmt_test

This commit is contained in:
Mateusz Pusz
2024-11-12 14:38:51 +01:00
parent 6c3c1fe5f7
commit 5a206c3ef1

View File

@ -39,6 +39,7 @@ import std;
#ifdef MP_UNITS_MODULES #ifdef MP_UNITS_MODULES
import mp_units; import mp_units;
#else #else
#include <mp-units/cartesian_vector.h>
#include <mp-units/format.h> #include <mp-units/format.h>
#include <mp-units/ostream.h> // IWYU pragma: keep #include <mp-units/ostream.h> // IWYU pragma: keep
#include <mp-units/systems/cgs.h> #include <mp-units/systems/cgs.h>
@ -48,12 +49,9 @@ import mp_units;
#include <mp-units/systems/si.h> #include <mp-units/systems/si.h>
#endif #endif
template<class T>
requires mp_units::is_scalar<T>
constexpr bool mp_units::is_vector<T> = true;
using namespace mp_units; using namespace mp_units;
using namespace mp_units::si::unit_symbols; using namespace mp_units::si::unit_symbols;
using v = cartesian_vector<double>;
TEST_CASE("dimension_symbol", "[dimension][symbol]") TEST_CASE("dimension_symbol", "[dimension][symbol]")
{ {
@ -437,10 +435,10 @@ TEST_CASE("default quantity formatting", "[quantity][ostream][fmt]")
SECTION("angular impulse") SECTION("angular impulse")
{ {
const auto q = 123 * isq::angular_impulse[N * m * s]; const auto q = v{1, 2, 3} * isq::angular_impulse[N * m * s];
os << q; os << q;
SECTION("iostream") { CHECK(os.str() == "123 m N s"); } SECTION("iostream") { CHECK(os.str() == "[1, 2, 3] m N s"); }
SECTION("fmt with default format {} on a quantity") { CHECK(MP_UNITS_STD_FMT::format("{}", q) == os.str()); } SECTION("fmt with default format {} on a quantity") { CHECK(MP_UNITS_STD_FMT::format("{}", q) == os.str()); }
@ -467,10 +465,10 @@ TEST_CASE("default quantity formatting", "[quantity][ostream][fmt]")
SECTION("angular acceleration") SECTION("angular acceleration")
{ {
const auto q = 123 * isq::angular_acceleration[rad / s2]; const auto q = v{1, 2, 3} * isq::angular_acceleration[rad / s2];
os << q; os << q;
SECTION("iostream") { CHECK(os.str() == "123 rad/s²"); } SECTION("iostream") { CHECK(os.str() == "[1, 2, 3] rad/s²"); }
SECTION("fmt with default format {} on a quantity") { CHECK(MP_UNITS_STD_FMT::format("{}", q) == os.str()); } SECTION("fmt with default format {} on a quantity") { CHECK(MP_UNITS_STD_FMT::format("{}", q) == os.str()); }
@ -779,7 +777,7 @@ TEST_CASE("quantity subentities selection", "[quantity][fmt]")
CHECK(MP_UNITS_STD_FMT::format("{:%U}", 123 * isq::speed[km / h]) == "km/h"); CHECK(MP_UNITS_STD_FMT::format("{:%U}", 123 * isq::speed[km / h]) == "km/h");
CHECK(MP_UNITS_STD_FMT::format("{:%U}", 123 * isq::resistance[si::kilo<si::ohm>]) == ""); CHECK(MP_UNITS_STD_FMT::format("{:%U}", 123 * isq::resistance[si::kilo<si::ohm>]) == "");
CHECK(MP_UNITS_STD_FMT::format("{:%U}", 123 * isq::time[us]) == "µs"); CHECK(MP_UNITS_STD_FMT::format("{:%U}", 123 * isq::time[us]) == "µs");
CHECK(MP_UNITS_STD_FMT::format("{:%U}", 123 * isq::acceleration[m / s2]) == "m/s²"); CHECK(MP_UNITS_STD_FMT::format("{:%U}", v{1, 2, 3} * isq::acceleration[m / s2]) == "m/s²");
CHECK(MP_UNITS_STD_FMT::format("{:%U}", 123 * percent) == "%"); CHECK(MP_UNITS_STD_FMT::format("{:%U}", 123 * percent) == "%");
} }