From 0d4983bf92aa3f2f5ae61ce4e3ee123a5b1a76db Mon Sep 17 00:00:00 2001 From: Brendan Barnes Date: Sun, 14 Jul 2024 20:48:50 +0000 Subject: [PATCH] save --- tests/dimension_tests.cpp | 76 ++++++++++++++++++++++++--------------- tests/linalg_tests.cpp | 4 +-- 2 files changed, 49 insertions(+), 31 deletions(-) diff --git a/tests/dimension_tests.cpp b/tests/dimension_tests.cpp index e897926..d190cb8 100644 --- a/tests/dimension_tests.cpp +++ b/tests/dimension_tests.cpp @@ -12,14 +12,16 @@ TEST_CASE("Rational concept") { } TEST_CASE("Dimensional concept") { - CHECK(dimensional, std::ratio<0>, std::ratio<0>, std::ratio<0>, std::ratio<0>, std::ratio<0>, std::ratio<0>>>); + CHECK(dimensional, std::ratio<0>, std::ratio<0>, std::ratio<0>, std::ratio<0>, + std::ratio<0>, std::ratio<0>>>); CHECK_FALSE(dimensional); CHECK_FALSE(dimensional>); } TEST_CASE("Dimension struct") { - using test_dim = dimension, std::ratio<2>, std::ratio<3>, std::ratio<4>, std::ratio<5>, std::ratio<6>, std::ratio<7>>; - + using test_dim = dimension, std::ratio<2>, std::ratio<3>, std::ratio<4>, std::ratio<5>, std::ratio<6>, + std::ratio<7>>; + CHECK(std::is_same_v>); CHECK(std::is_same_v>); CHECK(std::is_same_v>); @@ -30,10 +32,12 @@ TEST_CASE("Dimension struct") { } TEST_CASE("Dimension multiplication") { - using dim1 = dimension, std::ratio<2>, std::ratio<3>, std::ratio<4>, std::ratio<5>, std::ratio<6>, std::ratio<7>>; - using dim2 = dimension, std::ratio<6>, std::ratio<5>, std::ratio<4>, std::ratio<3>, std::ratio<2>, std::ratio<1>>; + using dim1 = dimension, std::ratio<2>, std::ratio<3>, std::ratio<4>, std::ratio<5>, std::ratio<6>, + std::ratio<7>>; + using dim2 = dimension, std::ratio<6>, std::ratio<5>, std::ratio<4>, std::ratio<3>, std::ratio<2>, + std::ratio<1>>; using result = mult_t; - + CHECK(std::is_same_v>); CHECK(std::is_same_v>); CHECK(std::is_same_v>); @@ -44,10 +48,12 @@ TEST_CASE("Dimension multiplication") { } TEST_CASE("Dimension division") { - using dim1 = dimension, std::ratio<8>, std::ratio<8>, std::ratio<8>, std::ratio<8>, std::ratio<8>, std::ratio<8>>; - using dim2 = dimension, std::ratio<3>, std::ratio<3>, std::ratio<3>, std::ratio<3>, std::ratio<3>, std::ratio<3>>; + using dim1 = dimension, std::ratio<8>, std::ratio<8>, std::ratio<8>, std::ratio<8>, std::ratio<8>, + std::ratio<8>>; + using dim2 = dimension, std::ratio<3>, std::ratio<3>, std::ratio<3>, std::ratio<3>, std::ratio<3>, + std::ratio<3>>; using result = squint::div_t; - + CHECK(std::is_same_v>); CHECK(std::is_same_v>); CHECK(std::is_same_v>); @@ -58,10 +64,11 @@ TEST_CASE("Dimension division") { } TEST_CASE("Dimension power") { - using base_dim = dimension, std::ratio<2>, std::ratio<3>, std::ratio<4>, std::ratio<5>, std::ratio<6>, std::ratio<7>>; + using base_dim = dimension, std::ratio<2>, std::ratio<3>, std::ratio<4>, std::ratio<5>, std::ratio<6>, + std::ratio<7>>; using squared = pow_t; using cubed = pow_t; - + CHECK(std::is_same_v>); CHECK(std::is_same_v>); CHECK(std::is_same_v>); @@ -69,7 +76,7 @@ TEST_CASE("Dimension power") { CHECK(std::is_same_v>); CHECK(std::is_same_v>); CHECK(std::is_same_v>); - + CHECK(std::is_same_v>); CHECK(std::is_same_v>); CHECK(std::is_same_v>); @@ -80,9 +87,10 @@ TEST_CASE("Dimension power") { } TEST_CASE("Dimension root") { - using base_dim = dimension, std::ratio<4>, std::ratio<6>, std::ratio<8>, std::ratio<10>, std::ratio<12>, std::ratio<14>>; + using base_dim = dimension, std::ratio<4>, std::ratio<6>, std::ratio<8>, std::ratio<10>, + std::ratio<12>, std::ratio<14>>; using sqrt_dim = root_t; - + CHECK(std::is_same_v>); CHECK(std::is_same_v>); CHECK(std::is_same_v>); @@ -93,9 +101,10 @@ TEST_CASE("Dimension root") { } TEST_CASE("Dimension inverse") { - using base_dim = dimension, std::ratio<2>, std::ratio<3>, std::ratio<4>, std::ratio<5>, std::ratio<6>, std::ratio<7>>; + using base_dim = dimension, std::ratio<2>, std::ratio<3>, std::ratio<4>, std::ratio<5>, std::ratio<6>, + std::ratio<7>>; using inv_dim = inv_t; - + CHECK(std::is_same_v>); CHECK(std::is_same_v>); CHECK(std::is_same_v>); @@ -107,20 +116,28 @@ TEST_CASE("Dimension inverse") { TEST_CASE("Predefined dimensions") { using namespace dimensions; - - CHECK(std::is_same_v, std::ratio<0>, std::ratio<0>, std::ratio<0>, std::ratio<0>, std::ratio<0>, std::ratio<0>>>); - CHECK(std::is_same_v, std::ratio<0>, std::ratio<0>, std::ratio<0>, std::ratio<0>, std::ratio<0>, std::ratio<0>>>); - CHECK(std::is_same_v, std::ratio<1>, std::ratio<0>, std::ratio<0>, std::ratio<0>, std::ratio<0>, std::ratio<0>>>); - CHECK(std::is_same_v, std::ratio<0>, std::ratio<1>, std::ratio<0>, std::ratio<0>, std::ratio<0>, std::ratio<0>>>); - CHECK(std::is_same_v, std::ratio<0>, std::ratio<0>, std::ratio<1>, std::ratio<0>, std::ratio<0>, std::ratio<0>>>); - CHECK(std::is_same_v, std::ratio<0>, std::ratio<0>, std::ratio<0>, std::ratio<1>, std::ratio<0>, std::ratio<0>>>); - CHECK(std::is_same_v, std::ratio<0>, std::ratio<0>, std::ratio<0>, std::ratio<0>, std::ratio<1>, std::ratio<0>>>); - CHECK(std::is_same_v, std::ratio<0>, std::ratio<0>, std::ratio<0>, std::ratio<0>, std::ratio<0>, std::ratio<1>>>); + + CHECK(std::is_same_v, std::ratio<0>, std::ratio<0>, std::ratio<0>, + std::ratio<0>, std::ratio<0>, std::ratio<0>>>); + CHECK(std::is_same_v, std::ratio<0>, std::ratio<0>, std::ratio<0>, std::ratio<0>, + std::ratio<0>, std::ratio<0>>>); + CHECK(std::is_same_v, std::ratio<1>, std::ratio<0>, std::ratio<0>, + std::ratio<0>, std::ratio<0>, std::ratio<0>>>); + CHECK(std::is_same_v, std::ratio<0>, std::ratio<1>, std::ratio<0>, std::ratio<0>, + std::ratio<0>, std::ratio<0>>>); + CHECK(std::is_same_v, std::ratio<0>, std::ratio<0>, std::ratio<1>, + std::ratio<0>, std::ratio<0>, std::ratio<0>>>); + CHECK(std::is_same_v, std::ratio<0>, std::ratio<0>, std::ratio<0>, std::ratio<1>, + std::ratio<0>, std::ratio<0>>>); + CHECK(std::is_same_v, std::ratio<0>, std::ratio<0>, std::ratio<0>, + std::ratio<0>, std::ratio<1>, std::ratio<0>>>); + CHECK(std::is_same_v, std::ratio<0>, std::ratio<0>, std::ratio<0>, + std::ratio<0>, std::ratio<0>, std::ratio<1>>>); } TEST_CASE("Derived dimensions") { using namespace dimensions; - + CHECK(std::is_same_v>); CHECK(std::is_same_v>); CHECK(std::is_same_v>); @@ -139,7 +156,7 @@ TEST_CASE("Derived dimensions") { TEST_CASE("Complex derived dimensions") { using namespace squint::dimensions; - + using force_length = mult_t; // force = M * L * T^-2 // length = L @@ -157,8 +174,9 @@ TEST_CASE("Complex derived dimensions") { using complex_dim = mult_t; // complex_dim = (M * L^2 * T^-4) * K^(1/2) = M * L^2 * T^-4 * K^(1/2) - using expected = dimension, std::ratio<-4>, std::ratio<1>, std::ratio<1, 2>, std::ratio<0>, std::ratio<0>, std::ratio<0>>; - + using expected = dimension, std::ratio<-4>, std::ratio<1>, std::ratio<1, 2>, std::ratio<0>, + std::ratio<0>, std::ratio<0>>; + CHECK(std::is_same_v); // Let's also check each component individually diff --git a/tests/linalg_tests.cpp b/tests/linalg_tests.cpp index faf3066..6cda6b7 100644 --- a/tests/linalg_tests.cpp +++ b/tests/linalg_tests.cpp @@ -495,8 +495,8 @@ TEST_CASE("Matrix operations with quantity types") { quantity>>, "Result should be a vector of velocity * mass (momentum)"); - CHECK(result[0] == doctest::Approx(5)); - CHECK(result[1] == doctest::Approx(8)); + CHECK(result[0].value() == doctest::Approx(5)); + CHECK(result[1].value() == doctest::Approx(8)); } SUBCASE("Matrix addition with force") {