summaryrefslogtreecommitdiff
path: root/LICENSES/GPL-2.0+.txt
blob: ec035b64b3f09a35b99be7cb6ab6a10d01bbc315 (plain)
1
GPL-2.0-or-later.txt
' href='#n10'>10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Copyright (C) 2019, Google Inc.
 *
 * control_info.cpp - ControlInfo tests
 */

#include <iostream>

#include <libcamera/control_ids.h>
#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 range with no minimum and
		 * maximum.
		 */
		ControlInfo brightness;

		if (brightness.min().get<int32_t>() != 0 ||
		    brightness.max().get<int32_t>() != 0) {
			cout << "Invalid control range for Brightness" << endl;
			return TestFail;
		}

		/*
		 * Test information retrieval from a control with a minimum and
		 * a maximum value.
		 */
		ControlInfo contrast(10, 200);

		if (contrast.min().get<int32_t>() != 10 ||
		    contrast.max().get<int32_t>() != 200) {
			cout << "Invalid control range for Contrast" << endl;
			return TestFail;
		}

		/*
		 * Test information retrieval from a control with boolean
		 * values.
		 */
		ControlInfo aeEnable({ false, true }, false);

		if (aeEnable.min().get<bool>() != false ||
		    aeEnable.def().get<bool>() != false ||
		    aeEnable.max().get<bool>() != true) {
			cout << "Invalid control range for AeEnable" << endl;
			return TestFail;
		}

		if (aeEnable.values()[0].get<bool>() != false ||
		    aeEnable.values()[1].get<bool>() != true) {
			cout << "Invalid control values for AeEnable" << endl;
			return TestFail;
		}

		ControlInfo awbEnable(true);

		if (awbEnable.min().get<bool>() != true ||
		    awbEnable.def().get<bool>() != true ||
		    awbEnable.max().get<bool>() != true) {
			cout << "Invalid control range for AwbEnable" << endl;
			return TestFail;
		}

		if (awbEnable.values()[0].get<bool>() != true) {
			cout << "Invalid control values for AwbEnable" << endl;
			return TestFail;
		}

		return TestPass;
	}
};

TEST_REGISTER(ControlInfoTest)