diff --git a/test/ipa/rkisp1/rkisp1-utils.cpp b/test/ipa/rkisp1/rkisp1-utils.cpp index e48f8d362..b1863894c 100644 --- a/test/ipa/rkisp1/rkisp1-utils.cpp +++ b/test/ipa/rkisp1/rkisp1-utils.cpp @@ -21,7 +21,23 @@ using namespace ipa::rkisp1; class RkISP1UtilsTest : public Test { protected: - template + /* R for real, I for integer */ + template + int testFixedToFloat(I input, R expected) + { + R out = utils::fixedToFloatingPoint(input); + R prec = 1.0 / (1 << FracPrec); + if (std::abs(out - expected) > prec) { + cerr << "Reverse conversion expected " << input + << " to convert to " << expected + << ", got " << out << std::endl; + return TestFail; + } + + return TestPass; + } + + template int testSingleFixedPoint(double input, T expected) { T ret = utils::floatingToFixedPoint(input); @@ -54,7 +70,6 @@ protected: */ std::map testCases = { { 7.992, 0x3ff }, - { 7.992, 0xbff }, { 0.2, 0x01a }, { -0.2, 0x7e6 }, { -0.8, 0x79a }, @@ -72,6 +87,11 @@ protected: return ret; } + /* Special case with a superfluous one in the unused bits */ + ret = testFixedToFloat<4, 7, uint16_t, double>(0xbff, 7.992); + if (ret != TestPass) + return ret; + return TestPass; }