DateTime-Set
view release on metacpan or search on metacpan
t/20spanset_week_wrapped_recurrence.t view on Meta::CPAN
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More;
use DateTime;
use DateTime::SpanSet;
# Check that SpanSets return Spans with the correct endpoints given
# the same week recurrence as its starting and ending sets.
BEGIN {
if (eval 'use DateTime::Event::Recurrence; 1') {
plan tests => 60;
}
else {
plan skip_all => 'DateTime::Event::Recurrence required for this test.';
}
}
my $recurrence =
DateTime::Event::Recurrence->weekly(
days => 1, hours => 8, minutes => 30,
);
my $base_span_set =
DateTime::SpanSet
->from_sets(start_set => $recurrence, end_set => $recurrence);
my $test_time_zone = 'Australia/Adelaide';
test_end_points(
$base_span_set,
'no time zone changes',
undef,
);
test_end_points(
$base_span_set
->clone()
->set_time_zone($test_time_zone),
'time zone specified',
$test_time_zone,
);
test_end_points(
$base_span_set
->clone()
->set_time_zone('floating')
->set_time_zone($test_time_zone),
'intermediary floating time zone',
$test_time_zone,
);
sub test_end_points {
my ($span_set, $name, $time_zone) = @_;
foreach my $hour (6..7) {
test_end_points_for_hour($span_set, $name, $time_zone, $hour, 8);
}
foreach my $hour (8..10) {
test_end_points_for_hour($span_set, $name, $time_zone, $hour, 15);
}
return;
}
sub test_end_points_for_hour {
my ($span_set, $name, $time_zone, $hour, $expected_start_day_of_month) = @_;
( run in 0.683 second using v1.01-cache-2.11-cpan-9789f410c06 )