asn1rs 0.2.2

ASN.1 to Rust, Protobuf and SQL compiler/code generator. Supports ASN.1 UPER
Documentation
mod test_utils;

use test_utils::*;

asn_to_rust!(
    r"MyDef DEFINITIONS AUTOMATIC TAGS ::=
    BEGIN

    ProtobufOptionals ::= SEQUENCE {
        optional-bool       BOOLEAN OPTIONAL,
        optional-utf8string UTF8String OPTIONAL,
        optional-sint32     INTEGER (-2147483648..2147483647) OPTIONAL
    }

    END"
);

#[test]
#[cfg(feature = "protobuf")]
fn test_optionals_present() {
    serialize_and_deserialize_protobuf(
        &[8, 1, 18, 6, 115, 116, 114, 105, 110, 103, 24, 84],
        &ProtobufOptionals {
            optional_bool: Some(true),
            optional_utf8string: Some("string".into()),
            optional_sint32: Some(42),
        },
    )
}

#[test]
#[cfg(feature = "protobuf")]
fn test_optionals_absent() {
    serialize_and_deserialize_protobuf(
        &[],
        &ProtobufOptionals {
            optional_bool: None,
            optional_utf8string: None,
            optional_sint32: None,
        },
    )
}

#[test]
#[cfg(feature = "protobuf")]
fn test_optionals_mixed() {
    serialize_and_deserialize_protobuf(
        &[8, 0, 24, 242, 20],
        &ProtobufOptionals {
            optional_bool: Some(false),
            optional_utf8string: None,
            optional_sint32: Some(1337_i32),
        },
    )
}