From 09abf1b529b4226f585ecfbb20866715b901755b Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 1 Dec 2021 13:34:22 +0800 Subject: +fpm --- Client/ThirdParty/fpm/tests/classification.cpp | 165 +++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 Client/ThirdParty/fpm/tests/classification.cpp (limited to 'Client/ThirdParty/fpm/tests/classification.cpp') diff --git a/Client/ThirdParty/fpm/tests/classification.cpp b/Client/ThirdParty/fpm/tests/classification.cpp new file mode 100644 index 0000000..832b140 --- /dev/null +++ b/Client/ThirdParty/fpm/tests/classification.cpp @@ -0,0 +1,165 @@ +#include "common.hpp" +#include + +TEST(classification, fpclassify) +{ + using P = fpm::fixed; + EXPECT_EQ(FP_NORMAL, fpclassify(P(1.0))); + EXPECT_EQ(FP_NORMAL, fpclassify(P(-1.0))); + EXPECT_EQ(FP_NORMAL, fpclassify(P(0.5))); + EXPECT_EQ(FP_ZERO, fpclassify(P(0))); +} + +TEST(classification, isfinite) +{ + using P = fpm::fixed; + EXPECT_TRUE(isfinite(P(1.0))); + EXPECT_TRUE(isfinite(P(-1.0))); + EXPECT_TRUE(isfinite(P(0.5))); + EXPECT_TRUE(isfinite(P(0))); +} + +TEST(classification, isinf) +{ + using P = fpm::fixed; + EXPECT_FALSE(isinf(P(1.0))); + EXPECT_FALSE(isinf(P(-1.0))); + EXPECT_FALSE(isinf(P(0.5))); + EXPECT_FALSE(isinf(P(0))); +} + +TEST(classification, isnan) +{ + using P = fpm::fixed; + EXPECT_FALSE(isnan(P(1.0))); + EXPECT_FALSE(isnan(P(-1.0))); + EXPECT_FALSE(isnan(P(0.5))); + EXPECT_FALSE(isnan(P(0))); +} + +TEST(classification, isnormal) +{ + using P = fpm::fixed; + EXPECT_TRUE(isnormal(P(1.0))); + EXPECT_TRUE(isnormal(P(-1.0))); + EXPECT_TRUE(isnormal(P(0.5))); + EXPECT_FALSE(isnormal(P(0))); +} + +TEST(classification, signbit) +{ + using P = fpm::fixed; + EXPECT_FALSE(signbit(P(1.0))); + EXPECT_TRUE(signbit(P(-1.0))); + EXPECT_FALSE(signbit(P(0.5))); + EXPECT_FALSE(signbit(P(0))); +} + +TEST(classification, isgreater) +{ + using P = fpm::fixed; + EXPECT_FALSE(isgreater(P(1.0), P(2.0))); + EXPECT_FALSE(isgreater(P(1.0), P(1.0))); + EXPECT_TRUE(isgreater(P(2.0), P(1.0))); + EXPECT_FALSE(isgreater(P(-2.0), P(-1.0))); + EXPECT_FALSE(isgreater(P(-2.0), P(-2.0))); + EXPECT_TRUE(isgreater(P(-1.0), P(-2.0))); + EXPECT_FALSE(isgreater(P(0.25), P(0.5))); + EXPECT_FALSE(isgreater(P(0.25), P(0.25))); + EXPECT_TRUE(isgreater(P(0.5), P(0.25))); + EXPECT_FALSE(isgreater(P(-1), P(0))); + EXPECT_FALSE(isgreater(P(-1), P(-1))); + EXPECT_TRUE(isgreater(P(0), P(-1))); + EXPECT_FALSE(isgreater(P(0), P(0))); +} + +TEST(classification, isgreaterequal) +{ + using P = fpm::fixed; + EXPECT_FALSE(isgreaterequal(P(1.0), P(2.0))); + EXPECT_TRUE(isgreaterequal(P(1.0), P(1.0))); + EXPECT_TRUE(isgreaterequal(P(2.0), P(1.0))); + EXPECT_FALSE(isgreaterequal(P(-2.0), P(-1.0))); + EXPECT_TRUE(isgreaterequal(P(-2.0), P(-2.0))); + EXPECT_TRUE(isgreaterequal(P(-1.0), P(-2.0))); + EXPECT_FALSE(isgreaterequal(P(0.25), P(0.5))); + EXPECT_TRUE(isgreaterequal(P(0.25), P(0.25))); + EXPECT_TRUE(isgreaterequal(P(0.5), P(0.25))); + EXPECT_FALSE(isgreaterequal(P(-1), P(0))); + EXPECT_TRUE(isgreaterequal(P(-1), P(-1))); + EXPECT_TRUE(isgreaterequal(P(0), P(-1))); + EXPECT_TRUE(isgreaterequal(P(0), P(0))); +} + +TEST(classification, isless) +{ + using P = fpm::fixed; + EXPECT_TRUE(isless(P(1.0), P(2.0))); + EXPECT_FALSE(isless(P(1.0), P(1.0))); + EXPECT_FALSE(isless(P(2.0), P(1.0))); + EXPECT_TRUE(isless(P(-2.0), P(-1.0))); + EXPECT_FALSE(isless(P(-2.0), P(-2.0))); + EXPECT_FALSE(isless(P(-1.0), P(-2.0))); + EXPECT_TRUE(isless(P(0.25), P(0.5))); + EXPECT_FALSE(isless(P(0.25), P(0.25))); + EXPECT_FALSE(isless(P(0.5), P(0.25))); + EXPECT_TRUE(isless(P(-1), P(0))); + EXPECT_FALSE(isless(P(-1), P(-1))); + EXPECT_FALSE(isless(P(0), P(-1))); + EXPECT_FALSE(isless(P(0), P(0))); +} + +TEST(classification, islessequal) +{ + using P = fpm::fixed; + EXPECT_TRUE(islessequal(P(1.0), P(2.0))); + EXPECT_TRUE(islessequal(P(1.0), P(1.0))); + EXPECT_FALSE(islessequal(P(2.0), P(1.0))); + EXPECT_TRUE(islessequal(P(-2.0), P(-1.0))); + EXPECT_TRUE(islessequal(P(-2.0), P(-2.0))); + EXPECT_FALSE(islessequal(P(-1.0), P(-2.0))); + EXPECT_TRUE(islessequal(P(0.25), P(0.5))); + EXPECT_TRUE(islessequal(P(0.25), P(0.25))); + EXPECT_FALSE(islessequal(P(0.5), P(0.25))); + EXPECT_TRUE(islessequal(P(-1), P(0))); + EXPECT_TRUE(islessequal(P(-1), P(-1))); + EXPECT_FALSE(islessequal(P(0), P(-1))); + EXPECT_TRUE(islessequal(P(0), P(0))); +} + +TEST(classification, islessgreater) +{ + using P = fpm::fixed; + EXPECT_TRUE(islessgreater(P(1.0), P(2.0))); + EXPECT_FALSE(islessgreater(P(1.0), P(1.0))); + EXPECT_TRUE(islessgreater(P(2.0), P(1.0))); + EXPECT_TRUE(islessgreater(P(-2.0), P(-1.0))); + EXPECT_FALSE(islessgreater(P(-2.0), P(-2.0))); + EXPECT_TRUE(islessgreater(P(-1.0), P(-2.0))); + EXPECT_TRUE(islessgreater(P(0.25), P(0.5))); + EXPECT_FALSE(islessgreater(P(0.25), P(0.25))); + EXPECT_TRUE(islessgreater(P(0.5), P(0.25))); + EXPECT_TRUE(islessgreater(P(-1), P(0))); + EXPECT_FALSE(islessgreater(P(-1), P(-1))); + EXPECT_TRUE(islessgreater(P(0), P(-1))); + EXPECT_FALSE(islessgreater(P(0), P(0))); +} + +TEST(classification, isunordered) +{ + using P = fpm::fixed; + EXPECT_FALSE(isunordered(P(1.0), P(2.0))); + EXPECT_FALSE(isunordered(P(1.0), P(1.0))); + EXPECT_FALSE(isunordered(P(2.0), P(1.0))); + EXPECT_FALSE(isunordered(P(-2.0), P(-1.0))); + EXPECT_FALSE(isunordered(P(-2.0), P(-2.0))); + EXPECT_FALSE(isunordered(P(-1.0), P(-2.0))); + EXPECT_FALSE(isunordered(P(0.25), P(0.5))); + EXPECT_FALSE(isunordered(P(0.25), P(0.25))); + EXPECT_FALSE(isunordered(P(0.5), P(0.25))); + EXPECT_FALSE(isunordered(P(-1), P(0))); + EXPECT_FALSE(isunordered(P(-1), P(-1))); + EXPECT_FALSE(isunordered(P(0), P(-1))); + EXPECT_FALSE(isunordered(P(0), P(0))); +} + -- cgit v1.1-26-g67d0