[v2] test: ipa: rkisp1: utils: Fix floating and fixed point conversion test
diff mbox series

Message ID 20240607100323.3029238-1-paul.elder@ideasonboard.com
State Accepted
Commit f3caea0ff7e63b529c9464f911162aa457e9b858
Headers show
Series
  • [v2] test: ipa: rkisp1: utils: Fix floating and fixed point conversion test
Related show

Commit Message

Paul Elder June 7, 2024, 10:03 a.m. UTC
There was an issue where using map to store the test cases meant that
the test for ignoring unused bits was skipped because of clashing keys.
Fix this by moving the offending test out of the loop.

While at it, also change the arbitrary floating comparison precision to
be more precise.

Also fix a missing documentation brief.

Fixes: 9d152e9c6 ipa: rkisp1: Add a helper to convert floating-point to
fixed-point
Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Stefan Klug <stefan.klug@ideasonboard.com>

---
Changes in v2:
- remove the added complexity that would've made it clearner to add a
  larger variety of tests because the variety wasn't there
---
 test/ipa/rkisp1/rkisp1-utils.cpp | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

Comments

Kieran Bingham June 10, 2024, 10 a.m. UTC | #1
Quoting Paul Elder (2024-06-07 11:03:23)
> There was an issue where using map to store the test cases meant that
> the test for ignoring unused bits was skipped because of clashing keys.
> Fix this by moving the offending test out of the loop.
> 
> While at it, also change the arbitrary floating comparison precision to
> be more precise.
> 
> Also fix a missing documentation brief.
> 
> Fixes: 9d152e9c6 ipa: rkisp1: Add a helper to convert floating-point to
> fixed-point

I think it's better to keep trailier lines on a single line even if it
extends beyond 72/80 chars.

I think the title is normally in brackets and quotes too?

Fixes: 9d152e9c6 ("ipa: rkisp1: Add a helper to convert floating-point to fixed-point")

But just trivial nits. That doesn't seem to be enforced by checkstyle
presently.


Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>


> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
> Reviewed-by: Stefan Klug <stefan.klug@ideasonboard.com>
> 
> ---
> Changes in v2:
> - remove the added complexity that would've made it clearner to add a
>   larger variety of tests because the variety wasn't there
> ---
>  test/ipa/rkisp1/rkisp1-utils.cpp | 24 ++++++++++++++++++++++--
>  1 file changed, 22 insertions(+), 2 deletions(-)
> 
> 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<unsigned int IntPrec, unsigned FracPrec, typename T>
> +       /* R for real, I for integer */
> +       template<unsigned int IntPrec, unsigned int FracPrec, typename I, typename R>
> +       int testFixedToFloat(I input, R expected)
> +       {
> +               R out = utils::fixedToFloatingPoint<IntPrec, FracPrec, R>(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<unsigned int IntPrec, unsigned int FracPrec, typename T>
>         int testSingleFixedPoint(double input, T expected)
>         {
>                 T ret = utils::floatingToFixedPoint<IntPrec, FracPrec, T>(input);
> @@ -54,7 +70,6 @@ protected:
>                  */
>                 std::map<double, uint16_t> 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;
>         }
>  
> -- 
> 2.39.2
>
Kieran Bingham June 10, 2024, 1:12 p.m. UTC | #2
Quoting Kieran Bingham (2024-06-10 11:00:17)
> Quoting Paul Elder (2024-06-07 11:03:23)
> > There was an issue where using map to store the test cases meant that
> > the test for ignoring unused bits was skipped because of clashing keys.
> > Fix this by moving the offending test out of the loop.
> > 
> > While at it, also change the arbitrary floating comparison precision to
> > be more precise.
> > 
> > Also fix a missing documentation brief.
> > 
> > Fixes: 9d152e9c6 ipa: rkisp1: Add a helper to convert floating-point to
> > fixed-point
> 
> I think it's better to keep trailier lines on a single line even if it
> extends beyond 72/80 chars.
> 
> I think the title is normally in brackets and quotes too?
> 
> Fixes: 9d152e9c6 ("ipa: rkisp1: Add a helper to convert floating-point to fixed-point")
> 
> But just trivial nits. That doesn't seem to be enforced by checkstyle
> presently.

Hrm ... I take that back - checkstyle certainly does have a rule for
this:



commit_regex = re.compile(r'[0-9a-f]{12}[0-9a-f]* \(".*"\)')

    known_trailers = {
    	...
        'Fixes': commit_regex,
	...
    }

So - it should be enforced to be:

Fixes: 9d152e9c66c1 ("ipa: rkisp1: Add a helper to convert floating-point to fixed-point")

--
Kieran


> 
> 
> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
> 
> 
> > Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
> > Reviewed-by: Stefan Klug <stefan.klug@ideasonboard.com>
> > 
> > ---
> > Changes in v2:
> > - remove the added complexity that would've made it clearner to add a
> >   larger variety of tests because the variety wasn't there
> > ---
> >  test/ipa/rkisp1/rkisp1-utils.cpp | 24 ++++++++++++++++++++++--
> >  1 file changed, 22 insertions(+), 2 deletions(-)
> > 
> > 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<unsigned int IntPrec, unsigned FracPrec, typename T>
> > +       /* R for real, I for integer */
> > +       template<unsigned int IntPrec, unsigned int FracPrec, typename I, typename R>
> > +       int testFixedToFloat(I input, R expected)
> > +       {
> > +               R out = utils::fixedToFloatingPoint<IntPrec, FracPrec, R>(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<unsigned int IntPrec, unsigned int FracPrec, typename T>
> >         int testSingleFixedPoint(double input, T expected)
> >         {
> >                 T ret = utils::floatingToFixedPoint<IntPrec, FracPrec, T>(input);
> > @@ -54,7 +70,6 @@ protected:
> >                  */
> >                 std::map<double, uint16_t> 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;
> >         }
> >  
> > -- 
> > 2.39.2
> >

Patch
diff mbox series

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<unsigned int IntPrec, unsigned FracPrec, typename T>
+	/* R for real, I for integer */
+	template<unsigned int IntPrec, unsigned int FracPrec, typename I, typename R>
+	int testFixedToFloat(I input, R expected)
+	{
+		R out = utils::fixedToFloatingPoint<IntPrec, FracPrec, R>(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<unsigned int IntPrec, unsigned int FracPrec, typename T>
 	int testSingleFixedPoint(double input, T expected)
 	{
 		T ret = utils::floatingToFixedPoint<IntPrec, FracPrec, T>(input);
@@ -54,7 +70,6 @@  protected:
 		 */
 		std::map<double, uint16_t> 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;
 	}