Blame t/serialize.t

Packit 90fbfc
use strict;
Packit 90fbfc
use warnings;
Packit 90fbfc
Packit 90fbfc
use Test::More;
Packit 90fbfc
Packit 90fbfc
use CPAN::Changes;
Packit 90fbfc
Packit 90fbfc
my $changes = CPAN::Changes->new;
Packit 90fbfc
$changes->add_release(
Packit 90fbfc
    {   date    => '2010-06-16',
Packit 90fbfc
        version => '0.01',
Packit 90fbfc
        changes => { '' => [ 'Initial release' ] },
Packit 90fbfc
    }
Packit 90fbfc
);
Packit 90fbfc
Packit 90fbfc
{
Packit 90fbfc
    my $expected = <
Packit 90fbfc
0.01 2010-06-16
Packit 90fbfc
 - Initial release
Packit 90fbfc
EOCHANGES
Packit 90fbfc
Packit 90fbfc
    is( $changes->serialize, $expected, 'serialize' );
Packit 90fbfc
}
Packit 90fbfc
Packit 90fbfc
{
Packit 90fbfc
    $changes->preamble( 'Revision history for perl module Foo::Bar' );
Packit 90fbfc
Packit 90fbfc
    my $expected = <
Packit 90fbfc
Revision history for perl module Foo::Bar
Packit 90fbfc
Packit 90fbfc
0.01 2010-06-16
Packit 90fbfc
 - Initial release
Packit 90fbfc
EOCHANGES
Packit 90fbfc
Packit 90fbfc
    is( $changes->serialize, $expected, 'serialize with preamble' );
Packit 90fbfc
}
Packit 90fbfc
Packit 90fbfc
{
Packit 90fbfc
    my $release = $changes->release( '0.01' );
Packit 90fbfc
    $release->clear_changes;
Packit 90fbfc
    $release->add_changes( { group => 'Group 1' }, 'Initial release' );
Packit 90fbfc
Packit 90fbfc
    my $expected = <
Packit 90fbfc
Revision history for perl module Foo::Bar
Packit 90fbfc
Packit 90fbfc
0.01 2010-06-16
Packit 90fbfc
 [Group 1]
Packit 90fbfc
 - Initial release
Packit 90fbfc
EOCHANGES
Packit 90fbfc
Packit 90fbfc
    is( $changes->serialize, $expected,
Packit 90fbfc
        'serialize with ground and preamble' );
Packit 90fbfc
}
Packit 90fbfc
Packit 90fbfc
{
Packit 90fbfc
    $changes->add_release(
Packit 90fbfc
        {   version => '0.02',
Packit 90fbfc
            date    => '2010-06-17',
Packit 90fbfc
            changes => { '' => [ 'New version' ] },
Packit 90fbfc
        }
Packit 90fbfc
    );
Packit 90fbfc
Packit 90fbfc
    my $expected = <
Packit 90fbfc
Revision history for perl module Foo::Bar
Packit 90fbfc
Packit 90fbfc
0.02 2010-06-17
Packit 90fbfc
 - New version
Packit 90fbfc
Packit 90fbfc
0.01 2010-06-16
Packit 90fbfc
 [Group 1]
Packit 90fbfc
 - Initial release
Packit 90fbfc
EOCHANGES
Packit 90fbfc
Packit 90fbfc
    is( $changes->serialize, $expected, 'serialize with multiple releases' );
Packit 90fbfc
}
Packit 90fbfc
Packit 90fbfc
{
Packit 90fbfc
    $changes->releases(
Packit 90fbfc
        {   version => '0.01',
Packit 90fbfc
            date    => '2010-06-16',
Packit 90fbfc
            changes => {
Packit 90fbfc
                '' => [
Packit 90fbfc
                    'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In quis tortor ac urna faucibus feugiat.'
Packit 90fbfc
                ]
Packit 90fbfc
            },
Packit 90fbfc
        }
Packit 90fbfc
    );
Packit 90fbfc
Packit 90fbfc
    my $expected = <
Packit 90fbfc
Revision history for perl module Foo::Bar
Packit 90fbfc
Packit 90fbfc
0.01 2010-06-16
Packit 90fbfc
 - Lorem ipsum dolor sit amet, consectetur adipiscing elit. In quis tortor
Packit 90fbfc
   ac urna faucibus feugiat.
Packit 90fbfc
EOCHANGES
Packit 90fbfc
Packit 90fbfc
    is( $changes->serialize, $expected, 'serialize with line-wrap' );
Packit 90fbfc
}
Packit 90fbfc
Packit 90fbfc
{
Packit 90fbfc
    $changes->releases(
Packit 90fbfc
        {   version => '0.01',
Packit 90fbfc
            date    => '2010-06-16',
Packit 90fbfc
            note    => 'Note',
Packit 90fbfc
            changes => {
Packit 90fbfc
                '' => [
Packit 90fbfc
                    'Test'
Packit 90fbfc
                ]
Packit 90fbfc
            },
Packit 90fbfc
        }
Packit 90fbfc
    );
Packit 90fbfc
Packit 90fbfc
    my $expected = <
Packit 90fbfc
Revision history for perl module Foo::Bar
Packit 90fbfc
Packit 90fbfc
0.01 2010-06-16 Note
Packit 90fbfc
 - Test
Packit 90fbfc
EOCHANGES
Packit 90fbfc
Packit 90fbfc
    is( $changes->serialize, $expected, 'serialize with note' );
Packit 90fbfc
}
Packit 90fbfc
Packit 90fbfc
{
Packit 90fbfc
    $changes->releases(
Packit 90fbfc
        {   version => '0.01',
Packit 90fbfc
            date    => 'Unknown',
Packit 90fbfc
            note    => '(Oops)',
Packit 90fbfc
            changes => {
Packit 90fbfc
                '' => [
Packit 90fbfc
                    'Test'
Packit 90fbfc
                ]
Packit 90fbfc
            },
Packit 90fbfc
        }
Packit 90fbfc
    );
Packit 90fbfc
Packit 90fbfc
    my $expected = <
Packit 90fbfc
Revision history for perl module Foo::Bar
Packit 90fbfc
Packit 90fbfc
0.01 Unknown (Oops)
Packit 90fbfc
 - Test
Packit 90fbfc
EOCHANGES
Packit 90fbfc
Packit 90fbfc
    is( $changes->serialize, $expected, 'serialize with unknown date and note' );
Packit 90fbfc
}
Packit 90fbfc
Packit 90fbfc
{
Packit 90fbfc
    my $changes = CPAN::Changes->new;
Packit 90fbfc
    $changes->add_release(
Packit 90fbfc
        {   date    => '',
Packit 90fbfc
            version => '0.01',
Packit 90fbfc
            note    => '',
Packit 90fbfc
            changes => { '' => [ 'Initial release' ] },
Packit 90fbfc
        }
Packit 90fbfc
    );
Packit 90fbfc
    my $expected = <
Packit 90fbfc
0.01
Packit 90fbfc
 - Initial release
Packit 90fbfc
EOCHANGES
Packit 90fbfc
Packit 90fbfc
    is( $changes->serialize, $expected, 'serialize w/ defined but empty date and note' );
Packit 90fbfc
}
Packit 90fbfc
Packit 90fbfc
{
Packit 90fbfc
    my $changes = CPAN::Changes->new;
Packit 90fbfc
    $changes->add_release(
Packit 90fbfc
        {   date    => '',
Packit 90fbfc
            version => '0.01',
Packit 90fbfc
            note    => '',
Packit 90fbfc
            changes => { '' => [
Packit 90fbfc
                'http://www.cpan.org/abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz',
Packit 90fbfc
                "\x{026B}this_entry_should_not_be_wrapped_on_the_nonbreaking_space\x{00A0}in_it_even_though_it_is_over_80_characters_long",
Packit 90fbfc
            ] },
Packit 90fbfc
        }
Packit 90fbfc
    );
Packit 90fbfc
    my $expected = <
Packit 90fbfc
0.01
Packit 90fbfc
 - http://www.cpan.org/abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
Packit 90fbfc
 - \x{026B}this_entry_should_not_be_wrapped_on_the_nonbreaking_space\x{00A0}in_it_even_though_it_is_over_80_characters_long
Packit 90fbfc
EOCHANGES
Packit 90fbfc
Packit 90fbfc
    is( $changes->serialize, $expected, 'serialize does not wrap long tokens or split on nbsp' );
Packit 90fbfc
}
Packit 90fbfc
Packit 90fbfc
done_testing;