AllTypes testcase: add test for integer_size option.
diff --git a/tests/alltypes/alltypes.options b/tests/alltypes/alltypes.options
index 5d9f81e..ee57bc0 100644
--- a/tests/alltypes/alltypes.options
+++ b/tests/alltypes/alltypes.options
@@ -2,4 +2,6 @@
* max_count:5
*.*fbytes fixed_length:true max_size:4
*.*farray fixed_count:true max_count:5
+IntSizes.*int8 int_size:IS_8
+IntSizes.*int16 int_size:IS_16
DescriptorSize8 descriptorsize:DS_8
diff --git a/tests/alltypes/alltypes.proto b/tests/alltypes/alltypes.proto
index de0e26a..df15d40 100644
--- a/tests/alltypes/alltypes.proto
+++ b/tests/alltypes/alltypes.proto
@@ -30,6 +30,15 @@
required int32 largetag = 65535 [default = 0];
}
+message IntSizes {
+ required int32 req_int8 = 1 ;
+ required uint32 req_uint8 = 2 ;
+ required sint32 req_sint8 = 3 ;
+ required int32 req_int16 = 4 ;
+ required uint32 req_uint16 = 5 ;
+ required sint32 req_sint16 = 6 ;
+}
+
message DescriptorSize8 {
required int32 first = 1;
required int32 second = 22222;
@@ -119,6 +128,9 @@
EmptyMessage oneof_msg2 = 61;
}
+ // Check support for custom integer sizes
+ required IntSizes req_intsizes = 96;
+
// Check support for 8-word descriptors
required DescriptorSize8 req_ds8 = 97;
diff --git a/tests/alltypes/decode_alltypes.c b/tests/alltypes/decode_alltypes.c
index d74170d..1c49080 100644
--- a/tests/alltypes/decode_alltypes.c
+++ b/tests/alltypes/decode_alltypes.c
@@ -101,6 +101,13 @@
TEST(alltypes.req_ds8.first == 9991);
TEST(alltypes.req_ds8.second == 9992);
+
+ TEST(alltypes.req_intsizes.req_int8 == -128);
+ TEST(alltypes.req_intsizes.req_uint8 == 255);
+ TEST(alltypes.req_intsizes.req_sint8 == -128);
+ TEST(alltypes.req_intsizes.req_int16 == -32768);
+ TEST(alltypes.req_intsizes.req_uint16 == 65535);
+ TEST(alltypes.req_intsizes.req_sint16 == -32768);
}
if (mode == 0)
diff --git a/tests/alltypes/encode_alltypes.c b/tests/alltypes/encode_alltypes.c
index 02ad7b8..00d2615 100644
--- a/tests/alltypes/encode_alltypes.c
+++ b/tests/alltypes/encode_alltypes.c
@@ -92,6 +92,13 @@
alltypes.req_ds8.first = 9991;
alltypes.req_ds8.second = 9992;
+
+ alltypes.req_intsizes.req_int8 = -128;
+ alltypes.req_intsizes.req_uint8 = 255;
+ alltypes.req_intsizes.req_sint8 = -128;
+ alltypes.req_intsizes.req_int16 = -32768;
+ alltypes.req_intsizes.req_uint16 = 65535;
+ alltypes.req_intsizes.req_sint16 = -32768;
}
if (mode == 1)
diff --git a/tests/alltypes_callback/encode_alltypes_callback.c b/tests/alltypes_callback/encode_alltypes_callback.c
index 66a644d..8f00b77 100644
--- a/tests/alltypes_callback/encode_alltypes_callback.c
+++ b/tests/alltypes_callback/encode_alltypes_callback.c
@@ -204,6 +204,14 @@
pb_encode_submessage(stream, DescriptorSize8_fields, &ds8);
}
+static bool write_intsizes(pb_ostream_t *stream, const pb_field_t *field, void * const *arg)
+{
+ IntSizes intsizes = {-128, 255, -128, -32768, 65535, -32768};
+
+ return pb_encode_tag_for_field(stream, field) &&
+ pb_encode_submessage(stream, IntSizes_fields, &intsizes);
+}
+
static bool write_repeated_emptymsg(pb_ostream_t *stream, const pb_field_t *field, void * const *arg)
{
EmptyMessage emptymsg = {0};
@@ -376,6 +384,8 @@
alltypes.req_ds8.funcs.encode = &write_ds8;
+ alltypes.req_intsizes.funcs.encode = &write_intsizes;
+
/* Bind callbacks for optional fields */
if (mode != 0)
{
diff --git a/tests/alltypes_pointer/alltypes.options b/tests/alltypes_pointer/alltypes.options
index ca1587e..eca839c 100644
--- a/tests/alltypes_pointer/alltypes.options
+++ b/tests/alltypes_pointer/alltypes.options
@@ -2,5 +2,7 @@
* type:FT_POINTER
*.*fbytes fixed_length:true max_size:4
*.*farray fixed_count:true max_count:5
+IntSizes.*int8 int_size:IS_8
+IntSizes.*int16 int_size:IS_16
DescriptorSize8 descriptorsize:DS_8
diff --git a/tests/alltypes_pointer/decode_alltypes_pointer.c b/tests/alltypes_pointer/decode_alltypes_pointer.c
index 7acb6a5..d2492e2 100644
--- a/tests/alltypes_pointer/decode_alltypes_pointer.c
+++ b/tests/alltypes_pointer/decode_alltypes_pointer.c
@@ -156,6 +156,14 @@
TEST(alltypes.req_ds8->first && *alltypes.req_ds8->first == 9991);
TEST(alltypes.req_ds8->first && *alltypes.req_ds8->second == 9992);
+ TEST(alltypes.req_intsizes);
+ TEST(*alltypes.req_intsizes->req_int8 == -128);
+ TEST(*alltypes.req_intsizes->req_uint8 == 255);
+ TEST(*alltypes.req_intsizes->req_sint8 == -128);
+ TEST(*alltypes.req_intsizes->req_int16 == -32768);
+ TEST(*alltypes.req_intsizes->req_uint16 == 65535);
+ TEST(*alltypes.req_intsizes->req_sint16 == -32768);
+
TEST(alltypes.end && *alltypes.end == 1099);
pb_release(AllTypes_fields, &alltypes);
diff --git a/tests/alltypes_pointer/encode_alltypes_pointer.c b/tests/alltypes_pointer/encode_alltypes_pointer.c
index 8cb44ee..ed780de 100644
--- a/tests/alltypes_pointer/encode_alltypes_pointer.c
+++ b/tests/alltypes_pointer/encode_alltypes_pointer.c
@@ -115,6 +115,16 @@
static int32_t second = 9992;
DescriptorSize8 req_ds8 = {&first, &second};
+ /* Values for IntSizes message. */
+ static int8_t req_int8 = -128;
+ static uint8_t req_uint8 = 255;
+ static int8_t req_sint8 = -128;
+ static int16_t req_int16 = -32768;
+ static uint16_t req_uint16 = 65535;
+ static int16_t req_sint16 = -32768;
+ IntSizes req_intsizes = {&req_int8, &req_uint8, &req_sint8,
+ &req_int16, &req_uint16, &req_sint16};
+
/* Initialize the message struct with pointers to the fields. */
AllTypes alltypes = {0};
@@ -139,6 +149,7 @@
alltypes.req_fbytes = &req_fbytes;
alltypes.req_limits = &req_limits;
alltypes.req_ds8 = &req_ds8;
+ alltypes.req_intsizes = &req_intsizes;
alltypes.rep_int32_count = 5; alltypes.rep_int32 = rep_int32;
alltypes.rep_int64_count = 5; alltypes.rep_int64 = rep_int64;
diff --git a/tests/common_unittests/common_unittests.c b/tests/common_unittests/common_unittests.c
index 2fb1f9f..faa8173 100644
--- a/tests/common_unittests/common_unittests.c
+++ b/tests/common_unittests/common_unittests.c
@@ -91,21 +91,25 @@
TEST(iter.required_field_index == 19)
TEST(iter.submessage_index == 7)
- TEST(pb_field_iter_next(&iter) && iter.tag == 97 && iter.pData == &msg.req_ds8 && !iter.pSize)
+ TEST(pb_field_iter_next(&iter) && iter.tag == 96 && iter.pData == &msg.req_intsizes && !iter.pSize)
TEST(iter.required_field_index == 19)
TEST(iter.submessage_index == 8)
- TEST(pb_field_iter_next(&iter) && iter.tag == 98 && iter.pData == &msg.req_limits && !iter.pSize)
+ TEST(pb_field_iter_next(&iter) && iter.tag == 97 && iter.pData == &msg.req_ds8 && !iter.pSize)
TEST(iter.required_field_index == 20)
TEST(iter.submessage_index == 9)
- TEST(pb_field_iter_next(&iter) && iter.tag == 200 && iter.pData == &msg.extensions && !iter.pSize)
+ TEST(pb_field_iter_next(&iter) && iter.tag == 98 && iter.pData == &msg.req_limits && !iter.pSize)
TEST(iter.required_field_index == 21)
TEST(iter.submessage_index == 10)
+ TEST(pb_field_iter_next(&iter) && iter.tag == 200 && iter.pData == &msg.extensions && !iter.pSize)
+ TEST(iter.required_field_index == 22)
+ TEST(iter.submessage_index == 11)
+
TEST(pb_field_iter_next(&iter) && iter.tag == 999 && iter.pData == &msg.end && !iter.pSize)
- TEST(iter.required_field_index == 21)
- TEST(iter.submessage_index == 10)
+ TEST(iter.required_field_index == 22)
+ TEST(iter.submessage_index == 11)
TEST(!pb_field_iter_next(&iter))
diff --git a/tests/field_size_16/alltypes.proto b/tests/field_size_16/alltypes.proto
index bd88108..c094421 100644
--- a/tests/field_size_16/alltypes.proto
+++ b/tests/field_size_16/alltypes.proto
@@ -29,6 +29,15 @@
required int32 largetag = 65535 [default = 0];
}
+message IntSizes {
+ required int32 req_int8 = 1 ;
+ required uint32 req_uint8 = 2 ;
+ required sint32 req_sint8 = 3 ;
+ required int32 req_int16 = 4 ;
+ required uint32 req_uint16 = 5 ;
+ required sint32 req_sint16 = 6 ;
+}
+
message DescriptorSize8 {
required int32 first = 1;
required int32 second = 22222;
@@ -118,6 +127,9 @@
EmptyMessage oneof_msg2 = 10061;
}
+ // Check support for custom integer sizes
+ required IntSizes req_intsizes = 96;
+
// Check support for 8-word descriptors
required DescriptorSize8 req_ds8 = 97;
diff --git a/tests/field_size_32/alltypes.proto b/tests/field_size_32/alltypes.proto
index e114301..536fc2a 100644
--- a/tests/field_size_32/alltypes.proto
+++ b/tests/field_size_32/alltypes.proto
@@ -29,6 +29,15 @@
required int32 largetag = 65535 [default = 0];
}
+message IntSizes {
+ required int32 req_int8 = 1 ;
+ required uint32 req_uint8 = 2 ;
+ required sint32 req_sint8 = 3 ;
+ required int32 req_int16 = 4 ;
+ required uint32 req_uint16 = 5 ;
+ required sint32 req_sint16 = 6 ;
+}
+
message DescriptorSize8 {
required int32 first = 1;
required int32 second = 22222;
@@ -118,6 +127,9 @@
EmptyMessage oneof_msg2 = 10061;
}
+ // Check support for custom integer sizes
+ required IntSizes req_intsizes = 96;
+
// Check support for 8-word descriptors
required DescriptorSize8 req_ds8 = 97;
diff --git a/tests/fuzztest/alltypes_pointer.options b/tests/fuzztest/alltypes_pointer.options
index 4ee5c52..0b633fc 100644
--- a/tests/fuzztest/alltypes_pointer.options
+++ b/tests/fuzztest/alltypes_pointer.options
@@ -3,3 +3,5 @@
*.*fbytes fixed_length:true max_size:4
*.*farray fixed_count:true max_count:5
*.DescriptorSize8 descriptorsize:DS_8
+*.IntSizes.*int8 int_size:IS_8
+*.IntSizes.*int16 int_size:IS_16
diff --git a/tests/fuzztest/alltypes_static.options b/tests/fuzztest/alltypes_static.options
index c16bfd5..923da64 100644
--- a/tests/fuzztest/alltypes_static.options
+++ b/tests/fuzztest/alltypes_static.options
@@ -3,3 +3,5 @@
*.*fbytes fixed_length:true max_size:4
*.*farray fixed_count:true max_count:5
*.DescriptorSize8 descriptorsize:DS_8
+*.IntSizes.*int8 int_size:IS_8
+*.IntSizes.*int16 int_size:IS_16