[libcamera-devel] [PATCH v2 3/5] test: control serialization: Test lookup by ControlId

Jacopo Mondi jacopo at jmondi.org
Wed Jul 28 18:11:14 CEST 2021


Test that lookup by ControlId reference works in the control
serialization test.

Also make sure that the control limits are not changed by
de-serialization.

Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
 test/serialization/control_serialization.cpp | 22 ++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/test/serialization/control_serialization.cpp b/test/serialization/control_serialization.cpp
index e23383d13bd6..45a706d27ba7 100644
--- a/test/serialization/control_serialization.cpp
+++ b/test/serialization/control_serialization.cpp
@@ -140,6 +140,28 @@ protected:
 			return TestFail;
 		}
 
+		/* Test lookup by ControlId * on the de-serialized info map. */
+		auto newLimitsIter = newInfoMap.find(&controls::Brightness);
+		if (newLimitsIter == newInfoMap.end()) {
+			cerr << "Lookup by ControlId * failed" << endl;
+			return TestFail;
+		}
+
+		auto initialLimitsIter = infoMap.find(&controls::Brightness);
+		if (initialLimitsIter == infoMap.end()) {
+			cerr << "Unable to retrieve the original control limits" << endl;
+			return TestFail;
+		}
+
+		/* Make sure control limits looked up by id are not changed. */
+		const ControlInfo &newLimits = newLimitsIter->second;
+		const ControlInfo &initialLimits = initialLimitsIter->second;
+		if (newLimits.min().get<float>() != initialLimits.min().get<float>() ||
+		    newLimits.max().get<float>() != initialLimits.max().get<float>()) {
+			cerr << "The brightness control limits have changed" << endl;
+			return TestFail;
+		}
+
 		/* Deserialize the control list and verify the contents. */
 		buffer = ByteStreamBuffer(const_cast<const uint8_t *>(listData.data()),
 					  listData.size());
-- 
2.32.0



More information about the libcamera-devel mailing list