Blame t/05time.t

Packit ef9df4
#!/usr/local/bin/perl
Packit ef9df4
Packit ef9df4
#
Packit ef9df4
# Test that the primitive operators are working
Packit ef9df4
#
Packit ef9df4
Packit ef9df4
# Wolfgang Rosner
Packit ef9df4
Packit ef9df4
use Convert::ASN1 qw(:all);
Packit ef9df4
Packit ef9df4
print "1..24\n";
Packit ef9df4
Packit ef9df4
BEGIN { require 't/funcs.pl' }
Packit ef9df4
Packit ef9df4
my $t = 1;
Packit ef9df4
Packit ef9df4
btest $t++, $asn = Convert::ASN1->new or warn $asn->error;
Packit ef9df4
btest $t++, $asn->prepare('date UTCTime') or warn $asn->error;
Packit ef9df4
Packit ef9df4
my $time = 987718268; # 2001-04-19 22:11:08 GMT
Packit ef9df4
my $result;
Packit ef9df4
my $ret;
Packit ef9df4
Packit ef9df4
# One hour ahead
Packit ef9df4
Packit ef9df4
$result = pack("C*",
Packit ef9df4
  0x17, 0x11, 0x30, 0x31, 0x30, 0x34, 0x31, 0x39,
Packit ef9df4
  0x32, 0x33, 0x31, 0x31, 0x30, 0x38, 0x2B, 0x30,
Packit ef9df4
  0x31, 0x30, 0x30
Packit ef9df4
);
Packit ef9df4
Packit ef9df4
$asn->configure( encode => { timezone => +3600 } );
Packit ef9df4
stest $t++, $result, $asn->encode(date => $time) or warn $asn->error;
Packit ef9df4
btest $t++, $ret = $asn->decode($result) or warn $asn->error;
Packit ef9df4
ntest $t++, $time, $ret->{date};
Packit ef9df4
Packit ef9df4
# 2 hours ahead
Packit ef9df4
Packit ef9df4
$result = pack("C*",
Packit ef9df4
  0x17, 0x11, 0x30, 0x31, 0x30, 0x34, 0x32, 0x30,
Packit ef9df4
  0x30, 0x30, 0x31, 0x31, 0x30, 0x38, 0x2b, 0x30,
Packit ef9df4
  0x32, 0x30, 0x30
Packit ef9df4
);
Packit ef9df4
Packit ef9df4
$asn->configure( encode => { timezone => +7200 } );
Packit ef9df4
stest $t++, $result, $asn->encode(date => $time) or warn $asn->error;
Packit ef9df4
btest $t++, $ret = $asn->decode($result) or warn $asn->error;
Packit ef9df4
ntest $t++, $time, $ret->{date};
Packit ef9df4
Packit ef9df4
# zulu
Packit ef9df4
Packit ef9df4
$result = pack("C*",
Packit ef9df4
  0x17, 0x0D, 0x30, 0x31, 0x30, 0x34, 0x31, 0x39,
Packit ef9df4
  0x32, 0x32, 0x31, 0x31, 0x30, 0x38, 0x5A
Packit ef9df4
);
Packit ef9df4
Packit ef9df4
$asn->configure( encode => { 'time' => 'utctime' } );
Packit ef9df4
stest $t++, $result, $asn->encode(date => $time) or warn $asn->error;
Packit ef9df4
btest $t++, $ret = $asn->decode($result) or warn $asn->error;
Packit ef9df4
ntest $t++, $time, $ret->{date};
Packit ef9df4
Packit ef9df4
# 1 hour ahead
Packit ef9df4
Packit ef9df4
btest $t++, $asn = Convert::ASN1->new or warn $asn->error;
Packit ef9df4
btest $t++, $asn->prepare('date GeneralizedTime') or warn $asn->error;
Packit ef9df4
$result = pack("C*",
Packit ef9df4
  0x18, 0x13, 0x32, 0x30, 0x30, 0x31, 0x30, 0x34, 0x31, 0x39,
Packit ef9df4
  0x32, 0x33, 0x31, 0x31, 0x30, 0x38, 0x2B, 0x30,
Packit ef9df4
  0x31, 0x30, 0x30
Packit ef9df4
);
Packit ef9df4
Packit ef9df4
$asn->configure( encode => { timezone => +3600 } );
Packit ef9df4
stest $t++, $result, $asn->encode(date => $time) or warn $asn->error;
Packit ef9df4
btest $t++, $ret = $asn->decode($result) or warn $asn->error;
Packit ef9df4
ntest $t++, $time, $ret->{date};
Packit ef9df4
Packit ef9df4
# 4 hours behind
Packit ef9df4
Packit ef9df4
btest $t++, $asn = Convert::ASN1->new or warn $asn->error;
Packit ef9df4
btest $t++, $asn->prepare('date GeneralizedTime') or warn $asn->error;
Packit ef9df4
$result = pack("C*",
Packit ef9df4
  0x18, 0x13, 0x32, 0x30, 0x30, 0x31, 0x30, 0x34, 0x31, 0x39,
Packit ef9df4
  0x31, 0x38, 0x31, 0x31, 0x30, 0x38, 0x2D, 0x30,
Packit ef9df4
  0x34, 0x30, 0x30
Packit ef9df4
);
Packit ef9df4
Packit ef9df4
$asn->configure( encode => { timezone => -14400 } );
Packit ef9df4
stest $t++, $result, $asn->encode(date => $time) or warn $asn->error;
Packit ef9df4
btest $t++, $ret = $asn->decode($result) or warn $asn->error;
Packit ef9df4
ntest $t++, $time, $ret->{date};
Packit ef9df4
Packit ef9df4
# fractional second
Packit ef9df4
Packit ef9df4
$time += 0.5;
Packit ef9df4
$result = pack("C*",
Packit ef9df4
  0x18, 0x17, 0x32, 0x30, 0x30, 0x31, 0x30, 0x34, 0x31,
Packit ef9df4
  0x39, 0x32, 0x33, 0x31, 0x31, 0x30, 0x38,
Packit ef9df4
  0x2E, 0x35, 0x30, 0x30, 0x2B, 0x30, 0x31, 0x30, 0x30
Packit ef9df4
);
Packit ef9df4
Packit ef9df4
$asn->configure( encode => { timezone => +3600 } );
Packit ef9df4
stest $t++, $result, $asn->encode(date => $time) or warn $asn->error;
Packit ef9df4
btest $t++, $ret = $asn->decode($result) or warn $asn->error;
Packit ef9df4
ntest $t++, $time, $ret->{date};
Packit ef9df4