use v6; use Test; plan 6; use Zef::Identity; subtest 'Require spec - exact' => { my @variations = ( 'Net::HTTP:ver<1.0>:auth>', 'Net::HTTP:auth>:ver<1.0>:api<>', ); for @variations -> $identity { my $ident = Zef::Identity.new($identity); is $ident.auth, 'Foo Bar '; is $ident.name, 'Net::HTTP'; is $ident.version, '1.0'; } } subtest 'Require spec - range *' => { my @variations = ( "Net::HTTP:ver<*>:auth", ); for @variations -> $identity { my $ident = Zef::Identity.new($identity); is $ident.auth, 'github:ugexe'; is $ident.name, 'Net::HTTP'; is $ident.version, '*'; } } subtest 'Require spec - range +' => { my @variations = ( "Net::HTTP:ver<1.0+>:auth", "Net::HTTP:auth:ver<1.0+>:api<>", ); for @variations -> $identity { my $ident = Zef::Identity.new($identity); is $ident.auth, 'github:ugexe'; is $ident.name, 'Net::HTTP'; is $ident.version, '1.0+'; } } subtest 'str2identity' => { ok ?str2identity("***not valid***"); subtest 'exact' => { my $expected = "Net::HTTP:ver<1.0+>:auth"; my $require = "Net::HTTP:ver<1.0+>:auth:api<>"; my $i-require = str2identity($require); is $i-require, $expected; } subtest 'not exact' => { my $require = "Net::HTTP"; my $i-require = str2identity($require); is $i-require, 'Net::HTTP'; } subtest 'root namespace' => { my $require = "HTTP"; my $i-require = str2identity($require); is $i-require, 'HTTP'; } } subtest 'identity2hash' => { my $require = "Net::HTTP:ver<1.0+>:auth"; my %hash = %( :name, :ver<1.0+>, :auth ); ok ?identity2hash("***not valid***"); my %i-require = identity2hash($require); is %i-require, 'Net::HTTP'; is %i-require, '1.0+'; is %i-require, 'github:ugexe'; } subtest 'hash2identity' => { my $require = "Net::HTTP:ver<1.0+>:auth"; my %hash = %( :name, :ver<1.0+>, :auth ); ok ?hash2identity("***not valid***"); my $i-require = hash2identity(%hash); is $i-require, "Net::HTTP:ver<1.0+>:auth"; }