Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nanopb/nanopb.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjheaff1 <jheaff1@outlook.com>2023-06-09 16:15:45 +0300
committerPetteri Aimonen <jpa@github.mail.kapsi.fi>2023-06-12 09:44:42 +0300
commitbf706840b4fc91121210eff8195f8d2ea6ee99b0 (patch)
treea7f470c5eca3e6b6be87c6aaa3a80a5f3c05a401
parent19bea327c5706ef2b48c030a3937fed998d580b4 (diff)
Add unit test for int_size option for enums
-rw-r--r--tests/enum_sizes/SConscript2
-rw-r--r--tests/enum_sizes/enumsizes.proto35
-rw-r--r--tests/enum_sizes/enumsizes_intsize_unittests.cc16
-rw-r--r--tests/enum_sizes/enumsizes_intsize_unittests.h3
-rw-r--r--tests/enum_sizes/enumsizes_unittests.c3
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");