[libcamera-devel,v4,03/16] test: control_list: Test ControlList::merge()
diff mbox series

Message ID 20210430160026.190724-4-jacopo@jmondi.org
State Superseded
Headers show
Series
  • Support SensorTimestamp metadata
Related show

Commit Message

Jacopo Mondi April 30, 2021, 4 p.m. UTC
Test the ControlList::merge() method by creating a new list and
merging it with the existing one.

Test that the merged list contains all the controls, the existing values
do not get overwritten and the ones copied are not changed.

Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Hirokazu Honda <hiroh@chromium.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
---
 test/controls/control_list.cpp | 46 ++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

Patch
diff mbox series

diff --git a/test/controls/control_list.cpp b/test/controls/control_list.cpp
index 2b321ddd6fa4..70cf61b85cbc 100644
--- a/test/controls/control_list.cpp
+++ b/test/controls/control_list.cpp
@@ -150,6 +150,52 @@  protected:
 			return TestFail;
 		}
 
+		/*
+		 * Create a new list with a new control and merge it with the
+		 * existing one, verifying that the existing controls
+		 * values don't get overwritten.
+		 */
+		ControlList mergeList(controls::controls, &validator);
+		mergeList.set(controls::Brightness, 0.7f);
+		mergeList.set(controls::Saturation, 0.4f);
+
+		mergeList.merge(list);
+		if (mergeList.size() != 3) {
+			cout << "Merged list should contain three elements" << endl;
+			return TestFail;
+		}
+
+		if (list.size() != 2) {
+			cout << "The list to merge should contain two elements"
+			     << endl;
+			return TestFail;
+		}
+
+		if (!mergeList.contains(controls::Brightness) ||
+		    !mergeList.contains(controls::Contrast) ||
+		    !mergeList.contains(controls::Saturation)) {
+			cout << "Merged list does not contain all controls" << endl;
+			return TestFail;
+		}
+
+		if (mergeList.get(controls::Brightness) != 0.7f) {
+			cout << "Brightness control value changed after merging lists"
+			     << endl;
+			return TestFail;
+		}
+
+		if (mergeList.get(controls::Contrast) != 1.1f) {
+			cout << "Contrast control value changed after merging lists"
+			     << endl;
+			return TestFail;
+		}
+
+		if (mergeList.get(controls::Saturation) != 0.4f) {
+			cout << "Saturation control value changed after merging lists"
+			     << endl;
+			return TestFail;
+		}
+
 		return TestPass;
 	}
 };