9#ifndef DRYCHEM_CPP_UNITS_TESTS_TESTMATHFUNCTIONS_TESTBASICMATHFUNCTIONS_HPP
10#define DRYCHEM_CPP_UNITS_TESTS_TESTMATHFUNCTIONS_TESTBASICMATHFUNCTIONS_HPP
15#include <gtest/gtest.h>
22GTEST_TEST(testBasicMathFunctions, absoluteValueReturnsPositiveValueOfPhysicalQuantity)
24 constexpr Length positiveLength = 1.0_m;
25 constexpr Length negativeLength = -1.0_m;
27 ASSERT_TRUE(Math::abs(positiveLength) == Math::abs(negativeLength));
28 ASSERT_FALSE(Math::abs(negativeLength) == negativeLength);
31GTEST_TEST(testBasicMathFunctions, exponentialFunctionOverloadsAreEquivalentToTheirCorrespondingCmathFunctions)
33 constexpr Length length = 2.0_m;
35 ASSERT_DOUBLE_EQ(std::exp(length.
getMagnitude()), Math::exp(length).getMagnitude());
36 ASSERT_DOUBLE_EQ(std::exp2(length.
getMagnitude()), Math::exp2(length).getMagnitude());
37 ASSERT_DOUBLE_EQ(std::log(length.
getMagnitude()), Math::log(length).getMagnitude());
38 ASSERT_DOUBLE_EQ(std::log2(length.
getMagnitude()), Math::log2(length).getMagnitude());
39 ASSERT_DOUBLE_EQ(std::log10(length.
getMagnitude()), Math::log10(length).getMagnitude());
42GTEST_TEST(testBasicMathFunctions, powerFunctionOverloadsAreEquivalentToTheirCorrespondingCmathFunctions)
44 constexpr Length length1 = 5.0_m;
49 ASSERT_DOUBLE_EQ(1.0, dimless.getMagnitude());
51 ASSERT_DOUBLE_EQ(25.0,
Math::pow<2>(length1).getMagnitude());
54 ASSERT_DOUBLE_EQ(125.0,
Math::pow<3>(length1).getMagnitude());
55 ASSERT_TRUE(length1 * length1 * length1 ==
Math::pow<3>(length1));
57 constexpr Area area = 64.0_m2;
58 constexpr Volume volume = 64.0_m3;
64GTEST_TEST(testBasicMathFunctions, trigonometricFunctionOverloadsAreEquivalentToTheirCorrespondingCmathFunctions)
68 ASSERT_DOUBLE_EQ(std::sin(angle.
getMagnitude()), Math::sin(angle).getMagnitude());
69 ASSERT_DOUBLE_EQ(std::cos(angle.
getMagnitude()), Math::cos(angle).getMagnitude());
70 ASSERT_DOUBLE_EQ(std::tan(angle.
getMagnitude()), Math::tan(angle).getMagnitude());
71 ASSERT_DOUBLE_EQ(std::tanh(angle.
getMagnitude()), Math::tanh(angle).getMagnitude());
73 ASSERT_TRUE(std::isnan(Math::asin(angle).getMagnitude()));
74 ASSERT_TRUE(std::isnan(Math::acos(angle).getMagnitude()));
77GTEST_TEST(testBasicMathFunctions, hyperbolicFunctionOverloadsAreEquivalentToTheirCorrespondingCmathFunctions)
81 ASSERT_DOUBLE_EQ(std::sinh(angle.
getMagnitude()), Math::sinh(angle).getMagnitude());
82 ASSERT_DOUBLE_EQ(std::cosh(angle.
getMagnitude()), Math::cosh(angle).getMagnitude());
83 ASSERT_DOUBLE_EQ(std::tanh(angle.
getMagnitude()), Math::tanh(angle).getMagnitude());
84 ASSERT_DOUBLE_EQ(std::asinh(angle.
getMagnitude()), Math::asinh(angle).getMagnitude());
85 ASSERT_DOUBLE_EQ(std::acosh(angle.
getMagnitude()), Math::acosh(angle).getMagnitude());
86 ASSERT_DOUBLE_EQ(std::acosh(angle.
getMagnitude()), Math::acosh(angle).getMagnitude());
constexpr long double getMagnitude() const noexcept
Definition physicalQuantity.hpp:50
GTEST_TEST(testBasicMathFunctions, absoluteValueReturnsPositiveValueOfPhysicalQuantity)
Definition testBasicMathFunctions.hpp:22
constexpr DimensionlessQuantity pi
Definition physicalQuantities.hpp:213
Definition physicalQuantities.hpp:94
constexpr auto sqrt(const PhysicalQuantity< Dimensionality< L, M, T, I, Th, N, J > > &physicalQuantity) noexcept
Definition basicMath.hpp:85
constexpr auto pow(const PhysicalQuantity< Dimensionality< L, M, T, I, Th, N, J > > &physicalQuantity) noexcept
Definition basicMath.hpp:74
constexpr auto cbrt(const PhysicalQuantity< Dimensionality< L, M, T, I, Th, N, J > > &physicalQuantity) noexcept
Definition basicMath.hpp:94
Definition basicMath.hpp:17
PhysicalQuantity< Dimensionality< 2, 0, 0 > > Area
Definition physicalQuantities.hpp:42
PhysicalQuantity< Dimensionality< 0, 0, 0 > > Angle
Definition physicalQuantities.hpp:31
PhysicalQuantity< Dimensionality<> > DimensionlessQuantity
Definition physicalQuantities.hpp:22
PhysicalQuantity< Dimensionality<-1, 0, 0 > > WaveNumber
Definition physicalQuantities.hpp:27
PhysicalQuantity< Dimensionality< 3, 0, 0 > > Volume
Definition physicalQuantities.hpp:48
PhysicalQuantity< Dimensionality< 1, 0, 0 > > Length
Definition physicalQuantities.hpp:37