#include <ableton/test/CatchWrapper.hpp>
#include <ableton/util/FloatIntConversion.hpp>
namespace ableton
{
namespace util
{
TEST_CASE("FloatToInt")
{
REQUIRE(0 == floatToInt16(0.f));
REQUIRE(floatToInt16(-0.5f) == -1 * floatToInt16(0.5f));
REQUIRE(std::numeric_limits<int16_t>::max() == floatToInt16(1.0f));
REQUIRE(std::numeric_limits<int16_t>::min() == floatToInt16(-1.0f));
REQUIRE(std::numeric_limits<int16_t>::max() == floatToInt16(2.0f));
REQUIRE(std::numeric_limits<int16_t>::min() == floatToInt16(-2.0f));
}
TEST_CASE("DoubleToInt")
{
REQUIRE(0 == floatToInt16(0.0));
REQUIRE(floatToInt16(-0.5) == -1 * floatToInt16(0.5));
REQUIRE(std::numeric_limits<int16_t>::max() == floatToInt16(1.0));
REQUIRE(std::numeric_limits<int16_t>::min() == floatToInt16(-1.0));
REQUIRE(std::numeric_limits<int16_t>::max() == floatToInt16(2.0));
REQUIRE(std::numeric_limits<int16_t>::min() == floatToInt16(-2.0));
}
TEST_CASE("IntToFloat")
{
REQUIRE(Approx(0.0f) == int16ToFloat<float>(0));
REQUIRE(Approx(-0.5f) == int16ToFloat<float>(-16384));
REQUIRE(Approx(0.5f) == int16ToFloat<float>(16384));
REQUIRE(Approx(1.0f - 1.0f / 32768.0f)
== int16ToFloat<float>(std::numeric_limits<int16_t>::max()));
REQUIRE(Approx(-1.0f) == int16ToFloat<float>(std::numeric_limits<int16_t>::min()));
}
TEST_CASE("IntToDouble")
{
REQUIRE(Approx(0.0) == int16ToFloat<double>(0));
REQUIRE(Approx(-0.5) == int16ToFloat<double>(-16384));
REQUIRE(Approx(0.5) == int16ToFloat<double>(16384));
REQUIRE(Approx(1.0 - 1.0 / 32768.0)
== int16ToFloat<double>(std::numeric_limits<int16_t>::max()));
REQUIRE(Approx(-1.0) == int16ToFloat<double>(std::numeric_limits<int16_t>::min()));
}
} }