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 )