From f5d3fa1254420efb882bbea30db1ff34b8999567 Mon Sep 17 00:00:00 2001
From: Naushir Patuck <naush@raspberrypi.com>
Date: Thu, 4 Mar 2021 08:17:28 +0000
Subject: test: delayed_controls: Rename delayed_contols.cpp to
 delayed_controls.cpp

There was a typo in the unit test filename. Fix this typo, no other
functional change in this commit.

Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
---
 test/delayed_contols.cpp  | 314 ----------------------------------------------
 test/delayed_controls.cpp | 314 ++++++++++++++++++++++++++++++++++++++++++++++
 test/meson.build          |   2 +-
 3 files changed, 315 insertions(+), 315 deletions(-)
 delete mode 100644 test/delayed_contols.cpp
 create mode 100644 test/delayed_controls.cpp

diff --git a/test/delayed_contols.cpp b/test/delayed_contols.cpp
deleted file mode 100644
index c6f195b7..00000000
--- a/test/delayed_contols.cpp
+++ /dev/null
@@ -1,314 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- * Copyright (C) 2020, Google Inc.
- *
- * delayed_controls.cpp - libcamera delayed controls test
- */
-
-#include <iostream>
-
-#include "libcamera/internal/delayed_controls.h"
-#include "libcamera/internal/device_enumerator.h"
-#include "libcamera/internal/media_device.h"
-#include "libcamera/internal/v4l2_videodevice.h"
-
-#include "test.h"
-
-using namespace std;
-using namespace libcamera;
-
-class DelayedControlsTest : public Test
-{
-public:
-	DelayedControlsTest()
-	{
-	}
-
-protected:
-	int init() override
-	{
-		enumerator_ = DeviceEnumerator::create();
-		if (!enumerator_) {
-			cerr << "Failed to create device enumerator" << endl;
-			return TestFail;
-		}
-
-		if (enumerator_->enumerate()) {
-			cerr << "Failed to enumerate media devices" << endl;
-			return TestFail;
-		}
-
-		DeviceMatch dm("vivid");
-		dm.add("vivid-000-vid-cap");
-
-		media_ = enumerator_->search(dm);
-		if (!media_) {
-			cerr << "vivid video device found" << endl;
-			return TestSkip;
-		}
-
-		dev_ = V4L2VideoDevice::fromEntityName(media_.get(), "vivid-000-vid-cap");
-		if (dev_->open()) {
-			cerr << "Failed to open video device" << endl;
-			return TestFail;
-		}
-
-		const ControlInfoMap &infoMap = dev_->controls();
-
-		/* Make sure the controls we require are present. */
-		if (infoMap.empty()) {
-			cerr << "Failed to enumerate controls" << endl;
-			return TestFail;
-		}
-
-		if (infoMap.find(V4L2_CID_BRIGHTNESS) == infoMap.end() ||
-		    infoMap.find(V4L2_CID_CONTRAST) == infoMap.end()) {
-			cerr << "Missing controls" << endl;
-			return TestFail;
-		}
-
-		return TestPass;
-	}
-
-	int singleControlNoDelay()
-	{
-		std::unordered_map<uint32_t, DelayedControls::ControlParams> delays = {
-			{ V4L2_CID_BRIGHTNESS, { 0, false } },
-		};
-		std::unique_ptr<DelayedControls> delayed =
-			std::make_unique<DelayedControls>(dev_.get(), delays);
-		ControlList ctrls;
-
-		/* Reset control to value not used in test. */
-		ctrls.set(V4L2_CID_BRIGHTNESS, 1);
-		dev_->setControls(&ctrls);
-		delayed->reset();
-
-		/* Trigger the first frame start event */
-		delayed->applyControls(0);
-
-		/* Test control without delay are set at once. */
-		for (unsigned int i = 1; i < 100; i++) {
-			int32_t value = 100 + i;
-
-			ctrls.set(V4L2_CID_BRIGHTNESS, value);
-			delayed->push(ctrls);
-
-			delayed->applyControls(i);
-
-			ControlList result = delayed->get(i);
-			int32_t brightness = result.get(V4L2_CID_BRIGHTNESS).get<int32_t>();
-			if (brightness != value) {
-				cerr << "Failed single control without delay"
-				     << " frame " << i
-				     << " expected " << value
-				     << " got " << brightness
-				     << endl;
-				return TestFail;
-			}
-		}
-
-		return TestPass;
-	}
-
-	int singleControlWithDelay()
-	{
-		std::unordered_map<uint32_t, DelayedControls::ControlParams> delays = {
-			{ V4L2_CID_BRIGHTNESS, { 1, false } },
-		};
-		std::unique_ptr<DelayedControls> delayed =
-			std::make_unique<DelayedControls>(dev_.get(), delays);
-		ControlList ctrls;
-
-		/* Reset control to value that will be first in test. */
-		int32_t expected = 4;
-		ctrls.set(V4L2_CID_BRIGHTNESS, expected);
-		dev_->setControls(&ctrls);
-		delayed->reset();
-
-		/* Trigger the first frame start event */
-		delayed->applyControls(0);
-
-		/* Test single control with delay. */
-		for (unsigned int i = 1; i < 100; i++) {
-			int32_t value = 10 + i;
-
-			ctrls.set(V4L2_CID_BRIGHTNESS, value);
-			delayed->push(ctrls);
-
-			delayed->applyControls(i);
-
-			ControlList result = delayed->get(i);
-			int32_t brightness = result.get(V4L2_CID_BRIGHTNESS).get<int32_t>();
-			if (brightness != expected) {
-				cerr << "Failed single control with delay"
-				     << " frame " << i
-				     << " expected " << expected
-				     << " got " << brightness
-				     << endl;
-				return TestFail;
-			}
-
-			expected = value;
-		}
-
-		return TestPass;
-	}
-
-	int dualControlsWithDelay(uint32_t startOffset)
-	{
-		static const unsigned int maxDelay = 2;
-
-		std::unordered_map<uint32_t, DelayedControls::ControlParams> delays = {
-			{ V4L2_CID_BRIGHTNESS, { 1, false } },
-			{ V4L2_CID_CONTRAST, { maxDelay, false } },
-		};
-		std::unique_ptr<DelayedControls> delayed =
-			std::make_unique<DelayedControls>(dev_.get(), delays);
-		ControlList ctrls;
-
-		/* Reset control to value that will be first two frames in test. */
-		int32_t expected = 200;
-		ctrls.set(V4L2_CID_BRIGHTNESS, expected);
-		ctrls.set(V4L2_CID_CONTRAST, expected + 1);
-		dev_->setControls(&ctrls);
-		delayed->reset();
-
-		/* Trigger the first frame start event */
-		delayed->applyControls(startOffset);
-
-		/* Test dual control with delay. */
-		for (unsigned int i = 1; i < 100; i++) {
-			uint32_t frame = startOffset + i;
-			int32_t value = 10 + i;
-
-			ctrls.set(V4L2_CID_BRIGHTNESS, value);
-			ctrls.set(V4L2_CID_CONTRAST, value + 1);
-			delayed->push(ctrls);
-
-			delayed->applyControls(frame);
-
-			ControlList result = delayed->get(frame);
-			int32_t brightness = result.get(V4L2_CID_BRIGHTNESS).get<int32_t>();
-			int32_t contrast = result.get(V4L2_CID_CONTRAST).get<int32_t>();
-			if (brightness != expected || contrast != expected + 1) {
-				cerr << "Failed dual controls"
-				     << " frame " << frame
-				     << " brightness " << brightness
-				     << " contrast " << contrast
-				     << " expected " << expected
-				     << endl;
-				return TestFail;
-			}
-
-			expected = i < maxDelay ? expected : value - 1;
-		}
-
-		return TestPass;
-	}
-
-	int dualControlsMultiQueue()
-	{
-		static const unsigned int maxDelay = 2;
-
-		std::unordered_map<uint32_t, DelayedControls::ControlParams> delays = {
-			{ V4L2_CID_BRIGHTNESS, { 1, false } },
-			{ V4L2_CID_CONTRAST, { maxDelay, false } }
-		};
-		std::unique_ptr<DelayedControls> delayed =
-			std::make_unique<DelayedControls>(dev_.get(), delays);
-		ControlList ctrls;
-
-		/* Reset control to value that will be first two frames in test. */
-		int32_t expected = 100;
-		ctrls.set(V4L2_CID_BRIGHTNESS, expected);
-		ctrls.set(V4L2_CID_CONTRAST, expected);
-		dev_->setControls(&ctrls);
-		delayed->reset();
-
-		/* Trigger the first frame start event */
-		delayed->applyControls(0);
-
-		/*
-		 * Queue all controls before any fake frame start. Note we
-		 * can't queue up more then the delayed controls history size
-		 * which is 16. Where one spot is used by the reset control.
-		 */
-		for (unsigned int i = 0; i < 15; i++) {
-			int32_t value = 10 + i;
-
-			ctrls.set(V4L2_CID_BRIGHTNESS, value);
-			ctrls.set(V4L2_CID_CONTRAST, value);
-			delayed->push(ctrls);
-		}
-
-		/* Process all queued controls. */
-		for (unsigned int i = 1; i < 16; i++) {
-			int32_t value = 10 + i - 1;
-
-			delayed->applyControls(i);
-
-			ControlList result = delayed->get(i);
-
-			int32_t brightness = result.get(V4L2_CID_BRIGHTNESS).get<int32_t>();
-			int32_t contrast = result.get(V4L2_CID_CONTRAST).get<int32_t>();
-			if (brightness != expected || contrast != expected) {
-				cerr << "Failed multi queue"
-				     << " frame " << i
-				     << " brightness " << brightness
-				     << " contrast " << contrast
-				     << " expected " << expected
-				     << endl;
-				return TestFail;
-			}
-
-			expected = i < maxDelay ? expected : value - 1;
-		}
-
-		return TestPass;
-	}
-
-	int run() override
-	{
-		int ret;
-
-		/* Test single control without delay. */
-		ret = singleControlNoDelay();
-		if (ret)
-			return ret;
-
-		/* Test single control with delay. */
-		ret = singleControlWithDelay();
-		if (ret)
-			return ret;
-
-		/* Test dual controls with different delays. */
-		ret = dualControlsWithDelay(0);
-		if (ret)
-			return ret;
-
-		/* Test dual controls with non-zero sequence start. */
-		ret = dualControlsWithDelay(10000);
-		if (ret)
-			return ret;
-
-		/* Test dual controls with sequence number wraparound. */
-		ret = dualControlsWithDelay(UINT32_MAX - 50);
-		if (ret)
-			return ret;
-
-		/* Test control values produced faster than consumed. */
-		ret = dualControlsMultiQueue();
-		if (ret)
-			return ret;
-
-		return TestPass;
-	}
-
-private:
-	std::unique_ptr<DeviceEnumerator> enumerator_;
-	std::shared_ptr<MediaDevice> media_;
-	std::unique_ptr<V4L2VideoDevice> dev_;
-};
-
-TEST_REGISTER(DelayedControlsTest)
diff --git a/test/delayed_controls.cpp b/test/delayed_controls.cpp
new file mode 100644
index 00000000..c6f195b7
--- /dev/null
+++ b/test/delayed_controls.cpp
@@ -0,0 +1,314 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (C) 2020, Google Inc.
+ *
+ * delayed_controls.cpp - libcamera delayed controls test
+ */
+
+#include <iostream>
+
+#include "libcamera/internal/delayed_controls.h"
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/v4l2_videodevice.h"
+
+#include "test.h"
+
+using namespace std;
+using namespace libcamera;
+
+class DelayedControlsTest : public Test
+{
+public:
+	DelayedControlsTest()
+	{
+	}
+
+protected:
+	int init() override
+	{
+		enumerator_ = DeviceEnumerator::create();
+		if (!enumerator_) {
+			cerr << "Failed to create device enumerator" << endl;
+			return TestFail;
+		}
+
+		if (enumerator_->enumerate()) {
+			cerr << "Failed to enumerate media devices" << endl;
+			return TestFail;
+		}
+
+		DeviceMatch dm("vivid");
+		dm.add("vivid-000-vid-cap");
+
+		media_ = enumerator_->search(dm);
+		if (!media_) {
+			cerr << "vivid video device found" << endl;
+			return TestSkip;
+		}
+
+		dev_ = V4L2VideoDevice::fromEntityName(media_.get(), "vivid-000-vid-cap");
+		if (dev_->open()) {
+			cerr << "Failed to open video device" << endl;
+			return TestFail;
+		}
+
+		const ControlInfoMap &infoMap = dev_->controls();
+
+		/* Make sure the controls we require are present. */
+		if (infoMap.empty()) {
+			cerr << "Failed to enumerate controls" << endl;
+			return TestFail;
+		}
+
+		if (infoMap.find(V4L2_CID_BRIGHTNESS) == infoMap.end() ||
+		    infoMap.find(V4L2_CID_CONTRAST) == infoMap.end()) {
+			cerr << "Missing controls" << endl;
+			return TestFail;
+		}
+
+		return TestPass;
+	}
+
+	int singleControlNoDelay()
+	{
+		std::unordered_map<uint32_t, DelayedControls::ControlParams> delays = {
+			{ V4L2_CID_BRIGHTNESS, { 0, false } },
+		};
+		std::unique_ptr<DelayedControls> delayed =
+			std::make_unique<DelayedControls>(dev_.get(), delays);
+		ControlList ctrls;
+
+		/* Reset control to value not used in test. */
+		ctrls.set(V4L2_CID_BRIGHTNESS, 1);
+		dev_->setControls(&ctrls);
+		delayed->reset();
+
+		/* Trigger the first frame start event */
+		delayed->applyControls(0);
+
+		/* Test control without delay are set at once. */
+		for (unsigned int i = 1; i < 100; i++) {
+			int32_t value = 100 + i;
+
+			ctrls.set(V4L2_CID_BRIGHTNESS, value);
+			delayed->push(ctrls);
+
+			delayed->applyControls(i);
+
+			ControlList result = delayed->get(i);
+			int32_t brightness = result.get(V4L2_CID_BRIGHTNESS).get<int32_t>();
+			if (brightness != value) {
+				cerr << "Failed single control without delay"
+				     << " frame " << i
+				     << " expected " << value
+				     << " got " << brightness
+				     << endl;
+				return TestFail;
+			}
+		}
+
+		return TestPass;
+	}
+
+	int singleControlWithDelay()
+	{
+		std::unordered_map<uint32_t, DelayedControls::ControlParams> delays = {
+			{ V4L2_CID_BRIGHTNESS, { 1, false } },
+		};
+		std::unique_ptr<DelayedControls> delayed =
+			std::make_unique<DelayedControls>(dev_.get(), delays);
+		ControlList ctrls;
+
+		/* Reset control to value that will be first in test. */
+		int32_t expected = 4;
+		ctrls.set(V4L2_CID_BRIGHTNESS, expected);
+		dev_->setControls(&ctrls);
+		delayed->reset();
+
+		/* Trigger the first frame start event */
+		delayed->applyControls(0);
+
+		/* Test single control with delay. */
+		for (unsigned int i = 1; i < 100; i++) {
+			int32_t value = 10 + i;
+
+			ctrls.set(V4L2_CID_BRIGHTNESS, value);
+			delayed->push(ctrls);
+
+			delayed->applyControls(i);
+
+			ControlList result = delayed->get(i);
+			int32_t brightness = result.get(V4L2_CID_BRIGHTNESS).get<int32_t>();
+			if (brightness != expected) {
+				cerr << "Failed single control with delay"
+				     << " frame " << i
+				     << " expected " << expected
+				     << " got " << brightness
+				     << endl;
+				return TestFail;
+			}
+
+			expected = value;
+		}
+
+		return TestPass;
+	}
+
+	int dualControlsWithDelay(uint32_t startOffset)
+	{
+		static const unsigned int maxDelay = 2;
+
+		std::unordered_map<uint32_t, DelayedControls::ControlParams> delays = {
+			{ V4L2_CID_BRIGHTNESS, { 1, false } },
+			{ V4L2_CID_CONTRAST, { maxDelay, false } },
+		};
+		std::unique_ptr<DelayedControls> delayed =
+			std::make_unique<DelayedControls>(dev_.get(), delays);
+		ControlList ctrls;
+
+		/* Reset control to value that will be first two frames in test. */
+		int32_t expected = 200;
+		ctrls.set(V4L2_CID_BRIGHTNESS, expected);
+		ctrls.set(V4L2_CID_CONTRAST, expected + 1);
+		dev_->setControls(&ctrls);
+		delayed->reset();
+
+		/* Trigger the first frame start event */
+		delayed->applyControls(startOffset);
+
+		/* Test dual control with delay. */
+		for (unsigned int i = 1; i < 100; i++) {
+			uint32_t frame = startOffset + i;
+			int32_t value = 10 + i;
+
+			ctrls.set(V4L2_CID_BRIGHTNESS, value);
+			ctrls.set(V4L2_CID_CONTRAST, value + 1);
+			delayed->push(ctrls);
+
+			delayed->applyControls(frame);
+
+			ControlList result = delayed->get(frame);
+			int32_t brightness = result.get(V4L2_CID_BRIGHTNESS).get<int32_t>();
+			int32_t contrast = result.get(V4L2_CID_CONTRAST).get<int32_t>();
+			if (brightness != expected || contrast != expected + 1) {
+				cerr << "Failed dual controls"
+				     << " frame " << frame
+				     << " brightness " << brightness
+				     << " contrast " << contrast
+				     << " expected " << expected
+				     << endl;
+				return TestFail;
+			}
+
+			expected = i < maxDelay ? expected : value - 1;
+		}
+
+		return TestPass;
+	}
+
+	int dualControlsMultiQueue()
+	{
+		static const unsigned int maxDelay = 2;
+
+		std::unordered_map<uint32_t, DelayedControls::ControlParams> delays = {
+			{ V4L2_CID_BRIGHTNESS, { 1, false } },
+			{ V4L2_CID_CONTRAST, { maxDelay, false } }
+		};
+		std::unique_ptr<DelayedControls> delayed =
+			std::make_unique<DelayedControls>(dev_.get(), delays);
+		ControlList ctrls;
+
+		/* Reset control to value that will be first two frames in test. */
+		int32_t expected = 100;
+		ctrls.set(V4L2_CID_BRIGHTNESS, expected);
+		ctrls.set(V4L2_CID_CONTRAST, expected);
+		dev_->setControls(&ctrls);
+		delayed->reset();
+
+		/* Trigger the first frame start event */
+		delayed->applyControls(0);
+
+		/*
+		 * Queue all controls before any fake frame start. Note we
+		 * can't queue up more then the delayed controls history size
+		 * which is 16. Where one spot is used by the reset control.
+		 */
+		for (unsigned int i = 0; i < 15; i++) {
+			int32_t value = 10 + i;
+
+			ctrls.set(V4L2_CID_BRIGHTNESS, value);
+			ctrls.set(V4L2_CID_CONTRAST, value);
+			delayed->push(ctrls);
+		}
+
+		/* Process all queued controls. */
+		for (unsigned int i = 1; i < 16; i++) {
+			int32_t value = 10 + i - 1;
+
+			delayed->applyControls(i);
+
+			ControlList result = delayed->get(i);
+
+			int32_t brightness = result.get(V4L2_CID_BRIGHTNESS).get<int32_t>();
+			int32_t contrast = result.get(V4L2_CID_CONTRAST).get<int32_t>();
+			if (brightness != expected || contrast != expected) {
+				cerr << "Failed multi queue"
+				     << " frame " << i
+				     << " brightness " << brightness
+				     << " contrast " << contrast
+				     << " expected " << expected
+				     << endl;
+				return TestFail;
+			}
+
+			expected = i < maxDelay ? expected : value - 1;
+		}
+
+		return TestPass;
+	}
+
+	int run() override
+	{
+		int ret;
+
+		/* Test single control without delay. */
+		ret = singleControlNoDelay();
+		if (ret)
+			return ret;
+
+		/* Test single control with delay. */
+		ret = singleControlWithDelay();
+		if (ret)
+			return ret;
+
+		/* Test dual controls with different delays. */
+		ret = dualControlsWithDelay(0);
+		if (ret)
+			return ret;
+
+		/* Test dual controls with non-zero sequence start. */
+		ret = dualControlsWithDelay(10000);
+		if (ret)
+			return ret;
+
+		/* Test dual controls with sequence number wraparound. */
+		ret = dualControlsWithDelay(UINT32_MAX - 50);
+		if (ret)
+			return ret;
+
+		/* Test control values produced faster than consumed. */
+		ret = dualControlsMultiQueue();
+		if (ret)
+			return ret;
+
+		return TestPass;
+	}
+
+private:
+	std::unique_ptr<DeviceEnumerator> enumerator_;
+	std::shared_ptr<MediaDevice> media_;
+	std::unique_ptr<V4L2VideoDevice> dev_;
+};
+
+TEST_REGISTER(DelayedControlsTest)
diff --git a/test/meson.build b/test/meson.build
index 89e6ebff..310b7cad 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -30,7 +30,7 @@ internal_tests = [
     ['bayer-format',                    'bayer-format.cpp'],
     ['byte-stream-buffer',              'byte-stream-buffer.cpp'],
     ['camera-sensor',                   'camera-sensor.cpp'],
-    ['delayed_contols',                 'delayed_contols.cpp'],
+    ['delayed_controls',                'delayed_controls.cpp'],
     ['event',                           'event.cpp'],
     ['event-dispatcher',                'event-dispatcher.cpp'],
     ['event-thread',                    'event-thread.cpp'],
-- 
cgit v1.2.1