aboutsummaryrefslogtreecommitdiffstats
path: root/tests/common
diff options
context:
space:
mode:
Diffstat (limited to 'tests/common')
-rw-r--r--tests/common/SConscript17
-rw-r--r--tests/common/person.proto20
-rw-r--r--tests/common/test_helpers.h17
-rw-r--r--tests/common/unittestproto.proto32
-rw-r--r--tests/common/unittests.h14
5 files changed, 100 insertions, 0 deletions
diff --git a/tests/common/SConscript b/tests/common/SConscript
new file mode 100644
index 00000000..8130c85a
--- /dev/null
+++ b/tests/common/SConscript
@@ -0,0 +1,17 @@
+# Build the common files needed by multiple test cases
+
+Import('env')
+
+# Protocol definitions for the encode/decode_unittests
+env.NanopbProto("unittestproto")
+
+# Protocol definitions for basic_buffer/stream tests
+env.NanopbProto("person")
+
+# Binaries of the pb_decode.c and pb_encode.c
+# These are built using more strict warning flags.
+strict = env.Clone()
+strict.Append(CFLAGS = strict['CORECFLAGS'])
+strict.Object("pb_decode.o", "#../pb_decode.c")
+strict.Object("pb_encode.o", "#../pb_encode.c")
+
diff --git a/tests/common/person.proto b/tests/common/person.proto
new file mode 100644
index 00000000..dafcf934
--- /dev/null
+++ b/tests/common/person.proto
@@ -0,0 +1,20 @@
+import "nanopb.proto";
+
+message Person {
+ required string name = 1 [(nanopb).max_size = 40];
+ required int32 id = 2;
+ optional string email = 3 [(nanopb).max_size = 40];
+
+ enum PhoneType {
+ MOBILE = 0;
+ HOME = 1;
+ WORK = 2;
+ }
+
+ message PhoneNumber {
+ required string number = 1 [(nanopb).max_size = 40];
+ optional PhoneType type = 2 [default = HOME];
+ }
+
+ repeated PhoneNumber phone = 4 [(nanopb).max_count = 5];
+}
diff --git a/tests/common/test_helpers.h b/tests/common/test_helpers.h
new file mode 100644
index 00000000..f77760a5
--- /dev/null
+++ b/tests/common/test_helpers.h
@@ -0,0 +1,17 @@
+/* Compatibility helpers for the test programs. */
+
+#ifndef _TEST_HELPERS_H_
+#define _TEST_HELPERS_H_
+
+#ifdef _WIN32
+#include <io.h>
+#include <fcntl.h>
+#define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY)
+
+#else
+#define SET_BINARY_MODE(file)
+
+#endif
+
+
+#endif
diff --git a/tests/common/unittestproto.proto b/tests/common/unittestproto.proto
new file mode 100644
index 00000000..7024942e
--- /dev/null
+++ b/tests/common/unittestproto.proto
@@ -0,0 +1,32 @@
+import 'nanopb.proto';
+
+message IntegerArray {
+ repeated int32 data = 1 [(nanopb).max_count = 10];
+}
+
+message FloatArray {
+ repeated float data = 1 [(nanopb).max_count = 10];
+}
+
+message StringMessage {
+ required string data = 1 [(nanopb).max_size = 10];
+}
+
+message CallbackArray {
+ // We cheat a bit and use this message for testing other types, too.
+ // Nanopb does not care about the actual defined data type for callback
+ // fields.
+ repeated int32 data = 1;
+}
+
+message IntegerContainer {
+ required IntegerArray submsg = 1;
+}
+
+message CallbackContainer {
+ required CallbackArray submsg = 1;
+}
+
+message CallbackContainerContainer {
+ required CallbackContainer submsg = 1;
+}
diff --git a/tests/common/unittests.h b/tests/common/unittests.h
new file mode 100644
index 00000000..c2b470ad
--- /dev/null
+++ b/tests/common/unittests.h
@@ -0,0 +1,14 @@
+#include <stdio.h>
+
+#define COMMENT(x) printf("\n----" x "----\n");
+#define STR(x) #x
+#define STR2(x) STR(x)
+#define TEST(x) \
+ if (!(x)) { \
+ fprintf(stderr, "\033[31;1mFAILED:\033[22;39m " __FILE__ ":" STR2(__LINE__) " " #x "\n"); \
+ status = 1; \
+ } else { \
+ printf("\033[32;1mOK:\033[22;39m " #x "\n"); \
+ }
+
+