[libcamera-devel] [PATCH 07/11] test: geometry: Add tests for Size class comparison operators
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Tue Apr 16 22:10:44 CEST 2019
Hi Jacopo,
On Tue, Apr 16, 2019 at 05:19:14PM +0200, Jacopo Mondi wrote:
> On Mon, Apr 15, 2019 at 07:56:56PM +0300, Laurent Pinchart wrote:
> > Add a test that exercises all the comparison operators for the Size
> > class.
> >
> > Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> > ---
> > test/geometry.cpp | 125 ++++++++++++++++++++++++++++++++++++++++++++++
> > test/meson.build | 1 +
> > 2 files changed, 126 insertions(+)
> > create mode 100644 test/geometry.cpp
> >
> > diff --git a/test/geometry.cpp b/test/geometry.cpp
> > new file mode 100644
> > index 000000000000..7ba3f72ed71d
> > --- /dev/null
> > +++ b/test/geometry.cpp
> > @@ -0,0 +1,125 @@
> > +/* SPDX-License-Identifier: GPL-2.0-or-later */
> > +/*
> > + * Copyright (C) 2019, Google Inc.
> > + *
> > + * geometry.cpp - Geometry classes tests
> > + */
> > +
> > +#include <iostream>
> > +
> > +#include <libcamera/geometry.h>
> > +
> > +#include "test.h"
> > +
> > +using namespace std;
> > +using namespace libcamera;
> > +
> > +class GeometryTest : public Test
> > +{
> > +protected:
> > + int init()
> > + {
> > + return 0;
> > + }
>
> Do you need this?
I don't, same for cleanup(). I'll fix that.
> > +
> > + bool compare(const Size &lhs, const Size &rhs,
> > + bool (*op)(const Size &lhs, const Size &rhs),
> > + const char *opName, bool expect)
> > + {
> > + bool result = op(lhs, rhs);
> > +
> > + if (result != expect) {
> > + cout << "Size(" << lhs.width << ", " << lhs.height << ") "
> > + << opName << " "
> > + << "Size(" << rhs.width << ", " << rhs.height << ") "
> > + << "test failed" << std::endl;
> > + return false;
> > + }
> > +
> > + return true;
> > + }
> > +
> > + int run()
> > + {
> > + /* Test Size equality and inequality. */
> > + if (!compare(Size(100, 100), Size(100, 100), &operator==, "==", true))
> > + return TestFail;
> > + if (!compare(Size(100, 100), Size(100, 100), &operator!=, "!=", false))
> > + return TestFail;
> > +
> > + if (!compare(Size(100, 100), Size(200, 100), &operator==, "==", false))
> > + return TestFail;
> > + if (!compare(Size(100, 100), Size(200, 100), &operator!=, "!=", true))
> > + return TestFail;
> > +
> > + if (!compare(Size(100, 100), Size(100, 200), &operator==, "==", false))
> > + return TestFail;
> > + if (!compare(Size(100, 100), Size(100, 200), &operator!=, "!=", true))
> > + return TestFail;
> > +
> > + /* Test Size ordering based on combined with and height. */
> > + if (!compare(Size(100, 100), Size(200, 200), &operator<, "<", true))
> > + return TestFail;
> > + if (!compare(Size(100, 100), Size(200, 200), &operator<=, "<=", true))
> > + return TestFail;
> > + if (!compare(Size(100, 100), Size(200, 200), &operator>, ">", false))
> > + return TestFail;
> > + if (!compare(Size(100, 100), Size(200, 200), &operator>=, ">=", false))
> > + return TestFail;
> > +
> > + if (!compare(Size(200, 200), Size(100, 100), &operator<, "<", false))
> > + return TestFail;
> > + if (!compare(Size(200, 200), Size(100, 100), &operator<=, "<=", false))
> > + return TestFail;
> > + if (!compare(Size(200, 200), Size(100, 100), &operator>, ">", true))
> > + return TestFail;
> > + if (!compare(Size(200, 200), Size(100, 100), &operator>=, ">=", true))
> > + return TestFail;
> > +
> > + /* Test Size ordering based on area (with overlapping sizes). */
> > + if (!compare(Size(200, 100), Size(100, 400), &operator<, "<", true))
> > + return TestFail;
> > + if (!compare(Size(200, 100), Size(100, 400), &operator<=, "<=", true))
> > + return TestFail;
> > + if (!compare(Size(200, 100), Size(100, 400), &operator>, ">", false))
> > + return TestFail;
> > + if (!compare(Size(200, 100), Size(100, 400), &operator>=, ">=", false))
> > + return TestFail;
> > +
> > + if (!compare(Size(100, 400), Size(200, 100), &operator<, "<", false))
> > + return TestFail;
> > + if (!compare(Size(100, 400), Size(200, 100), &operator<=, "<=", false))
> > + return TestFail;
> > + if (!compare(Size(100, 400), Size(200, 100), &operator>, ">", true))
> > + return TestFail;
> > + if (!compare(Size(100, 400), Size(200, 100), &operator>=, ">=", true))
> > + return TestFail;
> > +
> > + /* Test Size ordering based on width (with identical areas). */
> > + if (!compare(Size(100, 200), Size(200, 100), &operator<, "<", true))
> > + return TestFail;
> > + if (!compare(Size(100, 200), Size(200, 100), &operator<=, "<=", true))
> > + return TestFail;
> > + if (!compare(Size(100, 200), Size(200, 100), &operator>, ">", false))
> > + return TestFail;
> > + if (!compare(Size(100, 200), Size(200, 100), &operator>=, ">=", false))
> > + return TestFail;
> > +
> > + if (!compare(Size(200, 100), Size(100, 200), &operator<, "<", false))
> > + return TestFail;
> > + if (!compare(Size(200, 100), Size(100, 200), &operator<=, "<=", false))
> > + return TestFail;
> > + if (!compare(Size(200, 100), Size(100, 200), &operator>, ">", true))
> > + return TestFail;
> > + if (!compare(Size(200, 100), Size(100, 200), &operator>=, ">=", true))
> > + return TestFail;
> > +
> > + return TestPass;
> > + }
> > +
> > + void cleanup()
> > + {
> > + }
>
> this too?
>
> Minors apart:
> Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
>
> > +};
> > +
> > +TEST_REGISTER(GeometryTest)
> > diff --git a/test/meson.build b/test/meson.build
> > index 71a96921697c..d501f2beaf96 100644
> > --- a/test/meson.build
> > +++ b/test/meson.build
> > @@ -9,6 +9,7 @@ subdir('v4l2_subdevice')
> > public_tests = [
> > ['event', 'event.cpp'],
> > ['event-dispatcher', 'event-dispatcher.cpp'],
> > + ['geometry', 'geometry.cpp'],
> > ['list-cameras', 'list-cameras.cpp'],
> > ['signal', 'signal.cpp'],
> > ['timer', 'timer.cpp'],
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list