#if GTEST
#include <gtest/gtest.h>

#include <math.h>
#include <limits>

#include "FloatSingle.h"

#define FLOAT_INFINITY std::numeric_limits<float>::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, 1) << "Clamp 0 1 -1";

	if (std::numeric_limits<float>::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