Skip to content
Snippets Groups Projects
Commit 9dd81c51 authored by Petteri Aimonen's avatar Petteri Aimonen
Browse files

Add regression test for issue 242

parent afdbca39
No related branches found
No related tags found
No related merge requests found
# Regression test for Issue 242: pb_encode does not encode tag for
# extension fields that is all zeros
Import('env')
env.NanopbProto('zero_value')
p = env.Program(["zero_value.c",
"zero_value.pb.c",
"$COMMON/pb_decode.o",
"$COMMON/pb_encode.o",
"$COMMON/pb_common.o"])
env.RunTest(p)
#include <unittests.h>
#include <pb_encode.h>
#include <pb_decode.h>
#include <string.h>
#include "zero_value.pb.h"
int main()
{
int status = 0;
COMMENT("Test extension fields with zero values");
{
uint8_t buffer[256] = {0};
pb_ostream_t ostream;
int32_t value = 0;
Extendable source = {0};
pb_extension_t source_ext = {0};
source_ext.type = &opt_int32;
source_ext.dest = &value;
source.extensions = &source_ext;
ostream = pb_ostream_from_buffer(buffer, sizeof(buffer));
TEST(pb_encode(&ostream, Extendable_fields, &source));
TEST(ostream.bytes_written == 2);
TEST(memcmp(buffer, "\x58\x00", 2) == 0);
}
/* Note: There never was a bug here, but this check is included
* in the regression test because the logic is closely related.
*/
COMMENT("Test pointer fields with zero values");
{
uint8_t buffer[256] = {0};
pb_ostream_t ostream;
int32_t value = 0;
PointerMessage source = {0};
source.opt_int32 = &value;
ostream = pb_ostream_from_buffer(buffer, sizeof(buffer));
TEST(pb_encode(&ostream, PointerMessage_fields, &source));
TEST(ostream.bytes_written == 2);
TEST(memcmp(buffer, "\x58\x00", 2) == 0);
}
return status;
}
syntax = "proto2";
import "nanopb.proto";
message Extendable {
extensions 10 to 100;
}
extend Extendable {
optional int32 opt_int32 = 11;
}
message PointerMessage {
optional int32 opt_int32 = 11 [(nanopb).type = FT_POINTER];
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment