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; \
}
#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;
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;
}

View file

@ -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 {