File: owner.t

package info (click to toggle)
libsoftware-copyright-perl 0.015-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 168 kB
  • sloc: perl: 300; makefile: 10
file content (94 lines) | stat: -rw-r--r-- 2,962 bytes parent folder | download
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
use 5.20.0;
use strict;
use warnings;
use utf8;
use open ':std', ':encoding(utf8)';

use Test::More;
use Test::Synopsis::Expectation;
use Unicode::Normalize;
use feature qw/postderef signatures/;
no warnings qw/experimental::postderef experimental::signatures/;

require_ok('Software::Copyright::Owner');

synopsis_ok('lib/Software/Copyright/Owner.pm') unless $ENV{AUTOPKGTEST_TMP};

subtest "just a name" => sub {
    my $owner = Software::Copyright::Owner->new("Marcel");

    is("$owner", "Marcel", "check simple owner");
    is($owner->name, "Marcel", "check name");
};

subtest "just an unicode name" => sub {
    my $owner = Software::Copyright::Owner->new(NFD("Éric"));

    is("$owner", NFC("Éric"), "check unicode owner");
    is($owner->name, NFC("Éric"), "check name");
};

subtest "just a number" => sub {
    my $owner = Software::Copyright::Owner->new("2021");

    is("$owner", "2021", "check owner string when a number was given");
    is($owner->name, undef, "check owner name when a number was given");
    is($owner->record, "2021", "check owner name when a number was given");
};

subtest "combined owners" => sub {
    my $str = "Blaine Bublitz, Eric Schoffstall and other contributors";
    my $owner = Software::Copyright::Owner->new($str);

    is("$owner", $str, "check owner string");
    is($owner->name, undef, "check owner name");
    is($owner->record, $str, "check owner name");
    is($owner->identifier, $str, "check owner identifier");
};

subtest "combined owners and email" => sub {
    my $str = 'Blaine Bublitz <blaine.bublitz@gmail.com>,'
        . ' Eric Schoffstall <yo@contra.io> and other contributors';
    my $owner = Software::Copyright::Owner->new($str);

    is("$owner", $str, "check owner string");
    is($owner->name, undef, "check owner name");
    is($owner->record, $str, "check owner record");
    is($owner->identifier, $str, "check owner identifier");
    is($owner->email, undef, "check owner email");
};

subtest "name and email" => sub {
    my $owner = Software::Copyright::Owner->new("Marcel");

    $owner->email( 'marcel@example.com' );

    is("$owner", 'Marcel <marcel@example.com>', "check owner and email");
};

subtest "create with name and email" => sub {
    my @tests = (
        ['Marcel <marcel@example.com>', Marcel => 'marcel@example.com'],
        ['Marcel <marcel2015@example.com>', Marcel => 'marcel2015@example.com'],
    );

    foreach my $test (@tests) {
        my ($in, $name, $email, $out) = $test->@*;
        my $owner = Software::Copyright::Owner->new($in);

        is($owner->name, $name, "check name");
        is($owner->email, $email, "check email");

        is("$owner", $out // $in, "check owner and email");
    }
};

subtest "invalid owners" => sub {
    my $owner = Software::Copyright::Owner->new('**');

    is($owner->name, undef, "check name");
    is($owner->email, undef, "check email");
    is($owner->record, "**", "check record");
};

done_testing;