Add unit test for int_size option for enums
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 @@
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 @@
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 @@
TEST(msg1.i16_max == (int)msg2.i16_max);
}
+ status |= TestIntSize();
+
if (status != 0)
fprintf(stdout, "\n\nSome tests FAILED!\n");