File: version.t

package info (click to toggle)
libpandoc-wrapper-perl 0.9.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 304 kB
  • sloc: perl: 589; makefile: 5; sh: 1
file content (95 lines) | stat: -rw-r--r-- 2,476 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
use strict;
use Test::More;
use Test::Exception;
use Pandoc::Version;

{
    my %same = (
        array   => [ [ 1, 17, 0, 4 ] ],
        list    => [ ( 1, 17, 0, 4 ) ],
        string  => ['1.17.0.4'],
        vstring => ['v1.17.0.4'],
    );

    foreach ( sort keys %same ) {
        my $version = new_ok 'Pandoc::Version', $same{$_}, "new from $_";
        is_deeply $version->TO_JSON, [qw(1 17 0 4)], "from $_";
    }

    my @invalid = (
        [{}], ['1..2'], ['abc'], ['1.9a'], ['0.-1'],
        [], [''], [undef]
    );

    foreach ( @invalid ) {
        throws_ok { Pandoc::Version->new(@{$_}) }
            qr{^invalid version number}, 'invalid version number';
    }
}

{
    my $version = bless [ 1, 17, 0, 4 ], 'Pandoc::Version';
    new_ok 'Pandoc::Version', [ $version ], 'copy constructor';
    is "$version", '1.17.0.4', 'stringify';
    is $version->number, 1.017000004, 'number';

    my %tests = (
        '1.9' => {
            eq => '1.9',
            gt => '1.10',
        }, 
        '1' => {
            eq => '1.0',
            gt => '1.0.1',
        },
        '1.17.0.4' => {
            eq => '1.17.0.4',
            gt => '1.18',
        }
    );

    foreach ( sort keys %tests ) {
        my $version = Pandoc::Version->new($_);

        my $eq = $tests{$_}{eq};
        my $gt = $tests{$_}{gt};

        ok $version == $eq, "$version == ".$eq;
        ok $version >= $eq, "$version >= ".$eq;
        ok $version <= $eq, "$version <= ".$eq;
        ok $version eq $eq, "$version eq ".$eq;
        ok $version ge $eq, "$version ge ".$eq;
        ok $version le $eq, "$version le ".$eq;

        if ( defined $gt ) {
            ok $version <  $gt, "$version < $gt";
            ok $version lt $gt, "$version lt $gt";
        }
    }
}

{
    my $version = Pandoc::Version->new('1.7.3');

    ok($version->match($_), "1.7.3 match $_") for qw(1 1.7 1.7.3 1.7.3.1);
    ok(!$version->match($_), "1.7.3 no match $_") for qw(1.6 1.8 2);
}

{
    my $version = Pandoc::Version->new('1.7');

    my @yes = qw(1.7 !=1.7.1 >1.6 >=1.7 <1.7.1 <=1.7.1 ==1.7);
    for (@yes, join ', ', @yes) {
        ok $version->fulfills($_), "fulfills $_";
    }

    my @no = qw(1.7,!=1.7 1.7.1 >1.7 >=1.7.1 <1.7 <=1.6 ==1.7.1);
    for (@no, join(', ', @yes, @no)) {
        ok !$version->fulfills($_), "!fulfills $_";
    }

    throws_ok { $version->fulfills('foo') }
        qr/^invalid version requirement: foo/, 'invalid version requirement';
}

done_testing;