[PATCH v2] test: ipa: rkisp1: utils: Fix floating and fixed point conversion test

Kieran Bingham kieran.bingham at ideasonboard.com
Mon Jun 10 15:12:14 CEST 2024


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 at ideasonboard.com>
> 
> 
> > Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
> > Reviewed-by: Stefan Klug <stefan.klug at 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
> >


More information about the libcamera-devel mailing list