From 0986d1e812f75ad898cba5738f13a42c4176490e Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Sun, 1 Dec 2019 20:00:08 +0100 Subject: [PATCH] dimension_test enabled --- test/unit_test/static/CMakeLists.txt | 2 +- test/unit_test/static/dimension_test.cpp | 134 ++++++++++++++--------- 2 files changed, 82 insertions(+), 54 deletions(-) diff --git a/test/unit_test/static/CMakeLists.txt b/test/unit_test/static/CMakeLists.txt index 7f4cb00d..b0017fbc 100644 --- a/test/unit_test/static/CMakeLists.txt +++ b/test/unit_test/static/CMakeLists.txt @@ -23,7 +23,7 @@ add_library(unit_tests_static # cgs_test.cpp # custom_unit_test.cpp -# dimension_test.cpp + dimension_test.cpp # fixed_string_test.cpp # math_test.cpp # new_design.cpp diff --git a/test/unit_test/static/dimension_test.cpp b/test/unit_test/static/dimension_test.cpp index c476ce04..94cf5ea5 100644 --- a/test/unit_test/static/dimension_test.cpp +++ b/test/unit_test/static/dimension_test.cpp @@ -20,79 +20,107 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include "units/dimension.h" +#include "units/derived_dimension.h" +#include "units/unit.h" #include using namespace units; namespace { - struct d0 : base_dimension<"d0", ""> {}; - struct d1 : base_dimension<"d1", ""> {}; - struct d2 : base_dimension<"d2", ""> {}; - struct d3 : base_dimension<"d3", ""> {}; +struct u0 : unit {}; +struct d0 : base_dimension<"d0", u0> {}; +struct u1 : unit {}; +struct d1 : base_dimension<"d1", u1> {}; +struct u2 : unit {}; +struct d2 : base_dimension<"d2", u2> {}; +struct u3 : unit {}; +struct d3 : base_dimension<"d3", u3> {}; - // exp_invert +// exp_invert - static_assert(std::is_same_v>, exp>); - static_assert(std::is_same_v>, exp>); +static_assert(std::is_same_v>, exp>); +static_assert(std::is_same_v>, exp>); - // extract +// extract - template - struct typeinfo; +template +struct typeinfo; - template - using extract = detail::extract::type; +template +using extract = detail::extract::type; - static_assert(std::is_same_v, dimension<>>); - static_assert(std::is_same_v>, dimension>>); - static_assert(std::is_same_v, exp>, dimension, exp>>); - using dim0 = dimension<>; - using dim1 = dimension>; - using dim2 = dimension, exp>; - static_assert(std::is_same_v, exp>, dimension>>); - static_assert(std::is_same_v, exp>, dimension, exp>>); - static_assert(std::is_same_v, exp, exp>, dimension, exp, exp, exp>>); +static_assert(std::is_same_v, derived_dimension<>>); +static_assert(std::is_same_v>, derived_dimension>>); +static_assert(std::is_same_v, exp>, derived_dimension, exp>>); +using dim0 = derived_dimension<>; +using dim1 = derived_dimension>; +using dim2 = derived_dimension, exp>; +static_assert(std::is_same_v, exp>, derived_dimension>>); +static_assert(std::is_same_v, exp>, derived_dimension, exp>>); +static_assert(std::is_same_v, exp, exp>, + derived_dimension, exp, exp, exp>>); - // make_dimension +// dim_invert +static_assert(std::is_same_v>>, d0>); +static_assert(std::is_same_v>>, derived_dimension>>); +static_assert( + std::is_same_v, exp>>, derived_dimension, exp>>); - template - using make_dimension = detail::make_dimension; +// make_dimension - static_assert(std::is_same_v>, dimension>>); - static_assert(std::is_same_v, exp>, dimension, exp>>); - static_assert(std::is_same_v, exp>, dimension, exp>>); - static_assert(std::is_same_v, exp>, dimension>>); - static_assert(std::is_same_v, exp>, dimension<>>); - static_assert(std::is_same_v, exp>, dimension>>); - static_assert(std::is_same_v, exp>, dimension>>); - static_assert(std::is_same_v, exp>, dimension>>); +template +using make_dimension = detail::make_dimension; - static_assert(std::is_same_v, exp, exp, exp>, dimension, exp>>); - static_assert( - std::is_same_v, exp, exp, exp>, dimension, exp>>); +static_assert(std::is_same_v>, derived_dimension>>); +static_assert(std::is_same_v, exp>, derived_dimension, exp>>); +static_assert(std::is_same_v, exp>, derived_dimension, exp>>); +static_assert(std::is_same_v, exp>, derived_dimension>>); +static_assert(std::is_same_v, exp>, derived_dimension<>>); +static_assert(std::is_same_v, exp>, derived_dimension>>); +static_assert(std::is_same_v, exp>, derived_dimension>>); +static_assert(std::is_same_v, exp>, derived_dimension>>); - static_assert(std::is_same_v, exp, exp>, dimension>>); - static_assert(std::is_same_v, exp, exp>, dimension>>); - static_assert(std::is_same_v, exp, exp>, dimension>>); - static_assert(std::is_same_v, exp, exp, exp>, dimension<>>); +static_assert(std::is_same_v, exp, exp, exp>, + derived_dimension, exp>>); +static_assert(std::is_same_v, exp, exp, exp>, + derived_dimension, exp>>); - // dimension_multiply +static_assert(std::is_same_v, exp, exp>, derived_dimension>>); +static_assert(std::is_same_v, exp, exp>, derived_dimension>>); +static_assert(std::is_same_v, exp, exp>, derived_dimension>>); +static_assert(std::is_same_v, exp, exp, exp>, derived_dimension<>>); - static_assert( - std::is_same_v>, dimension>>, dimension, exp>>); - static_assert(std::is_same_v, exp, exp>, dimension>>, - dimension, exp, exp, exp>>); - static_assert(std::is_same_v, exp, exp>, dimension>>, - dimension, exp, exp>>); - static_assert(std::is_same_v, exp, exp>, dimension>>, - dimension, exp>>); +// dimension_multiply - // dimension_divide +static_assert(std::is_same_v>, derived_dimension>>, + derived_dimension, exp>>); +static_assert( + std::is_same_v>, d1>, derived_dimension, exp>>); +static_assert( + std::is_same_v>>, derived_dimension, exp>>); +static_assert(std::is_same_v, derived_dimension, exp>>); +static_assert(std::is_same_v< + dimension_multiply, exp, exp>, derived_dimension>>, + derived_dimension, exp, exp, exp>>); +static_assert(std::is_same_v< + dimension_multiply, exp, exp>, derived_dimension>>, + derived_dimension, exp, exp>>); +static_assert(std::is_same_v< + dimension_multiply, exp, exp>, derived_dimension>>, + derived_dimension, exp>>); +static_assert(std::is_same_v>, derived_dimension>>, + derived_dimension<>>); +static_assert(std::is_same_v>, derived_dimension>>, d0>); - static_assert( - std::is_same_v>, dimension>>, dimension, exp>>); - static_assert(std::is_same_v>, dimension>>, dimension<>>); +// dimension_divide + +static_assert(std::is_same_v>, derived_dimension>>, + derived_dimension, exp>>); +static_assert(std::is_same_v>, derived_dimension>>, + derived_dimension<>>); +static_assert(std::is_same_v>, derived_dimension>>, + derived_dimension<>>); +static_assert(std::is_same_v>, derived_dimension>>, d0>); } // namespace