Message ID | 20190415165700.22970-8-laurent.pinchart@ideasonboard.com |
---|---|
State | Superseded |
Headers | show |
Series |
|
Related | show |
Hi Laurent, Thanks for your test code, On 2019-04-15 19:56:56 +0300, Laurent Pinchart wrote: > Add a test that exercises all the comparison operators for the Size > class. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> > --- > 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; > + } > + > + 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() > + { > + } > +}; > + > +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 > > _______________________________________________ > libcamera-devel mailing list > libcamera-devel@lists.libcamera.org > https://lists.libcamera.org/listinfo/libcamera-devel
Hi Laurent, 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@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? > + > + 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@jmondi.org> Thanks j > +}; > + > +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 > > _______________________________________________ > libcamera-devel mailing list > libcamera-devel@lists.libcamera.org > https://lists.libcamera.org/listinfo/libcamera-devel
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@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@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'],
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; + } + + 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() + { + } +}; + +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'],
Add a test that exercises all the comparison operators for the Size class. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> --- test/geometry.cpp | 125 ++++++++++++++++++++++++++++++++++++++++++++++ test/meson.build | 1 + 2 files changed, 126 insertions(+) create mode 100644 test/geometry.cpp