diff options
author | jheaff1 <jheaff1@outlook.com> | 2023-06-09 16:15:45 +0300 |
---|---|---|
committer | Petteri Aimonen <jpa@github.mail.kapsi.fi> | 2023-06-12 09:44:42 +0300 |
commit | bf706840b4fc91121210eff8195f8d2ea6ee99b0 (patch) | |
tree | a7f470c5eca3e6b6be87c6aaa3a80a5f3c05a401 | |
parent | 19bea327c5706ef2b48c030a3937fed998d580b4 (diff) |
Add unit test for int_size option for enums
-rw-r--r-- | tests/enum_sizes/SConscript | 2 | ||||
-rw-r--r-- | tests/enum_sizes/enumsizes.proto | 35 | ||||
-rw-r--r-- | tests/enum_sizes/enumsizes_intsize_unittests.cc | 16 | ||||
-rw-r--r-- | tests/enum_sizes/enumsizes_intsize_unittests.h | 3 | ||||
-rw-r--r-- | tests/enum_sizes/enumsizes_unittests.c | 3 |
5 files changed, 59 insertions, 0 deletions
diff --git a/tests/enum_sizes/SConscript b/tests/enum_sizes/SConscript index 048592e..7b73163 100644 --- a/tests/enum_sizes/SConscript +++ b/tests/enum_sizes/SConscript @@ -5,8 +5,10 @@ Import('env') env.NanopbProto('enumsizes') p = env.Program(["enumsizes_unittests.c", + "enumsizes_intsize_unittests.cc", "enumsizes.pb.c", "$COMMON/pb_encode.o", "$COMMON/pb_decode.o", "$COMMON/pb_common.o"]) env.RunTest(p) + diff --git a/tests/enum_sizes/enumsizes.proto b/tests/enum_sizes/enumsizes.proto index a85d416..efd8212 100644 --- a/tests/enum_sizes/enumsizes.proto +++ b/tests/enum_sizes/enumsizes.proto @@ -58,6 +58,41 @@ enum PackedInt16 { PI16_MAX = 32767; } +enum IntSizeInt8 +{ + option (nanopb_enumopt).int_size = IS_8; + I8_A = 0; + I8_B = 2; + I8_C = 3; +} + + +enum IntSizeInt16 +{ + option (nanopb_enumopt).int_size = IS_16; + I16_A = 0; + I16_B = 2; + I16_C = 3; +} + + +enum IntSizeInt32 +{ + option (nanopb_enumopt).int_size = IS_32; + I32_A = 0; + I32_B = 2; + I32_C = 3; +} + + +enum IntSizeInt64 +{ + option (nanopb_enumopt).int_size = IS_64; + I64_A = 0; + I64_B = 2; + I64_C = 3; +} + /* Protobuf supports enums up to 32 bits. * The 32 bit case is covered by HugeEnum in the alltypes test. */ diff --git a/tests/enum_sizes/enumsizes_intsize_unittests.cc b/tests/enum_sizes/enumsizes_intsize_unittests.cc new file mode 100644 index 0000000..4f4cd3f --- /dev/null +++ b/tests/enum_sizes/enumsizes_intsize_unittests.cc @@ -0,0 +1,16 @@ +#include <stdio.h> +#include "enumsizes.pb.h" +#include "unittests.h" + +extern "C" int TestIntSize() { + int status = 0; + + TEST(sizeof(IntSizeInt8) == sizeof(uint8_t)); + TEST(sizeof(IntSizeInt16) == sizeof(uint16_t)); + TEST(sizeof(IntSizeInt32) == sizeof(uint32_t)); + TEST(sizeof(IntSizeInt64) == sizeof(uint64_t)); + + if (status != 0) fprintf(stdout, "\n\nSome tests FAILED!\n"); + + return status; +} diff --git a/tests/enum_sizes/enumsizes_intsize_unittests.h b/tests/enum_sizes/enumsizes_intsize_unittests.h new file mode 100644 index 0000000..091fbe7 --- /dev/null +++ b/tests/enum_sizes/enumsizes_intsize_unittests.h @@ -0,0 +1,3 @@ +#pragma once + +int TestIntSize();
\ No newline at end of file diff --git a/tests/enum_sizes/enumsizes_unittests.c b/tests/enum_sizes/enumsizes_unittests.c index 5606895..f2fbf8f 100644 --- a/tests/enum_sizes/enumsizes_unittests.c +++ b/tests/enum_sizes/enumsizes_unittests.c @@ -4,6 +4,7 @@ #include <pb_encode.h> #include "unittests.h" #include "enumsizes.pb.h" +#include "enumsizes_intsize_unittests.h" int main() { @@ -65,6 +66,8 @@ int main() TEST(msg1.i16_max == (int)msg2.i16_max); } + status |= TestIntSize(); + if (status != 0) fprintf(stdout, "\n\nSome tests FAILED!\n"); |