[libcamera-devel] [PATCH v5 5/9] test: generated_serializer: Test Flags that is struct member
Jacopo Mondi
jacopo at jmondi.org
Wed Oct 12 15:39:17 CEST 2022
Hi Paul
On Tue, Oct 11, 2022 at 07:58:55PM +0900, Paul Elder via libcamera-devel wrote:
> Add fields to the test struct to test serialization/deserialization of
> scoped enums and flags that are struct members.
>
> Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
>
> ---
> Changes in v5:
> - Add scoped enum to the test (basically the enum that the flag is
> created from)
> - This caught something that I missed in v4, which is why there is a
> v5 instead of just being merged...
> - Add a TEST_SCOPED_ENUM_EQUALITY macro
>
> No change in v4
>
> Changes in v3:
> - add [scopedEnum] to enum ErrorFlags
> - s/[Flags]/[flags]/
>
> Changes in v2:
> - use new attribute-based mojom definition for Flags
> ---
> .../generated_serializer_test.cpp | 21 +++++++++++++++++++
> .../include/libcamera/ipa/test.mojom | 9 ++++++++
> 2 files changed, 30 insertions(+)
>
> diff --git a/test/serialization/generated_serializer/generated_serializer_test.cpp b/test/serialization/generated_serializer/generated_serializer_test.cpp
> index a4639a80..4670fe46 100644
> --- a/test/serialization/generated_serializer/generated_serializer_test.cpp
> +++ b/test/serialization/generated_serializer/generated_serializer_test.cpp
> @@ -35,6 +35,13 @@ if (struct1.field != struct2.field) { \
> return TestFail; \
> }
>
> +#define TEST_SCOPED_ENUM_EQUALITY(struct1, struct2, field) \
> +if (struct1.field != struct2.field) { \
> + cerr << #field << " field incorrect" << endl; \
> + return TestFail; \
> +}
> +
> +
> ipa::test::TestStruct t, u;
>
> t.m = {
> @@ -52,6 +59,12 @@ if (struct1.field != struct2.field) { \
> t.s3 = "lorem ipsum";
> t.i = 58527;
> t.c = ipa::test::IPAOperationInit;
> + t.e = ipa::test::ErrorFlags::Error1;
> +
> + Flags<ipa::test::ErrorFlags> flags;
> + flags |= ipa::test::ErrorFlags::Error1;
> + flags |= ipa::test::ErrorFlags::Error2;
> + t.f = flags;
Or
t.f = ipa::test::ErrorFlags::Error1
| ipa::test::ErrorFlags::Error2;
Minor apart
Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
Thanks
j
>
> std::vector<uint8_t> serialized;
>
> @@ -72,6 +85,8 @@ if (struct1.field != struct2.field) { \
> TEST_FIELD_EQUALITY(t, u, i);
> TEST_FIELD_EQUALITY(t, u, c);
>
> + TEST_SCOPED_ENUM_EQUALITY(t, u, e);
> + TEST_SCOPED_ENUM_EQUALITY(t, u, f);
>
> /* Test vector of generated structs */
> std::vector<ipa::test::TestStruct> v = { t, u };
> @@ -96,12 +111,18 @@ if (struct1.field != struct2.field) { \
> TEST_FIELD_EQUALITY(v[0], w[0], i);
> TEST_FIELD_EQUALITY(v[0], w[0], c);
>
> + TEST_SCOPED_ENUM_EQUALITY(v[0], w[0], e);
> + TEST_SCOPED_ENUM_EQUALITY(v[0], w[0], f);
> +
> 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);
>
> + TEST_SCOPED_ENUM_EQUALITY(v[1], w[1], e);
> + TEST_SCOPED_ENUM_EQUALITY(v[1], w[1], f);
> +
> 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..91c31642 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,
> };
>
> +[scopedEnum] enum ErrorFlags {
> + Error1 = 0x1,
> + Error2 = 0x2,
> + Error3 = 0x4,
> + Error4 = 0x8,
> +};
> +
> struct IPASettings {};
>
> struct TestStruct {
> @@ -19,6 +26,8 @@ struct TestStruct {
> int32 i;
> string s3;
> IPAOperationCode c;
> + ErrorFlags e;
> + [flags] ErrorFlags f;
> };
>
> interface IPATestInterface {
> --
> 2.30.2
>
More information about the libcamera-devel
mailing list