[libcamera-devel] [PATCH 33/31] test: controls: control_value: Expand test to cover array controls
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Sun Mar 1 20:26:19 CET 2020
Add tests to ControlValueTest to cover array controls of all supported
types.
Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
test/controls/control_value.cpp | 101 ++++++++++++++++++++++++++++++++
1 file changed, 101 insertions(+)
diff --git a/test/controls/control_value.cpp b/test/controls/control_value.cpp
index 111b4c5d1a08..f30bff4acc68 100644
--- a/test/controls/control_value.cpp
+++ b/test/controls/control_value.cpp
@@ -5,6 +5,7 @@
* control_value.cpp - ControlValue tests
*/
+#include <algorithm>
#include <iostream>
#include <libcamera/controls.h>
@@ -48,6 +49,26 @@ protected:
return TestFail;
}
+ std::array<bool, 2> bools{ true, false };
+ value.set(Span<bool>(bools));
+ if (value.isNone() || !value.isArray() ||
+ value.type() != ControlTypeBool) {
+ cerr << "Control type mismatch after setting to bool array" << endl;
+ return TestFail;
+ }
+
+ Span<const bool> boolsResult = value.get<Span<const bool>>();
+ if (bools.size() != boolsResult.size() ||
+ !std::equal(bools.begin(), bools.end(), boolsResult.begin())) {
+ cerr << "Control value mismatch after setting to bool" << endl;
+ return TestFail;
+ }
+
+ if (value.toString() != "[ true, false ]") {
+ cerr << "Control string mismatch after setting to bool array" << endl;
+ return TestFail;
+ }
+
/*
* Integer8 type.
*/
@@ -68,6 +89,26 @@ protected:
return TestFail;
}
+ std::array<int8_t, 4> int8s{ 3, 14, 15, 9 };
+ value.set(Span<int8_t>(int8s));
+ if (value.isNone() || !value.isArray() ||
+ value.type() != ControlTypeInteger8) {
+ cerr << "Control type mismatch after setting to int8_t array" << endl;
+ return TestFail;
+ }
+
+ Span<const int8_t> int8sResult = value.get<Span<const int8_t>>();
+ if (int8s.size() != int8sResult.size() ||
+ !std::equal(int8s.begin(), int8s.end(), int8sResult.begin())) {
+ cerr << "Control value mismatch after setting to int8_t array" << endl;
+ return TestFail;
+ }
+
+ if (value.toString() != "[ 3, 14, 15, 9 ]") {
+ cerr << "Control string mismatch after setting to int8_t array" << endl;
+ return TestFail;
+ }
+
/*
* Integer32 type.
*/
@@ -88,6 +129,26 @@ protected:
return TestFail;
}
+ std::array<int32_t, 4> int32s{ 3, 14, 15, 9 };
+ value.set(Span<int32_t>(int32s));
+ if (value.isNone() || !value.isArray() ||
+ value.type() != ControlTypeInteger32) {
+ cerr << "Control type mismatch after setting to int32_t array" << endl;
+ return TestFail;
+ }
+
+ Span<const int32_t> int32sResult = value.get<Span<const int32_t>>();
+ if (int32s.size() != int32sResult.size() ||
+ !std::equal(int32s.begin(), int32s.end(), int32sResult.begin())) {
+ cerr << "Control value mismatch after setting to int32_t array" << endl;
+ return TestFail;
+ }
+
+ if (value.toString() != "[ 3, 14, 15, 9 ]") {
+ cerr << "Control string mismatch after setting to int32_t array" << endl;
+ return TestFail;
+ }
+
/*
* Integer64 type.
*/
@@ -108,6 +169,26 @@ protected:
return TestFail;
}
+ std::array<int64_t, 4> int64s{ 3, 14, 15, 9 };
+ value.set(Span<int64_t>(int64s));
+ if (value.isNone() || !value.isArray() ||
+ value.type() != ControlTypeInteger64) {
+ cerr << "Control type mismatch after setting to int64_t array" << endl;
+ return TestFail;
+ }
+
+ Span<const int64_t> int64sResult = value.get<Span<const int64_t>>();
+ if (int64s.size() != int64sResult.size() ||
+ !std::equal(int64s.begin(), int64s.end(), int64sResult.begin())) {
+ cerr << "Control value mismatch after setting to int64_t array" << endl;
+ return TestFail;
+ }
+
+ if (value.toString() != "[ 3, 14, 15, 9 ]") {
+ cerr << "Control string mismatch after setting to int64_t array" << endl;
+ return TestFail;
+ }
+
/*
* Float type.
*/
@@ -128,6 +209,26 @@ protected:
return TestFail;
}
+ std::array<float, 3> floats{ 3.141593, 2.718282, 299792458.0 };
+ value.set(Span<float>(floats));
+ if (value.isNone() || !value.isArray() ||
+ value.type() != ControlTypeFloat) {
+ cerr << "Control type mismatch after setting to float array" << endl;
+ return TestFail;
+ }
+
+ Span<const float> floatsResult = value.get<Span<const float>>();
+ if (floats.size() != floatsResult.size() ||
+ !std::equal(floats.begin(), floats.end(), floatsResult.begin())) {
+ cerr << "Control value mismatch after setting to float array" << endl;
+ return TestFail;
+ }
+
+ if (value.toString() != "[ 3.141593, 2.718282, 299792448.000000 ]") {
+ cerr << "Control string mismatch after setting to float array" << endl;
+ return TestFail;
+ }
+
return TestPass;
}
};
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list