More dispatch tests.
[catagits/Web-Simple.git] / t / dispatch_parser.t
index 8405d7d..31371d3 100644 (file)
@@ -23,17 +23,12 @@ my $dp = Web::Dispatch::Parser->new;
    );
 }
 
-ok(
-  !eval { $dp->parse('GET POST'); 1; },
-  "Don't yet allow two methods"
-);
-
 {
    my $html = $dp->parse('.html');
 
    is_deeply(
      [ $html->({ PATH_INFO => '/foo/bar.html' }) ],
-     [ { PATH_INFO => '/foo/bar' } ],
+     [ { } ],
      '.html matches'
    );
 
@@ -49,7 +44,7 @@ ok(
 
    is_deeply(
      [ $any_ext->({ PATH_INFO => '/foo/bar.html' }) ],
-     [ { PATH_INFO => '/foo/bar' }, 'html' ],
+     [ { }, 'html' ],
      '.html matches .* and extension returned'
    );
 
@@ -90,6 +85,12 @@ ok(
      [],
      '/post/one/ does not match'
    );
+
+   is_deeply(
+     [ $post->({ PATH_INFO => '/post/one.html' }) ],
+     [ {}, 'one' ],
+     '/post/one.html still parses out one'
+   );
 }
 
 {
@@ -196,6 +197,58 @@ ok(
    );
 }
 
+TODO: {
+   local $TODO = 'needs implementing';
+   eval {
+      my $star_star = $dp->parse('GET+/**');
+   
+      is_deeply(
+        [ $star_star->({ PATH_INFO => '/foo/bar', REQUEST_METHOD => 'GET' }) ],
+        [ {}, [qw(foo bar)] ],
+        '/foo/bar via /** parses out [qw(foo bar)]'
+      );
+   };
+};
+
+TODO: {
+   local $TODO = 'needs implementing';
+   eval {
+      my $grp_star = $dp->parse('GET+/(**)');
+   
+      is_deeply(
+        [ $grp_star->({ PATH_INFO => '/foo/bar', REQUEST_METHOD => 'GET' }) ],
+        [ {}, 'foo/bar' ],
+        '/foo/bar via /(**) parses out "foo/bar"'
+      );
+   };
+};
+
+TODO: {
+   local $TODO = 'needs implementing';
+   eval {
+      my $dot_star = $dp->parse('GET+/*.*');
+   
+      is_deeply(
+        [ $dot_star->({ PATH_INFO => '/foo.bar', REQUEST_METHOD => 'GET' }) ],
+        [ {}, qw(foo bar) ],
+        '/foo.bar via /*.* parses out qw(foo bar)'
+      );
+   };
+};
+
+TODO: {
+   local $TODO = 'needs implementing';
+
+   eval {
+      my $group_ds = $dp->parse('GET+/(*.*)');
+      is_deeply(
+        [ $group_ds->({ PATH_INFO => '/foo.bar', REQUEST_METHOD => 'GET' }) ],
+        [ {}, 'foo.bar' ],
+        '/foo.bar via /*.* parses out "foo.bar"'
+      );
+   };
+};
+
 {
   local $@;
   ok(
@@ -219,7 +272,7 @@ ok(
 
    is_deeply(
      [ $not->({ PATH_INFO => '/foo.xml' }) ],
-     [ { PATH_INFO => '/foo' }, 'xml' ],
+     [ {}, 'xml' ],
      '!.html+.* matches /foo.xml'
    );
 
@@ -314,7 +367,7 @@ foreach my $win (
     [ '?:baz=&:evil=' => { baz => 'one two', evil => '/' } ],
     [ '?*' => \%all_single ],
     [ '?@*' => \%all_multi ],
-    [ '?foo=&@*' => 'FOO', do { my %h = %all_multi; delete $h{foo}; \%h } ],
+    [ '?foo=&@*' => 'FOO', \%all_multi ],
     [ '?:foo=&@*' => { %all_multi, foo => 'FOO' } ],
     [ '?:@bar=&*' => { %all_single, bar => [ qw(BAR1 BAR2) ] } ],
 ) {
@@ -365,7 +418,7 @@ foreach my $win2 (
     [ '/foo/bar/+?:baz=&:evil=' => { baz => 'one two', evil => '/' } ],
     [ '/foo/bar/+?*' => \%all_single ],
     [ '/foo/bar/+?@*' => \%all_multi ],
-    [ '/foo/bar/+?foo=&@*' => 'FOO', do { my %h = %all_multi; delete $h{foo}; \%h } ],
+    [ '/foo/bar/+?foo=&@*' => 'FOO', \%all_multi ],
     [ '/foo/bar/+?:foo=&@*' => { %all_multi, foo => 'FOO' } ],
     [ '/foo/bar/+?:@bar=&*' => { %all_single, bar => [ qw(BAR1 BAR2) ] } ],
 ) {
@@ -416,7 +469,7 @@ foreach my $win3 (
     [ '/foo/bar+?:baz=&:evil=' => { baz => 'one two', evil => '/' } ],
     [ '/foo/bar+?*' => \%all_single ],
     [ '/foo/bar+?@*' => \%all_multi ],
-    [ '/foo/bar+?foo=&@*' => 'FOO', do { my %h = %all_multi; delete $h{foo}; \%h } ],
+    [ '/foo/bar+?foo=&@*' => 'FOO', \%all_multi ],
     [ '/foo/bar+?:foo=&@*' => { %all_multi, foo => 'FOO' } ],
     [ '/foo/bar+?:@bar=&*' => { %all_single, bar => [ qw(BAR1 BAR2) ] } ],
 ) {