6 use Test::More tests => 15;
8 use CPANPLUS::Dist::Gentoo::Atom;
10 sub A () { 'CPANPLUS::Dist::Gentoo::Atom' }
12 my $no_info = qr/^Not enough information/;
13 my $range_no_ver = qr/^Range atoms require a valid version/;
14 my $inv_atom = qr/^Invalid atom/;
15 my $inv_ebuild = qr/^Invalid ebuild/;
17 my $a0 = { category => 'test', name => 'a' };
18 my $a1 = { category => 'test', name => 'a', version => '1.0' };
22 [ { category => 'test' } => $no_info ],
24 [ { %$a0, range => '<=' } => $range_no_ver ],
25 [ $a1 => { %$a1, range => '=' } ],
26 [ { %$a1, range => '<=' } => { %$a1, range => '<=' } ],
28 [ { atom => 'test/a' } => $a0 ],
29 [ { atom => 'test/a-1.0' } => { %$a1, range => '=' } ],
30 [ { atom => '>=test/a-v1.0' } => { %$a1, range => '>=' } ],
31 [ { atom => '=<test/a-v1.0' } => $inv_atom ],
32 [ { atom => '>=test/a' } => $range_no_ver ],
34 [ { ebuild => undef } => $inv_ebuild ],
35 [ { ebuild => '/wat/test/a/a.ebuild' } => $inv_ebuild ],
36 [ { ebuild => '/wat/test/a/a-1.0.ebuild' } => { %$a1, range => '=' } ],
37 [ { ebuild => '/wat/test/a/b-1.0.ebuild' } => $inv_ebuild ],
40 my @fields = qw/range category name version ebuild/;
43 my ($args, $exp) = @$t;
46 if (exists $args->{ebuild}) {
47 $meth = 'new_from_ebuild';
48 @args = ($args->{ebuild});
54 my $atom = eval { A->$meth(@args) };
57 if (ref $exp eq 'Regexp') {
64 next if exists $exp->{$_};
65 $exp->{$_} = ($_ eq 'ebuild' and exists $args->{ebuild})
70 map { my $val = $atom->$_; $_ => (defined $val ? "$val" : undef) } @fields