#if GTEST #include #include #include #include "FloatSingle.h" #define FLOAT_INFINITY std::numeric_limits::infinity() TEST(FloatC, Clamp) { float r = 0; r = Float::Clamp(1, 0, 2); EXPECT_FLOAT_EQ(r, 1) << "Clamp 1 0 2"; r = Float::Clamp(-1, 0, 2); EXPECT_FLOAT_EQ(r, 0) << "Clamp -1 0 2"; r = Float::Clamp(3, 0, 2); EXPECT_FLOAT_EQ(r, 2) << "Clamp 3 0 2"; r = Float::Clamp(1, 0, 0); EXPECT_FLOAT_EQ(r, 0) << "Clamp 1 0 0"; r = Float::Clamp(0, 0, 0); EXPECT_FLOAT_EQ(r, 0) << "Clamp 0 0 0"; r = Float::Clamp(0, 1, -1); EXPECT_FLOAT_EQ(r, 0) << "Clamp 0 1 -1"; if (std::numeric_limits::is_iec559) { r = Float::Clamp(1, 0, FLOAT_INFINITY); EXPECT_FLOAT_EQ(r, 1) << "Clamp 1 0 INFINITY"; r = Float::Clamp(1, -FLOAT_INFINITY, 1); EXPECT_FLOAT_EQ(r, 1) << "Clamp 1 -INFINITY 1"; } } #endif