From d13165d9ae6302933a9956e0c84b1c7801674f7c Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Sat, 27 May 2023 17:26:06 +0200 Subject: [PATCH] test: CGS tests added --- test/unit_test/static/CMakeLists.txt | 2 +- test/unit_test/static/cgs_test.cpp | 97 +++++++--------------------- 2 files changed, 24 insertions(+), 75 deletions(-) diff --git a/test/unit_test/static/CMakeLists.txt b/test/unit_test/static/CMakeLists.txt index 425da205..845e72f1 100644 --- a/test/unit_test/static/CMakeLists.txt +++ b/test/unit_test/static/CMakeLists.txt @@ -35,7 +35,7 @@ target_compile_options( add_library( unit_tests_static angle_test.cpp - # cgs_test.cpp + cgs_test.cpp chrono_test.cpp # concepts_test.cpp # custom_rep_test_min_expl.cpp diff --git a/test/unit_test/static/cgs_test.cpp b/test/unit_test/static/cgs_test.cpp index a8e7f330..7bd900f5 100644 --- a/test/unit_test/static/cgs_test.cpp +++ b/test/unit_test/static/cgs_test.cpp @@ -20,84 +20,33 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include -#include -#include -#include +#include +#include +#include +#include + +template + requires mp_units::is_scalar +inline constexpr bool mp_units::is_vector = true; namespace { using namespace mp_units; -using namespace mp_units::isq::si::cgs; +using namespace mp_units::cgs; +using namespace mp_units::cgs::unit_symbols; -/* ************** BASE DIMENSIONS **************** */ - -// length - -static_assert(centimetre::symbol == "cm"); - -// mass - -// time - -/* ************** DERIVED DIMENSIONS IN TERMS OF BASE UNITS **************** */ - -// speed - -static_assert((10_q_cm / 5_q_s).number() == 2); -static_assert((2_q_cm_per_s).number() == 2); -static_assert(10_q_cm / 5_q_s == 2_q_cm_per_s); -static_assert(10_q_cm / 2_q_cm_per_s == 5_q_s); -static_assert(10_q_cm == 2_q_cm_per_s * 5_q_s); - -static_assert(detail::unit_text() == "cm/s"); - -// area -static_assert(as_ratio(centimetre::mag / dimension_unit::mag) == ratio(1)); - -static_assert((1_q_cm * 1_q_cm).number() == 1); -static_assert((1_q_cm2).number() == 1); -static_assert(1_q_cm * 1_q_cm == 1_q_cm2); -static_assert(100_q_cm * 100_q_cm == area(1)); -static_assert(100_q_cm * 100_q_cm == length(1) * length(1)); -static_assert(100_q_cm2 / 10_q_cm == 10_q_cm); - -static_assert(detail::unit_text() == basic_symbol_text("cm²", "cm^2")); - -/* ************** DERIVED DIMENSIONS WITH NAMED UNITS **************** */ - -// acceleration - -static_assert(10_q_cm_per_s / 10_q_s == 1_q_Gal); -static_assert(10_q_cm_per_s / 1_q_Gal == 10_q_s); -static_assert(1_q_Gal * 10_q_s == 10_q_cm_per_s); - -// force - -static_assert(10_q_g * 10_q_Gal == 100_q_dyn); -static_assert(100_q_dyn / 10_q_g == 10_q_Gal); -static_assert(100_q_dyn / 10_q_Gal == 10_q_g); - -// pressure - -static_assert(10_q_dyn / 10_q_cm2 == 1_q_Ba); -static_assert(10_q_dyn / 1_q_Ba == 10_q_cm2); -static_assert(1_q_Ba * 10_q_cm2 == 10_q_dyn); - -// energy - -static_assert(10_q_dyn * 10_q_cm == 100_q_erg); -static_assert(100_q_erg / 10_q_cm == 10_q_dyn); -static_assert(100_q_erg / 10_q_dyn == 10_q_cm); - -/* ************** DERIVED DIMENSIONS IN TERMS OF OTHER UNITS **************** */ - -// power - -static_assert(10_q_erg / 10_q_s == 1_q_erg_per_s); -static_assert(1_q_erg_per_s * 10_q_s == 10_q_erg); -static_assert(10_q_erg / 1_q_erg_per_s == 10_q_s); - -static_assert(detail::unit_text() == "erg/s"); +// https://en.wikipedia.org/wiki/Centimetre%E2%80%93gram%E2%80%93second_system_of_units#Definitions_and_conversion_factors_of_CGS_units_in_mechanics +static_assert(isq::length(100 * cm) == isq::length(1 * si::metre)); +static_assert(isq::mass(1000 * g) == isq::mass(1 * si::kilogram)); +static_assert(isq::time(1 * s) == isq::time(1 * si::second)); +static_assert(isq::speed(100 * (cm / s)) == isq::speed(1 * (si::metre / si::second))); +static_assert(isq::acceleration(100 * Gal) == isq::acceleration(1 * (si::metre / square))); +static_assert(isq::force(100'000 * dyn) == isq::force(1 * si::newton)); +static_assert(isq::energy(10'000'000 * erg) == isq::energy(1 * si::joule)); +static_assert(isq::power(10'000'000 * (erg / s)) == isq::power(1 * si::watt)); +static_assert(isq::pressure(10 * Ba) == isq::pressure(1 * si::pascal)); +static_assert(isq::dynamic_viscosity(10 * P) == isq::dynamic_viscosity(1 * (si::pascal * si::second))); +static_assert(isq::kinematic_viscosity(10'000 * St) == isq::kinematic_viscosity(1 * (square / si::second))); +static_assert(isq::wavenumber(1 * K) == isq::wavenumber(100 * (1 / si::metre))); } // namespace