SConscript 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # Build and run a test that encodes and decodes a message that contains
  2. # all of the Protocol Buffers data types.
  3. Import("env")
  4. env.NanopbProto(["alltypes", "alltypes.options"])
  5. enc = env.Program(["encode_alltypes.c", "alltypes.pb.c", "$COMMON/pb_encode.o", "$COMMON/pb_common.o"])
  6. dec = env.Program(["decode_alltypes.c", "alltypes.pb.c", "$COMMON/pb_decode.o", "$COMMON/pb_common.o"])
  7. # Test the round-trip from nanopb encoder to nanopb decoder
  8. env.RunTest(enc)
  9. env.RunTest([dec, "encode_alltypes.output"])
  10. # Re-encode the data using protoc, and check that the results from nanopb
  11. # match byte-per-byte to the protoc output.
  12. env.Decode("encode_alltypes.output.decoded",
  13. ["encode_alltypes.output", "alltypes.proto"],
  14. MESSAGE='AllTypes')
  15. env.Encode("encode_alltypes.output.recoded",
  16. ["encode_alltypes.output.decoded", "alltypes.proto"],
  17. MESSAGE='AllTypes')
  18. env.Compare(["encode_alltypes.output", "encode_alltypes.output.recoded"])
  19. # Do the same checks with the optional fields present.
  20. env.RunTest("optionals.output", enc, ARGS = ['1'])
  21. env.RunTest("optionals.decout", [dec, "optionals.output"], ARGS = ['1'])
  22. env.Decode("optionals.output.decoded",
  23. ["optionals.output", "alltypes.proto"],
  24. MESSAGE='AllTypes')
  25. env.Encode("optionals.output.recoded",
  26. ["optionals.output.decoded", "alltypes.proto"],
  27. MESSAGE='AllTypes')
  28. env.Compare(["optionals.output", "optionals.output.recoded"])
  29. # And for the _zero initializer
  30. env.RunTest("zeroinit.output", enc, ARGS = ['2'])
  31. env.RunTest("zeroinit.decout", [dec, "zeroinit.output"], ARGS = ['2'])
  32. env.Decode("zeroinit.output.decoded",
  33. ["zeroinit.output", "alltypes.proto"],
  34. MESSAGE='AllTypes')
  35. env.Encode("zeroinit.output.recoded",
  36. ["zeroinit.output.decoded", "alltypes.proto"],
  37. MESSAGE='AllTypes')
  38. env.Compare(["zeroinit.output", "zeroinit.output.recoded"])