[libcamera-devel,7/9] test: generated_serializer: Test Flags that is struct member
diff mbox series

Message ID 20220803112150.3040287-8-paul.elder@ideasonboard.com
State Superseded
Headers show
Series
  • utils: ipc: Add support for enums and Flags
Related show

Commit Message

Paul Elder Aug. 3, 2022, 11:21 a.m. UTC
Add a Flags field to the test struct to test
serialization/deserialization of Flags that are struct members.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
---
 .../generated_serializer_test.cpp             | 19 +++++++++++++++++++
 .../include/libcamera/ipa/test.mojom          |  8 ++++++++
 2 files changed, 27 insertions(+)

Patch
diff mbox series

diff --git a/test/serialization/generated_serializer/generated_serializer_test.cpp b/test/serialization/generated_serializer/generated_serializer_test.cpp
index a4639a80..a2d71d62 100644
--- a/test/serialization/generated_serializer/generated_serializer_test.cpp
+++ b/test/serialization/generated_serializer/generated_serializer_test.cpp
@@ -53,6 +53,11 @@  if (struct1.field != struct2.field) {				\
 		t.i  = 58527;
 		t.c = ipa::test::IPAOperationInit;
 
+		Flags<ipa::test::ErrorFlags> flags;
+		flags |= ipa::test::ErrorFlags::Error1;
+		flags |= ipa::test::ErrorFlags::Error2;
+		t.f = flags;
+
 		std::vector<uint8_t> serialized;
 
 		std::tie(serialized, ignore) =
@@ -72,6 +77,10 @@  if (struct1.field != struct2.field) {				\
 		TEST_FIELD_EQUALITY(t, u, i);
 		TEST_FIELD_EQUALITY(t, u, c);
 
+		if (t.f != u.f) {
+			cerr << "Flags f field incorrect" << endl;
+			return TestFail;
+		}
 
 		/* Test vector of generated structs */
 		std::vector<ipa::test::TestStruct> v = { t, u };
@@ -96,12 +105,22 @@  if (struct1.field != struct2.field) {				\
 		TEST_FIELD_EQUALITY(v[0], w[0], i);
 		TEST_FIELD_EQUALITY(v[0], w[0], c);
 
+		if (v[0].f != w[0].f) {
+			cerr << "Flags f field incorrect" << endl;
+			return TestFail;
+		}
+
 		TEST_FIELD_EQUALITY(v[1], w[1], s1);
 		TEST_FIELD_EQUALITY(v[1], w[1], s2);
 		TEST_FIELD_EQUALITY(v[1], w[1], s3);
 		TEST_FIELD_EQUALITY(v[1], w[1], i);
 		TEST_FIELD_EQUALITY(v[1], w[1], c);
 
+		if (v[1].f != w[1].f) {
+			cerr << "Flags f field incorrect" << endl;
+			return TestFail;
+		}
+
 		return TestPass;
 	}
 
diff --git a/test/serialization/generated_serializer/include/libcamera/ipa/test.mojom b/test/serialization/generated_serializer/include/libcamera/ipa/test.mojom
index 73081b40..5954672b 100644
--- a/test/serialization/generated_serializer/include/libcamera/ipa/test.mojom
+++ b/test/serialization/generated_serializer/include/libcamera/ipa/test.mojom
@@ -9,6 +9,13 @@  enum IPAOperationCode {
 	IPAOperationStop,
 };
 
+enum Flags_ErrorFlags_t {
+	Error1 = 0x1,
+	Error2 = 0x2,
+	Error3 = 0x4,
+	Error4 = 0x8,
+};
+
 struct IPASettings {};
 
 struct TestStruct {
@@ -19,6 +26,7 @@  struct TestStruct {
 	int32 i;
 	string s3;
 	IPAOperationCode c;
+	Flags_ErrorFlags_t f;
 };
 
 interface IPATestInterface {