map { $block->($_) } _pairs @_;
}
-######## UNIT TESTING
-
-use Test::More;
-
-sub TEST {
- # Order is important, so we make it a pairwise list
- my @predefined =
- (
- 'pkcs' => '1.2.840.113549',
- 'pkcs-1' => 'pkcs.1',
- );
-
- my %good_cases =
- (
- ' 1.2.840.113549.1.1 ' => [ 42, 134, 72, 134, 247, 13, 1, 1 ],
- 'pkcs.1.1' => [ 42, 134, 72, 134, 247, 13, 1, 1 ],
- 'pkcs-1.1' => [ 42, 134, 72, 134, 247, 13, 1, 1 ],
- ' { iso (1) 2 840 113549 1 1 } ' => [ 42, 134, 72, 134, 247, 13, 1, 1 ],
- '{ pkcs 1 1 } ' => [ 42, 134, 72, 134, 247, 13, 1, 1 ],
- '{pkcs-1 1 }' => [ 42, 134, 72, 134, 247, 13, 1, 1 ],
- );
- my @bad_cases =
- (
- ' { 1.2.840.113549.1.1 } ',
- );
-
- plan tests =>
- scalar ( @predefined ) / 2
- + scalar ( keys %good_cases )
- + scalar @bad_cases;
-
- note 'Predefine a few names OIDs';
- foreach my $pair ( _pairs @predefined ) {
- ok( defined eval { register_oid(@$pair) },
- "Registering $pair->[0] => $pair->[1]" );
- }
-
- note 'Good cases';
- foreach ( keys %good_cases ) {
- subtest "Checking '$_'" => sub {
- my $oid = shift;
-
- plan tests => 5;
-
- my (@l, @e);
-
- ok( scalar (@l = eval { parse_oid $oid }) > 0,
- "Parsing" );
- diag $@ unless @l;
- ok( scalar (@e = eval { encode_oid_nums @l }) > 0,
- "Encoding via encode_oid_nums()" );
- diag $@ unless @e;
- is_deeply(\@e, $good_cases{$oid}, "Checking encoding");
- note "'$oid' => ", join(', ', @e) if @e;
-
- ok( scalar (@e = eval { encode_oid $oid }) > 0,
- "Encoding directly" );
- diag $@ unless @e;
- is_deeply(\@e, $good_cases{$oid}, "Checking encoding");
- note "'$oid' => ", join(', ', @e) if @e;
- },
- $_;
- }
-
- note 'Bad cases';
- foreach ( @bad_cases ) {
- subtest "Checking '$_'" => sub {
- my $oid = shift;
-
- plan tests => 2;
-
- my (@l, @e);
-
- ok( scalar (@l = eval { parse_oid $oid }) == 0,
- "Parsing '$oid'" );
- note $@ unless @l;
- ok( scalar (@e = eval { encode_oid_nums @l }) == 0,
- "Encoding '$oid'" );
- note $@ unless @e;
- note "'$oid' => ", join(', ', @e) if @e;
- },
- $_;
- }
-}
-
1; # End of OpenSSL::OID