diff options
author | Björn Gustavsson <[email protected]> | 2013-08-30 07:51:02 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2013-08-30 10:13:17 +0200 |
commit | a5c7d1c0ecd8a8b78ae162aeb735501ef49e014b (patch) | |
tree | 2f6d38b3fc049f3ee36c59b6c7cbec571c1ec647 /lib/asn1/test | |
parent | 9096522efd263f719ab9bc56670406a73ac1d818 (diff) | |
download | otp-a5c7d1c0ecd8a8b78ae162aeb735501ef49e014b.tar.gz otp-a5c7d1c0ecd8a8b78ae162aeb735501ef49e014b.tar.bz2 otp-a5c7d1c0ecd8a8b78ae162aeb735501ef49e014b.zip |
BER: Handle multiple optional SEQUENCE fields with table constraints
Diffstat (limited to 'lib/asn1/test')
-rw-r--r-- | lib/asn1/test/asn1_SUITE_data/InfObj.asn | 23 | ||||
-rw-r--r-- | lib/asn1/test/testInfObj.erl | 14 |
2 files changed, 35 insertions, 2 deletions
diff --git a/lib/asn1/test/asn1_SUITE_data/InfObj.asn b/lib/asn1/test/asn1_SUITE_data/InfObj.asn index ed19c40836..880e81c3b1 100644 --- a/lib/asn1/test/asn1_SUITE_data/InfObj.asn +++ b/lib/asn1/test/asn1_SUITE_data/InfObj.asn @@ -232,6 +232,29 @@ DefaultInSeq ::= SEQUENCE { DEFAULT BOOLEAN:TRUE } +-- Test more than one optional typefield table constraint in a SEQUENCE. + +MULTIPLE-OPTIONALS ::= CLASS { + &id INTEGER UNIQUE, + &T1, + &T2, + &T3 +} + +multiple-optionals-1 MULTIPLE-OPTIONALS ::= + {&id 1, &T1 INTEGER, &T2 BOOLEAN, &T3 OCTET STRING} + +Multiple-Optionals-Set MULTIPLE-OPTIONALS ::= { + multiple-optionals-1 +} + +Multiple-Optionals ::= SEQUENCE { + id MULTIPLE-OPTIONALS.&id ({Multiple-Optionals-Set}), + t1 [0] MULTIPLE-OPTIONALS.&T1 ({Multiple-Optionals-Set}{@id}) OPTIONAL, + t2 [1] MULTIPLE-OPTIONALS.&T2 ({Multiple-Optionals-Set}{@id}) OPTIONAL, + t3 [2] MULTIPLE-OPTIONALS.&T3 ({Multiple-Optionals-Set}{@id}) OPTIONAL +} + END diff --git a/lib/asn1/test/testInfObj.erl b/lib/asn1/test/testInfObj.erl index 7241f7b380..76f216fdad 100644 --- a/lib/asn1/test/testInfObj.erl +++ b/lib/asn1/test/testInfObj.erl @@ -107,8 +107,18 @@ main(_Erule) -> roundtrip('InfObj', 'DefaultInSeq', {'DefaultInSeq',3,false}), roundtrip('InfObj', 'DefaultInSeq', {'DefaultInSeq',3,true}), {'DefaultInSeq',3,true} = - enc_dec('InfObj', 'DefaultInSeq', {'DefaultInSeq',3,asn1_DEFAULT}). - + enc_dec('InfObj', 'DefaultInSeq', {'DefaultInSeq',3,asn1_DEFAULT}), + + roundtrip('InfObj', 'Multiple-Optionals', + {'Multiple-Optionals',1,42,true,"abc"}), + roundtrip('InfObj', 'Multiple-Optionals', + {'Multiple-Optionals',1,asn1_NOVALUE,true,"abc"}), + roundtrip('InfObj', 'Multiple-Optionals', + {'Multiple-Optionals',1,42,asn1_NOVALUE,"abc"}), + roundtrip('InfObj', 'Multiple-Optionals', + {'Multiple-Optionals',1,42,true,asn1_NOVALUE}), + roundtrip('InfObj', 'Multiple-Optionals', + {'Multiple-Optionals',1,asn1_NOVALUE,asn1_NOVALUE,asn1_NOVALUE}). roundtrip(M, T, V) -> {ok,Enc} = M:encode(T, V), |