Image-Synchronize
view release on metacpan or search on metacpan
t/Image-Synchronize-CameraOffsets.t view on Meta::CPAN
#!/usr/bin/perl -w
use Modern::Perl;
use Image::Synchronize::CameraOffsets;
use Image::Synchronize::Logger qw(log_message set_printer);
use Image::Synchronize::Timestamp;
use Test::More;
use YAML::Any qw(Dump Load);
sub t {
Image::Synchronize::Timestamp->new($_[0]);
}
sub v {
my $t = Image::Synchronize::Timestamp->new($_[0]);
return $t->time_utc // $t->time_local;
}
my $co = Image::Synchronize::CameraOffsets->new;
isa_ok( $co, 'Image::Synchronize::CameraOffsets' );
is( $co->get( 'A', t('2020-08-12T10:00:00') ), undef,
'no data yet for camera A' );
$co->set( 'A', t('2020-08-12T12:34:00'), -5 );
is_deeply(
$co->{added},
{ A => { v('2020-08-12T12:34:00') => { offset => '-00:00:05' } } },
'set first item'
);
is_deeply( $co->{effective}, {}, 'not synchronized yet' );
is( $co->get( 'B', t('2020-08-12T10:00:00') ), undef,
'no data for camera B' );
is_deeply( $co->{effective}, { A => { v('2020-08-12T12:34:00') => '-00:00:05' } },
'synchronized' );
is( $co->get( 'A', t('2020-08-12T12:33:00') ), '-00:00:05', 'before first' );
is( $co->get( 'A', t('2020-08-12T12:34:00') ), '-00:00:05', 'begin of segment' );
is( $co->get( 'A', t('2020-08-12T12:35:00') ), '-00:00:05', 'after last' );
$co->set( 'A', t('2020-08-12T13:05:00'), '-00:00:05' );
is_deeply(
$co->{added},
{
A => {
v('2020-08-12T12:34:00') => { offset => '-00:00:05' },
v('2020-08-12T13:05:00') => { offset => '-00:00:05' }
}
},
'extend segment'
);
is( $co->get( 'A', v('2020-08-12T12:33:00') ), '-00:00:05',
'2020-08-12T12:33:00 before first' );
is_deeply(
$co->{effective},
{
A => {
v('2020-08-12T12:34:00') => '-00:00:05',
v('2020-08-12T13:05:00') => '-00:00:05'
}
},
'synchronized'
);
is( $co->get( 'A', t('2020-08-12T12:34:00') ), '-00:00:05',
( run in 0.535 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )