File: 303-complete-alternation.t

package info (click to toggle)
libpath-dispatcher-declarative-perl 0.03-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 228 kB
  • ctags: 128
  • sloc: perl: 2,249; makefile: 2
file content (59 lines) | stat: -rw-r--r-- 1,438 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
50
51
52
53
54
55
56
57
58
59
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More tests => 20;

do {
    package MyApp::Dispatcher;
    use Path::Dispatcher::Declarative -base;

    under gate => sub {
        on [ ['foo', 'bar', 'baz'] ] => sub { die };
        on quux => sub { die };
    };
};

my $dispatcher = MyApp::Dispatcher->dispatcher;

sub complete_ok {
    local $Test::Builder::Level = $Test::Builder::Level + 1;
    my $path     = shift;
    my @expected = @_;

    my @got = $dispatcher->complete($path);

    my $message = @expected == 0 ? "no completions"
                : @expected == 1 ? "one completion"
                :                  @expected . " completions";
    $message .= " for path '$path'";

    is_deeply(\@got, \@expected, $message);
}

complete_ok('z');
complete_ok('gate z');
complete_ok('zig ');
complete_ok('zig f');
complete_ok('zig fo');
complete_ok('zig foo');

complete_ok(g   => 'gate');
complete_ok(ga  => 'gate');
complete_ok(gat => 'gate');

complete_ok(gate    => 'gate foo', 'gate bar', 'gate baz', 'gate quux');
complete_ok('gate ' => 'gate foo', 'gate bar', 'gate baz', 'gate quux');

complete_ok('gate f' => 'gate foo');

complete_ok('gate b'  => 'gate bar', 'gate baz');
complete_ok('gate ba' => 'gate bar', 'gate baz');

complete_ok('gate q'   => 'gate quux');
complete_ok('gate quu' => 'gate quux');

complete_ok('gate foo');
complete_ok('gate bar');
complete_ok('gate baz');
complete_ok('gate quux');