File: 017-intersection.t

package info (click to toggle)
libpath-dispatcher-perl 1.08-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 512 kB
  • sloc: perl: 1,046; makefile: 2
file content (49 lines) | stat: -rw-r--r-- 1,333 bytes parent folder | download | duplicates (3)
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
use strict;
use warnings;
use Test::More;
use Path::Dispatcher;

my @calls;

my $dispatcher = Path::Dispatcher->new(
    rules => [
        Path::Dispatcher::Rule::Intersection->new(
            rules => [
                Path::Dispatcher::Rule::Tokens->new(
                    tokens => ['foo'],
                    block => sub { push @calls, 'tokens' },
                ),
                Path::Dispatcher::Rule::Regex->new(
                    regex => qr/^foo$/,
                    block => sub { push @calls, 'regex' },
                ),
            ],
            block => sub { push @calls, 'intersection' },
        ),
    ],
);

$dispatcher->run("foo");
is_deeply([splice @calls], ['intersection'], "the intersection matched; doesn't automatically run the subrules");

$dispatcher->run("food");
is_deeply([splice @calls], [], "each subrule of the intersection must match");

$dispatcher->run(" foo ");
is_deeply([splice @calls], [], "each subrule of the intersection must match");

# test empty intersection
$dispatcher = Path::Dispatcher->new(
    rules => [
        Path::Dispatcher::Rule::Intersection->new(
            rules => [ ],
            block => sub { push @calls, 'intersection' },
        ),
    ],
);

$dispatcher->run("foo");
is_deeply([splice @calls], [], "no subrules means no match");

done_testing;