The ControlValue get accessors are implemented with functions of different names, whlie the set accessors use polymorphism to support different control types. This isn't very consistent and intuitive. Make the API clearer by using template methods. This will also have the added advantage that support for the new types will only require adding template specialisations, without adding new methods. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
62 lines
1.3 KiB
C++
62 lines
1.3 KiB
C++
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* Copyright (C) 2019, Google Inc.
|
|
*
|
|
* control_info.cpp - ControlInfo tests
|
|
*/
|
|
|
|
#include <iostream>
|
|
|
|
#include <libcamera/controls.h>
|
|
|
|
#include "test.h"
|
|
|
|
using namespace std;
|
|
using namespace libcamera;
|
|
|
|
class ControlInfoTest : public Test
|
|
{
|
|
protected:
|
|
int run()
|
|
{
|
|
/*
|
|
* Test information retrieval from a control with no minimum
|
|
* and maximum.
|
|
*/
|
|
ControlInfo info(Brightness);
|
|
|
|
if (info.id() != Brightness ||
|
|
info.type() != ControlTypeInteger ||
|
|
info.name() != std::string("Brightness")) {
|
|
cout << "Invalid control identification for Brightness" << endl;
|
|
return TestFail;
|
|
}
|
|
|
|
if (info.min().get<int>() != 0 || info.max().get<int>() != 0) {
|
|
cout << "Invalid control range for Brightness" << endl;
|
|
return TestFail;
|
|
}
|
|
|
|
/*
|
|
* Test information retrieval from a control with a minimum and
|
|
* a maximum value.
|
|
*/
|
|
info = ControlInfo(Contrast, 10, 200);
|
|
|
|
if (info.id() != Contrast ||
|
|
info.type() != ControlTypeInteger ||
|
|
info.name() != std::string("Contrast")) {
|
|
cout << "Invalid control identification for Contrast" << endl;
|
|
return TestFail;
|
|
}
|
|
|
|
if (info.min().get<int>() != 10 || info.max().get<int>() != 200) {
|
|
cout << "Invalid control range for Contrast" << endl;
|
|
return TestFail;
|
|
}
|
|
|
|
return TestPass;
|
|
}
|
|
};
|
|
|
|
TEST_REGISTER(ControlInfoTest)
|