1#!/usr/local/bin/perl 2 3# 4# Test the use of sequences 5# 6 7use Convert::ASN1; 8BEGIN { require './t/funcs.pl' } 9 10print "1..19\n"; 11 12 13# Encode a "version 1" message 14btest 1, $asn = Convert::ASN1->new or warn $asn->error; 15btest 2, $asn->prepare(q( 16 CHOICE { 17 integer [1] INTEGER, 18 bool [2] BOOLEAN, 19 ... 20 } 21)) or warn $asn->error; 22 23btest 3, $pdu = $asn->encode(integer => 1) or warn $asn->error; 24btest 4, $ret = $asn->decode($pdu) or warn $asn->error; 25ntest 5, 1, $ret->{integer}; 26btest 6, !defined($ret->{bool}); 27btest 7, !defined($ret->{str}); 28 29# Decode a "version 1" message with a "version 2" decoder 30btest 8, $asn->prepare(q( 31 CHOICE { 32 integer [1] INTEGER, 33 bool [2] BOOLEAN, 34 ..., 35 str [3] STRING 36 } 37)) or warn $asn->error; 38btest 9, $ret = $asn->decode($pdu) or warn $asn->error; 39ntest 10, 1, $ret->{integer}; 40btest 11, !defined($ret->{bool}); 41btest 12, !defined($ret->{str}); 42 43 44# Encode a "version 2" message 45btest 13, $pdu = $asn->encode(str => "A string") or warn $asn->error; 46btest 14, $ret = $asn->decode($pdu) or warn $asn->error; 47btest 15, !defined($ret->{int}); 48btest 16, !defined($ret->{bool}); 49stest 17, "A string", $ret->{str}; 50 51 52# Decode a "version 2" message with a "version 1" decoder 53btest 18, $asn->prepare(q( 54 CHOICE { 55 integer [1] INTEGER, 56 bool [2] BOOLEAN, 57 ... 58 } 59)) or warn $asn->error; 60btest 19, !defined($ret = $asn->decode($pdu)); 61