[{"id":25402,"web_url":"https://patchwork.libcamera.org/comment/25402/","msgid":"<20221012133917.ydg7fibglib4hfmm@uno.localdomain>","date":"2022-10-12T13:39:17","subject":"Re: [libcamera-devel] [PATCH v5 5/9] test: generated_serializer:\n\tTest Flags that is struct member","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Paul\n\nOn Tue, Oct 11, 2022 at 07:58:55PM +0900, Paul Elder via libcamera-devel wrote:\n> Add fields to the test struct to test serialization/deserialization of\n> scoped enums and flags that are struct members.\n>\n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n>\n> ---\n> Changes in v5:\n> - Add scoped enum to the test (basically the enum that the flag is\n>   created from)\n>   - This caught something that I missed in v4, which is why there is a\n>     v5 instead of just being merged...\n> - Add a TEST_SCOPED_ENUM_EQUALITY macro\n>\n> No change in v4\n>\n> Changes in v3:\n> - add [scopedEnum] to enum ErrorFlags\n> - s/[Flags]/[flags]/\n>\n> Changes in v2:\n> - use new attribute-based mojom definition for Flags\n> ---\n>  .../generated_serializer_test.cpp             | 21 +++++++++++++++++++\n>  .../include/libcamera/ipa/test.mojom          |  9 ++++++++\n>  2 files changed, 30 insertions(+)\n>\n> diff --git a/test/serialization/generated_serializer/generated_serializer_test.cpp b/test/serialization/generated_serializer/generated_serializer_test.cpp\n> index a4639a80..4670fe46 100644\n> --- a/test/serialization/generated_serializer/generated_serializer_test.cpp\n> +++ b/test/serialization/generated_serializer/generated_serializer_test.cpp\n> @@ -35,6 +35,13 @@ if (struct1.field != struct2.field) {\t\t\t\t\\\n>  \treturn TestFail;\t\t\t\t\t\\\n>  }\n>\n> +#define TEST_SCOPED_ENUM_EQUALITY(struct1, struct2, field)\t\\\n> +if (struct1.field != struct2.field) {\t\t\t\t\\\n> +\tcerr << #field << \" field incorrect\" << endl;\t\t\\\n> +\treturn TestFail;\t\t\t\t\t\\\n> +}\n> +\n> +\n>  \t\tipa::test::TestStruct t, u;\n>\n>  \t\tt.m = {\n> @@ -52,6 +59,12 @@ if (struct1.field != struct2.field) {\t\t\t\t\\\n>  \t\tt.s3 = \"lorem ipsum\";\n>  \t\tt.i  = 58527;\n>  \t\tt.c = ipa::test::IPAOperationInit;\n> +\t\tt.e = ipa::test::ErrorFlags::Error1;\n> +\n> +\t\tFlags<ipa::test::ErrorFlags> flags;\n> +\t\tflags |= ipa::test::ErrorFlags::Error1;\n> +\t\tflags |= ipa::test::ErrorFlags::Error2;\n> +\t\tt.f = flags;\n\nOr\n                t.f = ipa::test::ErrorFlags::Error1\n                    | ipa::test::ErrorFlags::Error2;\n\nMinor apart\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nThanks\n  j\n\n>\n>  \t\tstd::vector<uint8_t> serialized;\n>\n> @@ -72,6 +85,8 @@ if (struct1.field != struct2.field) {\t\t\t\t\\\n>  \t\tTEST_FIELD_EQUALITY(t, u, i);\n>  \t\tTEST_FIELD_EQUALITY(t, u, c);\n>\n> +\t\tTEST_SCOPED_ENUM_EQUALITY(t, u, e);\n> +\t\tTEST_SCOPED_ENUM_EQUALITY(t, u, f);\n>\n>  \t\t/* Test vector of generated structs */\n>  \t\tstd::vector<ipa::test::TestStruct> v = { t, u };\n> @@ -96,12 +111,18 @@ if (struct1.field != struct2.field) {\t\t\t\t\\\n>  \t\tTEST_FIELD_EQUALITY(v[0], w[0], i);\n>  \t\tTEST_FIELD_EQUALITY(v[0], w[0], c);\n>\n> +\t\tTEST_SCOPED_ENUM_EQUALITY(v[0], w[0], e);\n> +\t\tTEST_SCOPED_ENUM_EQUALITY(v[0], w[0], f);\n> +\n>  \t\tTEST_FIELD_EQUALITY(v[1], w[1], s1);\n>  \t\tTEST_FIELD_EQUALITY(v[1], w[1], s2);\n>  \t\tTEST_FIELD_EQUALITY(v[1], w[1], s3);\n>  \t\tTEST_FIELD_EQUALITY(v[1], w[1], i);\n>  \t\tTEST_FIELD_EQUALITY(v[1], w[1], c);\n>\n> +\t\tTEST_SCOPED_ENUM_EQUALITY(v[1], w[1], e);\n> +\t\tTEST_SCOPED_ENUM_EQUALITY(v[1], w[1], f);\n> +\n>  \t\treturn TestPass;\n>  \t}\n>\n> diff --git a/test/serialization/generated_serializer/include/libcamera/ipa/test.mojom b/test/serialization/generated_serializer/include/libcamera/ipa/test.mojom\n> index 73081b40..91c31642 100644\n> --- a/test/serialization/generated_serializer/include/libcamera/ipa/test.mojom\n> +++ b/test/serialization/generated_serializer/include/libcamera/ipa/test.mojom\n> @@ -9,6 +9,13 @@ enum IPAOperationCode {\n>  \tIPAOperationStop,\n>  };\n>\n> +[scopedEnum] enum ErrorFlags {\n> +\tError1 = 0x1,\n> +\tError2 = 0x2,\n> +\tError3 = 0x4,\n> +\tError4 = 0x8,\n> +};\n> +\n>  struct IPASettings {};\n>\n>  struct TestStruct {\n> @@ -19,6 +26,8 @@ struct TestStruct {\n>  \tint32 i;\n>  \tstring s3;\n>  \tIPAOperationCode c;\n> +\tErrorFlags e;\n> +\t[flags] ErrorFlags f;\n>  };\n>\n>  interface IPATestInterface {\n> --\n> 2.30.2\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 7713CC0DA4\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 12 Oct 2022 13:39:22 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A236362D9C;\n\tWed, 12 Oct 2022 15:39:21 +0200 (CEST)","from relay11.mail.gandi.net (relay11.mail.gandi.net\n\t[IPv6:2001:4b98:dc4:8::231])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id CAE89603D7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 12 Oct 2022 15:39:20 +0200 (CEST)","(Authenticated sender: jacopo@jmondi.org)\n\tby mail.gandi.net (Postfix) with ESMTPSA id 1AADB10000C;\n\tWed, 12 Oct 2022 13:39:19 +0000 (UTC)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1665581961;\n\tbh=JWWsbYWPldW03iFXTK+nEIDImfKcIkvlhxoMRQ4kyro=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=kqDJBDObhsV/49keYiR2ViWrHUESfrxpvWM8EDE35IL0POMXbqAVwQDrjU+mjR/yk\n\t90K1atRtfJeU133avtsG+XhOD0EkDidyl+tEXtYcsHkkigR91UiC5gghIjfXoiQ4e0\n\ts52N1ybjqYEV0rs6+W68y9iHyr+57sRRIZgpTo1aMo5odooEXcs9MdF3tYWmps7AqW\n\te6AggyQLdzVMnUJrmzGU0WqXy8v1XZLTcTuLxZEJt8LQ/Gsu3n697zkwhLCMaVd852\n\tS8YVu11LzqA9z8V+yRbIbH8hLFwCpQlOd12O6IBzlUCWcEHVqapL6zK5fjhys66Nmg\n\tOaDuBEBs1KCzg==","Date":"Wed, 12 Oct 2022 15:39:17 +0200","To":"Paul Elder <paul.elder@ideasonboard.com>","Message-ID":"<20221012133917.ydg7fibglib4hfmm@uno.localdomain>","References":"<20221011105859.457567-1-paul.elder@ideasonboard.com>\n\t<20221011105859.457567-6-paul.elder@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20221011105859.457567-6-paul.elder@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v5 5/9] test: generated_serializer:\n\tTest Flags that is struct member","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Jacopo Mondi via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Jacopo Mondi <jacopo@jmondi.org>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]