# Test proto3 "optional" field types.
# This is supported in protoc 3.12 and newer.

Import('env')
import re

version = None
if 'PROTOC_VERSION' in env:
    match = re.search('([0-9]+).([0-9]+).([0-9]+)', env['PROTOC_VERSION'])
    version = (int(match.group(1)), int(match.group(2)), int(match.group(3)))

# Oneof is supported by protoc >= 3.12.0
if env.GetOption('clean') or (version and (version[0] > 3 or (version[0] == 3 and version[1] >= 12))):
    
    env2 = env.Clone()
    env2.Append(PROTOCFLAGS = "--experimental_allow_proto3_optional")
    
    env2.NanopbProto("optional.proto")
    opt = env2.Program(["optional.c", "optional.pb.c",
                     "$COMMON/pb_decode.o", "$COMMON/pb_encode.o",
                     "$COMMON/pb_common.o"])
    env2.RunTest(opt)


