Sponsoring The Perl Toolchain Summit 2025: Help make this important event another success Learn more

package A;
sub b { }
1;
package Ab;
sub c { }
1;
package main;
use strict;
my $r = Kelp::Routes->new;
$r->add('/a' => {to => 'a#b', name => 'a'});
$r->add('/b' => {to => 'ab#c', name => 'b'});
$r->add('/a/b' => {to => 'a#b', name => 'ab'});
$r->add('/a/b/c' => 'ab#c');
is $r->url('noname'), 'noname';
is $r->url('a'), '/a';
is $r->url('b'), '/b';
is $r->url('ab'), '/a/b';
$r->clear;
$r->add('/:a/:b', {to => 'a#b', name => 'a'});
$r->add('/:a/?b', {to => 'ab#c', name => 'b', defaults => {b => 'foo'}});
is $r->url(qw/a a bar b foo/), '/bar/foo';
is $r->url(qw/b a bar b moo/), '/bar/moo';
is $r->url(qw/b a bar/), '/bar/foo';
done_testing;