test: controls: control_value: Expand test to cover array controls
Add tests to ControlValueTest to cover array controls of all supported types. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
38d6e5b9ca
commit
50478550e5
1 changed files with 107 additions and 0 deletions
|
@ -5,6 +5,7 @@
|
||||||
* control_value.cpp - ControlValue tests
|
* control_value.cpp - ControlValue tests
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
#include <libcamera/controls.h>
|
#include <libcamera/controls.h>
|
||||||
|
@ -48,6 +49,26 @@ protected:
|
||||||
return TestFail;
|
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.
|
* Integer8 type.
|
||||||
*/
|
*/
|
||||||
|
@ -68,6 +89,26 @@ protected:
|
||||||
return TestFail;
|
return TestFail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::array<uint8_t, 4> bytes{ 3, 14, 15, 9 };
|
||||||
|
value.set(Span<uint8_t>(bytes));
|
||||||
|
if (value.isNone() || !value.isArray() ||
|
||||||
|
value.type() != ControlTypeByte) {
|
||||||
|
cerr << "Control type mismatch after setting to uint8_t array" << endl;
|
||||||
|
return TestFail;
|
||||||
|
}
|
||||||
|
|
||||||
|
Span<const uint8_t> int8sResult = value.get<Span<const uint8_t>>();
|
||||||
|
if (bytes.size() != int8sResult.size() ||
|
||||||
|
!std::equal(bytes.begin(), bytes.end(), int8sResult.begin())) {
|
||||||
|
cerr << "Control value mismatch after setting to uint8_t array" << endl;
|
||||||
|
return TestFail;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value.toString() != "[ 3, 14, 15, 9 ]") {
|
||||||
|
cerr << "Control string mismatch after setting to uint8_t array" << endl;
|
||||||
|
return TestFail;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Integer32 type.
|
* Integer32 type.
|
||||||
*/
|
*/
|
||||||
|
@ -88,6 +129,26 @@ protected:
|
||||||
return TestFail;
|
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.
|
* Integer64 type.
|
||||||
*/
|
*/
|
||||||
|
@ -108,6 +169,26 @@ protected:
|
||||||
return TestFail;
|
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.
|
* Float type.
|
||||||
*/
|
*/
|
||||||
|
@ -128,6 +209,32 @@ protected:
|
||||||
return TestFail;
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The string representation for the third value doesn't match
|
||||||
|
* the value in the floats array above, due to limited precision
|
||||||
|
* of the float type that can't properly represent the speed of
|
||||||
|
* light.
|
||||||
|
*/
|
||||||
|
if (value.toString() != "[ 3.141593, 2.718282, 299792448.000000 ]") {
|
||||||
|
cerr << "Control string mismatch after setting to float array" << endl;
|
||||||
|
return TestFail;
|
||||||
|
}
|
||||||
|
|
||||||
return TestPass;
|
return TestPass;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue