[libcamera-devel] [PATCH 07/11] test: geometry: Add tests for Size class comparison operators
Niklas Söderlund
niklas.soderlund at ragnatech.se
Mon Apr 15 22:58:23 CEST 2019
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 at ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund at 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 at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
--
Regards,
Niklas Söderlund
More information about the libcamera-devel
mailing list