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;
|