|
|
|
use strict;
|
|
|
|
use warnings;
|
|
|
|
|
|
|
|
use Test::More tests => 21;
|
|
|
|
|
|
|
|
use Subtitle::Utils qw(:timing);
|
|
|
|
|
|
|
|
## parse_timing()
|
|
|
|
# valid timecodes
|
|
|
|
is(parse_timing('123:11:15.459'), (123 * 3600 + 11 * 60 + 15 + 0.459));
|
|
|
|
is(parse_timing('123:11:15.45'), (123 * 3600 + 11 * 60 + 15 + 0.450));
|
|
|
|
is(parse_timing('123:11:15.4'), (123 * 3600 + 11 * 60 + 15 + 0.400));
|
|
|
|
is(parse_timing('123:11:15,4'), (123 * 3600 + 11 * 60 + 15 + 0.400));
|
|
|
|
# invalid timecodes
|
|
|
|
is(parse_timing('123:60:15.45'), -1);
|
|
|
|
is(parse_timing('123:11:65.45'), -1);
|
|
|
|
is(parse_timing('123:11:15.4500'), -1);
|
|
|
|
|
|
|
|
## parse_timeshift()
|
|
|
|
is(parse_timeshift('1'), +1.0);
|
|
|
|
is(parse_timeshift('-1.2'), -1.2);
|
|
|
|
is(parse_timeshift('+2:15'), +135.0);
|
|
|
|
is(parse_timeshift('+03:07.35'), +187.35);
|
|
|
|
is(parse_timeshift('4:05:17.312'), 14717.312);
|
|
|
|
# invalid timecodes
|
|
|
|
is(parse_timeshift('o.17'), undef);
|
|
|
|
is(parse_timeshift('-.05'), undef);
|
|
|
|
is(parse_timeshift('1:60'), undef);
|
|
|
|
is(parse_timeshift('57.4321'), undef);
|
|
|
|
is(parse_timeshift('1:62:03'), undef);
|
|
|
|
|
|
|
|
## make_timing()
|
|
|
|
my @ts = make_timing(8*3600 + 11*60 + 15 + 0.46);
|
|
|
|
is($ts[0], 8);
|
|
|
|
is($ts[1], 11);
|
|
|
|
is($ts[2], 15);
|
|
|
|
is($ts[3], 460);
|