feat: preventing possible future units crash when using namespace std;

Resolves #317
This commit is contained in:
Mateusz Pusz
2022-12-29 20:18:48 +01:00
parent 6b72dd39c1
commit 2cf736a1e6
123 changed files with 1205 additions and 1092 deletions
+50 -50
View File
@@ -21,18 +21,18 @@
// SOFTWARE.
#include <catch2/catch_test_macros.hpp>
#include <units/quantity_io.h>
#include <units/random.h>
#include <units/systems/si/unit_symbols.h>
#include <units/systems/si/units.h>
#include <mp_units/quantity_io.h>
#include <mp_units/random.h>
#include <mp_units/systems/si/unit_symbols.h>
#include <mp_units/systems/si/units.h>
#include <array>
#include <initializer_list>
#include <random>
#include <vector>
using namespace units;
using namespace units::si::unit_symbols;
using namespace mp_units;
using namespace mp_units::si::unit_symbols;
TEST_CASE("uniform_int_distribution")
{
@@ -41,7 +41,7 @@ TEST_CASE("uniform_int_distribution")
SECTION("default")
{
auto dist = units::uniform_int_distribution<q>();
auto dist = mp_units::uniform_int_distribution<q>();
CHECK(dist.a() == q::zero());
CHECK(dist.b() == q::max());
@@ -53,7 +53,7 @@ TEST_CASE("uniform_int_distribution")
constexpr rep b = 5;
auto stl_dist = std::uniform_int_distribution(a, b);
auto units_dist = units::uniform_int_distribution(q(a), q(b));
auto units_dist = mp_units::uniform_int_distribution(q(a), q(b));
CHECK(units_dist.a() == q(stl_dist.a()));
CHECK(units_dist.b() == q(stl_dist.b()));
@@ -69,7 +69,7 @@ TEST_CASE("uniform_real_distribution")
SECTION("default")
{
auto dist = units::uniform_real_distribution<q>();
auto dist = mp_units::uniform_real_distribution<q>();
CHECK(dist.a() == q::zero());
CHECK(dist.b() == q::one());
@@ -81,7 +81,7 @@ TEST_CASE("uniform_real_distribution")
constexpr rep b = 5.0;
auto stl_dist = std::uniform_real_distribution(a, b);
auto units_dist = units::uniform_real_distribution(q(a), q(b));
auto units_dist = mp_units::uniform_real_distribution(q(a), q(b));
CHECK(units_dist.a() == q(stl_dist.a()));
CHECK(units_dist.b() == q(stl_dist.b()));
@@ -97,7 +97,7 @@ TEST_CASE("binomial_distribution")
SECTION("default")
{
auto dist = units::binomial_distribution<q>();
auto dist = mp_units::binomial_distribution<q>();
CHECK(dist.p() == 0.5);
CHECK(dist.t() == q::one());
@@ -109,7 +109,7 @@ TEST_CASE("binomial_distribution")
constexpr double p = 0.25;
auto stl_dist = std::binomial_distribution(t, p);
auto units_dist = units::binomial_distribution(q(t), p);
auto units_dist = mp_units::binomial_distribution(q(t), p);
CHECK(units_dist.p() == stl_dist.p());
CHECK(units_dist.t() == q(stl_dist.t()));
@@ -125,7 +125,7 @@ TEST_CASE("negative_binomial_distribution")
SECTION("default")
{
auto dist = units::negative_binomial_distribution<q>();
auto dist = mp_units::negative_binomial_distribution<q>();
CHECK(dist.p() == 0.5);
CHECK(dist.k() == q::one());
@@ -137,7 +137,7 @@ TEST_CASE("negative_binomial_distribution")
constexpr double p = 0.25;
auto stl_dist = std::negative_binomial_distribution(k, p);
auto units_dist = units::negative_binomial_distribution(q(k), p);
auto units_dist = mp_units::negative_binomial_distribution(q(k), p);
CHECK(units_dist.p() == stl_dist.p());
CHECK(units_dist.k() == q(stl_dist.k()));
@@ -153,7 +153,7 @@ TEST_CASE("geometric_distribution")
SECTION("default")
{
auto dist = units::geometric_distribution<q>();
auto dist = mp_units::geometric_distribution<q>();
CHECK(dist.p() == 0.5);
}
@@ -163,7 +163,7 @@ TEST_CASE("geometric_distribution")
constexpr double p = 0.25;
auto stl_dist = std::geometric_distribution<rep>(p);
auto units_dist = units::geometric_distribution<q>(p);
auto units_dist = mp_units::geometric_distribution<q>(p);
CHECK(units_dist.p() == stl_dist.p());
CHECK(units_dist.min() == q(stl_dist.min()));
@@ -178,7 +178,7 @@ TEST_CASE("poisson_distribution")
SECTION("default")
{
auto dist = units::poisson_distribution<q>();
auto dist = mp_units::poisson_distribution<q>();
CHECK(dist.mean() == 1.0);
}
@@ -188,7 +188,7 @@ TEST_CASE("poisson_distribution")
constexpr double mean = 5.0;
auto stl_dist = std::poisson_distribution<rep>(mean);
auto units_dist = units::poisson_distribution<q>(mean);
auto units_dist = mp_units::poisson_distribution<q>(mean);
CHECK(units_dist.mean() == stl_dist.mean());
CHECK(units_dist.min() == q(stl_dist.min()));
@@ -203,7 +203,7 @@ TEST_CASE("exponential_distribution")
SECTION("default")
{
auto dist = units::exponential_distribution<q>();
auto dist = mp_units::exponential_distribution<q>();
CHECK(dist.lambda() == 1.0);
}
@@ -213,7 +213,7 @@ TEST_CASE("exponential_distribution")
constexpr double lambda = 2.0;
auto stl_dist = std::exponential_distribution<rep>(lambda);
auto units_dist = units::exponential_distribution<q>(lambda);
auto units_dist = mp_units::exponential_distribution<q>(lambda);
CHECK(units_dist.lambda() == stl_dist.lambda());
CHECK(units_dist.min() == q(stl_dist.min()));
@@ -228,7 +228,7 @@ TEST_CASE("gamma_distribution")
SECTION("default")
{
auto dist = units::gamma_distribution<q>();
auto dist = mp_units::gamma_distribution<q>();
CHECK(dist.alpha() == 1.0);
CHECK(dist.beta() == 1.0);
@@ -240,7 +240,7 @@ TEST_CASE("gamma_distribution")
constexpr double beta = 2.0;
auto stl_dist = std::gamma_distribution<rep>(alpha, beta);
auto units_dist = units::gamma_distribution<q>(alpha, beta);
auto units_dist = mp_units::gamma_distribution<q>(alpha, beta);
CHECK(units_dist.alpha() == stl_dist.alpha());
CHECK(units_dist.beta() == stl_dist.beta());
@@ -256,7 +256,7 @@ TEST_CASE("weibull_distribution")
SECTION("default")
{
auto dist = units::weibull_distribution<q>();
auto dist = mp_units::weibull_distribution<q>();
CHECK(dist.a() == 1.0);
CHECK(dist.b() == 1.0);
@@ -268,7 +268,7 @@ TEST_CASE("weibull_distribution")
constexpr rep b = 2.0;
auto stl_dist = std::weibull_distribution(a, b);
auto units_dist = units::weibull_distribution<q>(a, b);
auto units_dist = mp_units::weibull_distribution<q>(a, b);
CHECK(units_dist.a() == stl_dist.a());
CHECK(units_dist.b() == stl_dist.b());
@@ -284,7 +284,7 @@ TEST_CASE("extreme_value_distribution")
SECTION("default")
{
auto dist = units::extreme_value_distribution<q>();
auto dist = mp_units::extreme_value_distribution<q>();
CHECK(dist.a() == q::zero());
CHECK(dist.b() == 1.0);
@@ -296,7 +296,7 @@ TEST_CASE("extreme_value_distribution")
constexpr rep b = 2.0;
auto stl_dist = std::extreme_value_distribution(a, b);
auto units_dist = units::extreme_value_distribution<q>(q(a), b);
auto units_dist = mp_units::extreme_value_distribution<q>(q(a), b);
CHECK(units_dist.a() == q(stl_dist.a()));
CHECK(units_dist.b() == stl_dist.b());
@@ -312,7 +312,7 @@ TEST_CASE("normal_distribution")
SECTION("default")
{
auto dist = units::normal_distribution<q>();
auto dist = mp_units::normal_distribution<q>();
CHECK(dist.mean() == q::zero());
CHECK(dist.stddev() == q::one());
@@ -324,7 +324,7 @@ TEST_CASE("normal_distribution")
constexpr rep stddev = 2.0;
auto stl_dist = std::normal_distribution(mean, stddev);
auto units_dist = units::normal_distribution(q(mean), q(stddev));
auto units_dist = mp_units::normal_distribution(q(mean), q(stddev));
CHECK(units_dist.mean() == q(stl_dist.mean()));
CHECK(units_dist.stddev() == q(stl_dist.stddev()));
@@ -340,7 +340,7 @@ TEST_CASE("lognormal_distribution")
SECTION("default")
{
auto dist = units::lognormal_distribution<q>();
auto dist = mp_units::lognormal_distribution<q>();
CHECK(dist.m() == q::zero());
CHECK(dist.s() == q::one());
@@ -352,7 +352,7 @@ TEST_CASE("lognormal_distribution")
constexpr rep s = 2.0;
auto stl_dist = std::lognormal_distribution(m, s);
auto units_dist = units::lognormal_distribution(q(m), q(s));
auto units_dist = mp_units::lognormal_distribution(q(m), q(s));
CHECK(units_dist.m() == q(stl_dist.m()));
CHECK(units_dist.s() == q(stl_dist.s()));
@@ -368,7 +368,7 @@ TEST_CASE("chi_squared_distribution")
SECTION("default")
{
auto dist = units::chi_squared_distribution<q>();
auto dist = mp_units::chi_squared_distribution<q>();
CHECK(dist.n() == 1.0);
}
@@ -378,7 +378,7 @@ TEST_CASE("chi_squared_distribution")
constexpr rep n = 5.0;
auto stl_dist = std::chi_squared_distribution(n);
auto units_dist = units::chi_squared_distribution<q>(n);
auto units_dist = mp_units::chi_squared_distribution<q>(n);
CHECK(units_dist.n() == stl_dist.n());
CHECK(units_dist.min() == q(stl_dist.min()));
@@ -393,7 +393,7 @@ TEST_CASE("cauchy_distribution")
SECTION("default")
{
auto dist = units::cauchy_distribution<q>();
auto dist = mp_units::cauchy_distribution<q>();
CHECK(dist.a() == q::zero());
CHECK(dist.b() == q::one());
@@ -405,7 +405,7 @@ TEST_CASE("cauchy_distribution")
constexpr rep b = 2.0;
auto stl_dist = std::cauchy_distribution(a, b);
auto units_dist = units::cauchy_distribution(q(a), q(b));
auto units_dist = mp_units::cauchy_distribution(q(a), q(b));
CHECK(units_dist.a() == q(stl_dist.a()));
CHECK(units_dist.b() == q(stl_dist.b()));
@@ -421,7 +421,7 @@ TEST_CASE("fisher_f_distribution")
SECTION("default")
{
auto dist = units::fisher_f_distribution<q>();
auto dist = mp_units::fisher_f_distribution<q>();
CHECK(dist.m() == 1.0);
CHECK(dist.n() == 1.0);
@@ -433,7 +433,7 @@ TEST_CASE("fisher_f_distribution")
constexpr rep n = 2.0;
auto stl_dist = std::fisher_f_distribution<rep>(m, n);
auto units_dist = units::fisher_f_distribution<q>(m, n);
auto units_dist = mp_units::fisher_f_distribution<q>(m, n);
CHECK(units_dist.m() == stl_dist.m());
CHECK(units_dist.n() == stl_dist.n());
@@ -449,7 +449,7 @@ TEST_CASE("student_t_distribution")
SECTION("default")
{
auto dist = units::student_t_distribution<q>();
auto dist = mp_units::student_t_distribution<q>();
CHECK(dist.n() == 1.0);
}
@@ -459,7 +459,7 @@ TEST_CASE("student_t_distribution")
constexpr rep n = 2.0;
auto stl_dist = std::student_t_distribution<rep>(n);
auto units_dist = units::student_t_distribution<q>(n);
auto units_dist = mp_units::student_t_distribution<q>(n);
CHECK(units_dist.n() == stl_dist.n());
CHECK(units_dist.min() == q(stl_dist.min()));
@@ -475,7 +475,7 @@ TEST_CASE("discrete_distribution")
SECTION("default")
{
auto stl_dist = std::discrete_distribution<rep>();
auto units_dist = units::discrete_distribution<q>();
auto units_dist = mp_units::discrete_distribution<q>();
CHECK(units_dist.min() == q(stl_dist.min()));
CHECK(units_dist.max() == q(stl_dist.max()));
@@ -487,7 +487,7 @@ TEST_CASE("discrete_distribution")
constexpr std::array<double, 3> weights = {1.0, 2.0, 3.0};
auto stl_dist = std::discrete_distribution<rep>(weights.cbegin(), weights.cend());
auto units_dist = units::discrete_distribution<q>(weights.cbegin(), weights.cend());
auto units_dist = mp_units::discrete_distribution<q>(weights.cbegin(), weights.cend());
CHECK(units_dist.probabilities() == stl_dist.probabilities());
}
@@ -497,7 +497,7 @@ TEST_CASE("discrete_distribution")
std::initializer_list<double> weights = {1.0, 2.0, 3.0};
auto stl_dist = std::discrete_distribution<rep>(weights);
auto units_dist = units::discrete_distribution<q>(weights);
auto units_dist = mp_units::discrete_distribution<q>(weights);
CHECK(units_dist.probabilities() == stl_dist.probabilities());
}
@@ -508,7 +508,7 @@ TEST_CASE("discrete_distribution")
constexpr double xmin = 1, xmax = 3;
auto stl_dist = std::discrete_distribution<rep>(count, xmin, xmax, [](double val) { return val; });
auto units_dist = units::discrete_distribution<q>(count, xmin, xmax, [](double val) { return val; });
auto units_dist = mp_units::discrete_distribution<q>(count, xmin, xmax, [](double val) { return val; });
CHECK(units_dist.probabilities() == stl_dist.probabilities());
}
@@ -526,7 +526,7 @@ TEST_CASE("piecewise_constant_distribution")
SECTION("default")
{
auto stl_dist = std::piecewise_constant_distribution<rep>();
auto units_dist = units::piecewise_constant_distribution<q>();
auto units_dist = mp_units::piecewise_constant_distribution<q>();
CHECK(units_dist.min() == q(stl_dist.min()));
CHECK(units_dist.max() == q(stl_dist.max()));
@@ -546,7 +546,7 @@ TEST_CASE("piecewise_constant_distribution")
auto stl_dist =
std::piecewise_constant_distribution<rep>(intervals_rep.cbegin(), intervals_rep.cend(), weights.cbegin());
auto units_dist =
units::piecewise_constant_distribution<q>(intervals_qty.cbegin(), intervals_qty.cend(), weights.cbegin());
mp_units::piecewise_constant_distribution<q>(intervals_qty.cbegin(), intervals_qty.cend(), weights.cbegin());
CHECK(stl_dist.intervals() == intervals_rep_vec);
CHECK(units_dist.intervals() == intervals_qty_vec);
@@ -560,7 +560,7 @@ TEST_CASE("piecewise_constant_distribution")
3.0 * isq::length[si::metre]};
auto stl_dist = std::piecewise_constant_distribution<rep>(intervals_rep, [](rep val) { return val; });
auto units_dist = units::piecewise_constant_distribution<q>(intervals_qty, [](q qty) { return qty.number(); });
auto units_dist = mp_units::piecewise_constant_distribution<q>(intervals_qty, [](q qty) { return qty.number(); });
CHECK(units_dist.intervals() == intervals_qty_vec);
CHECK(units_dist.densities() == stl_dist.densities());
@@ -574,7 +574,7 @@ TEST_CASE("piecewise_constant_distribution")
auto stl_dist = std::piecewise_constant_distribution<rep>(nw, xmin_rep, xmax_rep, [](rep val) { return val; });
auto units_dist =
units::piecewise_constant_distribution<q>(nw, xmin_qty, xmax_qty, [](q qty) { return qty.number(); });
mp_units::piecewise_constant_distribution<q>(nw, xmin_qty, xmax_qty, [](q qty) { return qty.number(); });
CHECK(units_dist.intervals() == intervals_qty_vec);
CHECK(units_dist.densities() == stl_dist.densities());
@@ -593,7 +593,7 @@ TEST_CASE("piecewise_linear_distribution")
SECTION("default")
{
auto stl_dist = std::piecewise_linear_distribution<rep>();
auto units_dist = units::piecewise_linear_distribution<q>();
auto units_dist = mp_units::piecewise_linear_distribution<q>();
CHECK(units_dist.min() == q(stl_dist.min()));
CHECK(units_dist.max() == q(stl_dist.max()));
@@ -613,7 +613,7 @@ TEST_CASE("piecewise_linear_distribution")
auto stl_dist =
std::piecewise_linear_distribution<rep>(intervals_rep.cbegin(), intervals_rep.cend(), weights.cbegin());
auto units_dist =
units::piecewise_linear_distribution<q>(intervals_qty.cbegin(), intervals_qty.cend(), weights.cbegin());
mp_units::piecewise_linear_distribution<q>(intervals_qty.cbegin(), intervals_qty.cend(), weights.cbegin());
CHECK(stl_dist.intervals() == intervals_rep_vec);
CHECK(units_dist.intervals() == intervals_qty_vec);
@@ -627,7 +627,7 @@ TEST_CASE("piecewise_linear_distribution")
3.0 * isq::length[si::metre]};
auto stl_dist = std::piecewise_linear_distribution<rep>(intervals_rep, [](rep val) { return val; });
auto units_dist = units::piecewise_linear_distribution<q>(intervals_qty, [](q qty) { return qty.number(); });
auto units_dist = mp_units::piecewise_linear_distribution<q>(intervals_qty, [](q qty) { return qty.number(); });
CHECK(units_dist.intervals() == intervals_qty_vec);
CHECK(units_dist.densities() == stl_dist.densities());
@@ -641,7 +641,7 @@ TEST_CASE("piecewise_linear_distribution")
auto stl_dist = std::piecewise_linear_distribution<rep>(nw, xmin_rep, xmax_rep, [](rep val) { return val; });
auto units_dist =
units::piecewise_linear_distribution<q>(nw, xmin_qty, xmax_qty, [](q qty) { return qty.number(); });
mp_units::piecewise_linear_distribution<q>(nw, xmin_qty, xmax_qty, [](q qty) { return qty.number(); });
CHECK(units_dist.intervals() == intervals_qty_vec);
CHECK(units_dist.densities() == stl_dist.densities());