aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/buffer_only/SConscript23
-rw-r--r--tests/cxx_main_program/SConscript12
-rw-r--r--tests/field_size_16/SConscript24
-rw-r--r--tests/field_size_16/alltypes.options3
-rw-r--r--tests/field_size_16/alltypes.proto90
-rw-r--r--tests/field_size_32/SConscript24
-rw-r--r--tests/field_size_32/alltypes.options3
-rw-r--r--tests/field_size_32/alltypes.proto90
-rw-r--r--tests/no_errmsg/SConscript23
9 files changed, 286 insertions, 6 deletions
diff --git a/tests/buffer_only/SConscript b/tests/buffer_only/SConscript
new file mode 100644
index 00000000..0770b2fc
--- /dev/null
+++ b/tests/buffer_only/SConscript
@@ -0,0 +1,23 @@
+# Run the alltypes test case, but compile with PB_BUFFER_ONLY=1
+
+Import("env")
+
+# Take copy of the files for custom build.
+c = Copy("$TARGET", "$SOURCE")
+env.Command("pb_encode.c", "#../pb_encode.c", c)
+env.Command("pb_decode.c", "#../pb_decode.c", c)
+env.Command("alltypes.pb.h", "#alltypes/alltypes.pb.h", c)
+env.Command("alltypes.pb.c", "#alltypes/alltypes.pb.c", c)
+env.Command("encode_alltypes.c", "#alltypes/encode_alltypes.c", c)
+env.Command("decode_alltypes.c", "#alltypes/decode_alltypes.c", c)
+
+# Define the compilation options
+opts = env.Clone()
+opts.Append(CPPDEFINES = {'PB_BUFFER_ONLY': 1})
+
+# Now build and run the test normally.
+enc = opts.Program(["encode_alltypes.c", "alltypes.pb.c", "pb_encode.c"])
+dec = opts.Program(["decode_alltypes.c", "alltypes.pb.c", "pb_decode.c"])
+
+env.RunTest(enc)
+env.RunTest([dec, "encode_alltypes.output"])
diff --git a/tests/cxx_main_program/SConscript b/tests/cxx_main_program/SConscript
index 0d0a25ca..055c5aee 100644
--- a/tests/cxx_main_program/SConscript
+++ b/tests/cxx_main_program/SConscript
@@ -5,12 +5,12 @@ Import("env")
# Copy the files to .cxx extension in order to force C++ build.
c = Copy("$TARGET", "$SOURCE")
-Command("pb_encode.cxx", "#../pb_encode.c", c)
-Command("pb_decode.cxx", "#../pb_decode.c", c)
-Command("alltypes.pb.h", "#alltypes/alltypes.pb.h", c)
-Command("alltypes.pb.cxx", "#alltypes/alltypes.pb.c", c)
-Command("encode_alltypes.cxx", "#alltypes/encode_alltypes.c", c)
-Command("decode_alltypes.cxx", "#alltypes/decode_alltypes.c", c)
+env.Command("pb_encode.cxx", "#../pb_encode.c", c)
+env.Command("pb_decode.cxx", "#../pb_decode.c", c)
+env.Command("alltypes.pb.h", "#alltypes/alltypes.pb.h", c)
+env.Command("alltypes.pb.cxx", "#alltypes/alltypes.pb.c", c)
+env.Command("encode_alltypes.cxx", "#alltypes/encode_alltypes.c", c)
+env.Command("decode_alltypes.cxx", "#alltypes/decode_alltypes.c", c)
# Now build and run the test normally.
enc = env.Program(["encode_alltypes.cxx", "alltypes.pb.cxx", "pb_encode.cxx"])
diff --git a/tests/field_size_16/SConscript b/tests/field_size_16/SConscript
new file mode 100644
index 00000000..48d08e84
--- /dev/null
+++ b/tests/field_size_16/SConscript
@@ -0,0 +1,24 @@
+# Run the alltypes test case, but compile with PB_FIELD_16BIT=1.
+# Also the .proto file has been modified to have high indexes.
+
+Import("env")
+
+# Take copy of the files for custom build.
+c = Copy("$TARGET", "$SOURCE")
+env.Command("pb_encode.c", "#../pb_encode.c", c)
+env.Command("pb_decode.c", "#../pb_decode.c", c)
+env.Command("encode_alltypes.c", "#alltypes/encode_alltypes.c", c)
+env.Command("decode_alltypes.c", "#alltypes/decode_alltypes.c", c)
+
+env.NanopbProto("alltypes")
+
+# Define the compilation options
+opts = env.Clone()
+opts.Append(CPPDEFINES = {'PB_FIELD_16BIT': 1})
+
+# Now build and run the test normally.
+enc = opts.Program(["encode_alltypes.c", "alltypes.pb.c", "pb_encode.c"])
+dec = opts.Program(["decode_alltypes.c", "alltypes.pb.c", "pb_decode.c"])
+
+env.RunTest(enc)
+env.RunTest([dec, "encode_alltypes.output"])
diff --git a/tests/field_size_16/alltypes.options b/tests/field_size_16/alltypes.options
new file mode 100644
index 00000000..b31e3cf0
--- /dev/null
+++ b/tests/field_size_16/alltypes.options
@@ -0,0 +1,3 @@
+* max_size:16
+* max_count:5
+
diff --git a/tests/field_size_16/alltypes.proto b/tests/field_size_16/alltypes.proto
new file mode 100644
index 00000000..b981760d
--- /dev/null
+++ b/tests/field_size_16/alltypes.proto
@@ -0,0 +1,90 @@
+message SubMessage {
+ required string substuff1 = 1 [default = "1"];
+ required int32 substuff2 = 2 [default = 2];
+ optional fixed32 substuff3 = 65535 [default = 3];
+}
+
+message EmptyMessage {
+
+}
+
+enum MyEnum {
+ Zero = 0;
+ First = 1;
+ Second = 2;
+ Truth = 42;
+}
+
+message AllTypes {
+ required int32 req_int32 = 1;
+ required int64 req_int64 = 2;
+ required uint32 req_uint32 = 3;
+ required uint64 req_uint64 = 4;
+ required sint32 req_sint32 = 5;
+ required sint64 req_sint64 = 6;
+ required bool req_bool = 7;
+
+ required fixed32 req_fixed32 = 8;
+ required sfixed32 req_sfixed32= 9;
+ required float req_float = 10;
+
+ required fixed64 req_fixed64 = 11;
+ required sfixed64 req_sfixed64= 12;
+ required double req_double = 13;
+
+ required string req_string = 14;
+ required bytes req_bytes = 15;
+ required SubMessage req_submsg = 16;
+ required MyEnum req_enum = 17;
+ required EmptyMessage req_emptymsg = 18;
+
+
+ repeated int32 rep_int32 = 21;
+ repeated int64 rep_int64 = 22;
+ repeated uint32 rep_uint32 = 23;
+ repeated uint64 rep_uint64 = 24;
+ repeated sint32 rep_sint32 = 25;
+ repeated sint64 rep_sint64 = 26;
+ repeated bool rep_bool = 27;
+
+ repeated fixed32 rep_fixed32 = 28;
+ repeated sfixed32 rep_sfixed32= 29;
+ repeated float rep_float = 30;
+
+ repeated fixed64 rep_fixed64 = 10031;
+ repeated sfixed64 rep_sfixed64= 10032;
+ repeated double rep_double = 10033;
+
+ repeated string rep_string = 10034;
+ repeated bytes rep_bytes = 10035;
+ repeated SubMessage rep_submsg = 10036;
+ repeated MyEnum rep_enum = 10037;
+ repeated EmptyMessage rep_emptymsg = 10038;
+
+ optional int32 opt_int32 = 10041 [default = 4041];
+ optional int64 opt_int64 = 10042 [default = 4042];
+ optional uint32 opt_uint32 = 10043 [default = 4043];
+ optional uint64 opt_uint64 = 10044 [default = 4044];
+ optional sint32 opt_sint32 = 10045 [default = 4045];
+ optional sint64 opt_sint64 = 10046 [default = 4046];
+ optional bool opt_bool = 10047 [default = false];
+
+ optional fixed32 opt_fixed32 = 10048 [default = 4048];
+ optional sfixed32 opt_sfixed32= 10049 [default = 4049];
+ optional float opt_float = 10050 [default = 4050];
+
+ optional fixed64 opt_fixed64 = 10051 [default = 4051];
+ optional sfixed64 opt_sfixed64= 10052 [default = 4052];
+ optional double opt_double = 10053 [default = 4053];
+
+ optional string opt_string = 10054 [default = "4054"];
+ optional bytes opt_bytes = 10055 [default = "4055"];
+ optional SubMessage opt_submsg = 10056;
+ optional MyEnum opt_enum = 10057 [default = Second];
+ optional EmptyMessage opt_emptymsg = 10058;
+
+ // Just to make sure that the size of the fields has been calculated
+ // properly, i.e. otherwise a bug in last field might not be detected.
+ required int32 end = 10099;
+}
+
diff --git a/tests/field_size_32/SConscript b/tests/field_size_32/SConscript
new file mode 100644
index 00000000..a8584dc0
--- /dev/null
+++ b/tests/field_size_32/SConscript
@@ -0,0 +1,24 @@
+# Run the alltypes test case, but compile with PB_FIELD_32BIT=1.
+# Also the .proto file has been modified to have high indexes.
+
+Import("env")
+
+# Take copy of the files for custom build.
+c = Copy("$TARGET", "$SOURCE")
+env.Command("pb_encode.c", "#../pb_encode.c", c)
+env.Command("pb_decode.c", "#../pb_decode.c", c)
+env.Command("encode_alltypes.c", "#alltypes/encode_alltypes.c", c)
+env.Command("decode_alltypes.c", "#alltypes/decode_alltypes.c", c)
+
+env.NanopbProto("alltypes")
+
+# Define the compilation options
+opts = env.Clone()
+opts.Append(CPPDEFINES = {'PB_FIELD_32BIT': 1})
+
+# Now build and run the test normally.
+enc = opts.Program(["encode_alltypes.c", "alltypes.pb.c", "pb_encode.c"])
+dec = opts.Program(["decode_alltypes.c", "alltypes.pb.c", "pb_decode.c"])
+
+env.RunTest(enc)
+env.RunTest([dec, "encode_alltypes.output"])
diff --git a/tests/field_size_32/alltypes.options b/tests/field_size_32/alltypes.options
new file mode 100644
index 00000000..b31e3cf0
--- /dev/null
+++ b/tests/field_size_32/alltypes.options
@@ -0,0 +1,3 @@
+* max_size:16
+* max_count:5
+
diff --git a/tests/field_size_32/alltypes.proto b/tests/field_size_32/alltypes.proto
new file mode 100644
index 00000000..3d1d856c
--- /dev/null
+++ b/tests/field_size_32/alltypes.proto
@@ -0,0 +1,90 @@
+message SubMessage {
+ required string substuff1 = 1 [default = "1"];
+ required int32 substuff2 = 2 [default = 2];
+ optional fixed32 substuff3 = 12365535 [default = 3];
+}
+
+message EmptyMessage {
+
+}
+
+enum MyEnum {
+ Zero = 0;
+ First = 1;
+ Second = 2;
+ Truth = 42;
+}
+
+message AllTypes {
+ required int32 req_int32 = 1;
+ required int64 req_int64 = 2;
+ required uint32 req_uint32 = 3;
+ required uint64 req_uint64 = 4;
+ required sint32 req_sint32 = 5;
+ required sint64 req_sint64 = 6;
+ required bool req_bool = 7;
+
+ required fixed32 req_fixed32 = 8;
+ required sfixed32 req_sfixed32= 9;
+ required float req_float = 10;
+
+ required fixed64 req_fixed64 = 11;
+ required sfixed64 req_sfixed64= 12;
+ required double req_double = 13;
+
+ required string req_string = 14;
+ required bytes req_bytes = 15;
+ required SubMessage req_submsg = 16;
+ required MyEnum req_enum = 17;
+ required EmptyMessage req_emptymsg = 18;
+
+
+ repeated int32 rep_int32 = 21;
+ repeated int64 rep_int64 = 22;
+ repeated uint32 rep_uint32 = 23;
+ repeated uint64 rep_uint64 = 24;
+ repeated sint32 rep_sint32 = 25;
+ repeated sint64 rep_sint64 = 26;
+ repeated bool rep_bool = 27;
+
+ repeated fixed32 rep_fixed32 = 28;
+ repeated sfixed32 rep_sfixed32= 29;
+ repeated float rep_float = 30;
+
+ repeated fixed64 rep_fixed64 = 10031;
+ repeated sfixed64 rep_sfixed64= 10032;
+ repeated double rep_double = 10033;
+
+ repeated string rep_string = 10034;
+ repeated bytes rep_bytes = 10035;
+ repeated SubMessage rep_submsg = 10036;
+ repeated MyEnum rep_enum = 10037;
+ repeated EmptyMessage rep_emptymsg = 10038;
+
+ optional int32 opt_int32 = 10041 [default = 4041];
+ optional int64 opt_int64 = 10042 [default = 4042];
+ optional uint32 opt_uint32 = 10043 [default = 4043];
+ optional uint64 opt_uint64 = 10044 [default = 4044];
+ optional sint32 opt_sint32 = 10045 [default = 4045];
+ optional sint64 opt_sint64 = 10046 [default = 4046];
+ optional bool opt_bool = 10047 [default = false];
+
+ optional fixed32 opt_fixed32 = 10048 [default = 4048];
+ optional sfixed32 opt_sfixed32= 10049 [default = 4049];
+ optional float opt_float = 10050 [default = 4050];
+
+ optional fixed64 opt_fixed64 = 10051 [default = 4051];
+ optional sfixed64 opt_sfixed64= 10052 [default = 4052];
+ optional double opt_double = 10053 [default = 4053];
+
+ optional string opt_string = 10054 [default = "4054"];
+ optional bytes opt_bytes = 10055 [default = "4055"];
+ optional SubMessage opt_submsg = 10056;
+ optional MyEnum opt_enum = 10057 [default = Second];
+ optional EmptyMessage opt_emptymsg = 10058;
+
+ // Just to make sure that the size of the fields has been calculated
+ // properly, i.e. otherwise a bug in last field might not be detected.
+ required int32 end = 13432099;
+}
+
diff --git a/tests/no_errmsg/SConscript b/tests/no_errmsg/SConscript
new file mode 100644
index 00000000..870e8946
--- /dev/null
+++ b/tests/no_errmsg/SConscript
@@ -0,0 +1,23 @@
+# Run the alltypes test case, but compile with PB_NO_ERRMSG=1
+
+Import("env")
+
+# Take copy of the files for custom build.
+c = Copy("$TARGET", "$SOURCE")
+env.Command("pb_encode.c", "#../pb_encode.c", c)
+env.Command("pb_decode.c", "#../pb_decode.c", c)
+env.Command("alltypes.pb.h", "#alltypes/alltypes.pb.h", c)
+env.Command("alltypes.pb.c", "#alltypes/alltypes.pb.c", c)
+env.Command("encode_alltypes.c", "#alltypes/encode_alltypes.c", c)
+env.Command("decode_alltypes.c", "#alltypes/decode_alltypes.c", c)
+
+# Define the compilation options
+opts = env.Clone()
+opts.Append(CPPDEFINES = {'PB_NO_ERRMSG': 1})
+
+# Now build and run the test normally.
+enc = opts.Program(["encode_alltypes.c", "alltypes.pb.c", "pb_encode.c"])
+dec = opts.Program(["decode_alltypes.c", "alltypes.pb.c", "pb_decode.c"])
+
+env.RunTest(enc)
+env.RunTest([dec, "encode_alltypes.output"])