DateTime

 view release on metacpan or  search on metacpan

xt/author/pp-11duration.t  view on Meta::CPAN

    is( $dur->delta_nanoseconds, 9,   'delta_nanoseconds' );

    is( $dur->in_units('months'),  14,  'in_units months' );
    is( $dur->in_units('days'),    25,  'in_units days' );
    is( $dur->in_units('minutes'), 367, 'in_units minutes' );
    is( $dur->in_units('seconds'), 8,   'in_units seconds' );
    is(
        $dur->in_units( 'nanoseconds', 'seconds' ), 9,
        'in_units nanoseconds, seconds'
    );

    is( $dur->in_units('years'),              1, 'in_units years' );
    is( $dur->in_units( 'months', 'years' ),  2, 'in_units months, years' );
    is( $dur->in_units('weeks'),              3, 'in_units weeks' );
    is( $dur->in_units( 'days', 'weeks' ),    4, 'in_units days, weeks' );
    is( $dur->in_units('hours'),              6, 'in_units hours' );
    is( $dur->in_units( 'minutes', 'hours' ), 7, 'in_units minutes, hours' );
    is(
        $dur->in_units('nanoseconds'), 8_000_000_009,
        'in_units nanoseconds'
    );

    my (
        $years,   $months,  $weeks, $days, $hours,
        $minutes, $seconds, $nanoseconds
        )
        = $dur->in_units(
        qw( years months weeks days hours
            minutes seconds nanoseconds )
        );

    is( $years,       1, 'in_units years, list context' );
    is( $months,      2, 'in_units months, list context' );
    is( $weeks,       3, 'in_units weeks, list context' );
    is( $days,        4, 'in_units days, list context' );
    is( $hours,       6, 'in_units hours, list context' );
    is( $minutes,     7, 'in_units minutes, list context' );
    is( $seconds,     8, 'in_units seconds, list context' );
    is( $nanoseconds, 9, 'in_units nanoseconds, list context' );

    ok( $dur->is_positive,  'should be positive' );
    ok( !$dur->is_zero,     'should not be zero' );
    ok( !$dur->is_negative, 'should not be negative' );

    ok( $dur->is_wrap_mode, 'wrap mode' );
}
{
    my %pairs = (
        years       => 1,
        months      => 2,
        weeks       => 3,
        days        => 4,
        hours       => 6,
        minutes     => 7,
        seconds     => 8,
        nanoseconds => 9,
    );

    my $dur = DateTime::Duration->new( %pairs, end_of_month => 'limit' );

    my $calendar_dur = $dur->calendar_duration;
    is( $calendar_dur->delta_months,  14, 'date - delta_months is 14' );
    is( $calendar_dur->delta_minutes, 0,  'date - delta_minutes is 0' );
    is( $calendar_dur->delta_seconds, 0,  'date - delta_seconds is 0' );
    is(
        $calendar_dur->delta_nanoseconds, 0,
        'date - delta_nanoseconds is 0'
    );
    ok( $calendar_dur->is_limit_mode, 'limit mode' );

    my $clock_dur = $dur->clock_duration;
    is( $clock_dur->delta_months,      0,   'time  - delta_months is 0' );
    is( $clock_dur->delta_minutes,     367, 'time  - delta_minutes is 367' );
    is( $clock_dur->delta_seconds,     8,   'time  - delta_seconds is 8' );
    is( $clock_dur->delta_nanoseconds, 9, 'time  - delta_nanoseconds is 9' );
    ok( $clock_dur->is_limit_mode, 'limit mode' );
}

{
    my $dur = DateTime::Duration->new( days => 1, end_of_month => 'limit' );
    ok( $dur->is_limit_mode, 'limit mode' );
}

{
    my $dur
        = DateTime::Duration->new( days => 1, end_of_month => 'preserve' );
    ok( $dur->is_preserve_mode, 'preserve mode' );
}

my $leap_day = DateTime->new(
    year      => 2004, month => 2, day => 29,
    time_zone => 'UTC',
);

{
    my $new = $leap_day + DateTime::Duration->new(
        years        => 1,
        end_of_month => 'wrap'
    );

    is( $new->date, '2005-03-01', 'new date should be 2005-03-01' );
}

{
    my $new = $leap_day + DateTime::Duration->new(
        years        => 1,
        end_of_month => 'limit'
    );

    is( $new->date, '2005-02-28', 'new date should be 2005-02-28' );
}

{
    my $new = $leap_day + DateTime::Duration->new(
        years        => 1,
        end_of_month => 'preserve'
    );

    is( $new->date, '2005-02-28', 'new date should be 2005-02-28' );

    my $new2 = $leap_day + DateTime::Duration->new(
        months       => 1,
        end_of_month => 'preserve'
    );
    is( $new2->date, '2004-03-31', 'new date should be 2004-03-31' );
}

{
    my $inverse = DateTime::Duration->new(



( run in 2.050 seconds using v1.01-cache-2.11-cpan-437f7b0c052 )