1#!/usr/local/bin/perl
2
3#
4# Test that the primitive operators are working
5#
6
7use Convert::ASN1;
8BEGIN { require './t/funcs.pl' }
9
10print "1..16\n"; # This testcase needs more tests
11
12btest 1, $asn = Convert::ASN1->new or warn $asn->error;
13btest 2, $asn->prepare(q(
14 integer INTEGER OPTIONAL,
15 str STRING
16)) or warn $asn->error;
17
18$result = pack("C*", 0x4, 0x3, ord('a'), ord('b'), ord('c'));
19%input  = (str => "abc");
20stest 3, $result, $asn->encode(%input) or warn $asn->error;
21btest 4, $ret = $asn->decode($result) or warn $asn->error;
22rtest 5, \%input, $ret;
23
24$result = pack("C*", 0x2, 0x1, 0x9, 0x4, 0x3, ord('a'), ord('b'), ord('c'));
25%input  = (integer => 9, str => "abc");
26stest 6, $result, $asn->encode(%input) or warn $asn->error;
27btest 7, $ret = $asn->decode($result) or warn $asn->error;
28rtest 8, \%input, $ret;
29
30btest 9, not( $asn->encode(integer => 9));
31
32btest 10, $asn->prepare( q(
33  SEQUENCE {
34    bar [0] SET OF INTEGER OPTIONAL,
35    str OCTET STRING
36  }
37)) or warn $asn->error;
38
39%input = (str => 'Fred');
40$result = pack "H*", "3006040446726564";
41stest 11, $result, $asn->encode(%input);
42btest 12, $ret = $asn->decode($result) or warn $asn->error;
43rtest 13, \%input, $ret;
44
45$result = pack "H*", "3011a009020101020105020103040446726564";
46%input = (str => 'Fred', bar => [1,5,3]);
47stest 14, $result, $asn->encode(%input);
48btest 15, $ret = $asn->decode($result) or warn $asn->error;
49rtest 16, \%input, $ret;
50