test: generated_serializer: Test Flags that is struct member

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@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Paul Elder 2022-08-03 19:56:36 +09:00
parent 207c9e1c1d
commit deaf13de9b
2 changed files with 30 additions and 0 deletions

View file

@ -35,6 +35,13 @@ if (struct1.field != struct2.field) { \
return TestFail; \ 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; ipa::test::TestStruct t, u;
t.m = { t.m = {
@ -52,6 +59,12 @@ if (struct1.field != struct2.field) { \
t.s3 = "lorem ipsum"; t.s3 = "lorem ipsum";
t.i = 58527; t.i = 58527;
t.c = ipa::test::IPAOperationInit; 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;
std::vector<uint8_t> serialized; 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, i);
TEST_FIELD_EQUALITY(t, u, c); 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 */ /* Test vector of generated structs */
std::vector<ipa::test::TestStruct> v = { t, u }; 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], i);
TEST_FIELD_EQUALITY(v[0], w[0], c); 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], s1);
TEST_FIELD_EQUALITY(v[1], w[1], s2); TEST_FIELD_EQUALITY(v[1], w[1], s2);
TEST_FIELD_EQUALITY(v[1], w[1], s3); TEST_FIELD_EQUALITY(v[1], w[1], s3);
TEST_FIELD_EQUALITY(v[1], w[1], i); TEST_FIELD_EQUALITY(v[1], w[1], i);
TEST_FIELD_EQUALITY(v[1], w[1], c); 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; return TestPass;
} }

View file

@ -9,6 +9,13 @@ enum IPAOperationCode {
IPAOperationStop, IPAOperationStop,
}; };
[scopedEnum] enum ErrorFlags {
Error1 = 0x1,
Error2 = 0x2,
Error3 = 0x4,
Error4 = 0x8,
};
struct IPASettings {}; struct IPASettings {};
struct TestStruct { struct TestStruct {
@ -19,6 +26,8 @@ struct TestStruct {
int32 i; int32 i;
string s3; string s3;
IPAOperationCode c; IPAOperationCode c;
ErrorFlags e;
[flags] ErrorFlags f;
}; };
interface IPATestInterface { interface IPATestInterface {