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