@@ -352,6 +352,43 @@ mod tests {
352
352
assert_eq ! ( m. params, params( "foo" , "foo" ) ) ;
353
353
}
354
354
355
+ #[ test]
356
+ fn star_colon ( ) {
357
+ let mut router = Router :: new ( ) ;
358
+
359
+ router. add ( "/a/*b" , "ab" . to_string ( ) ) ;
360
+ router. add ( "/a/*b/c" , "abc" . to_string ( ) ) ;
361
+ router. add ( "/a/*b/c/:d" , "abcd" . to_string ( ) ) ;
362
+
363
+ let m = router. recognize ( "/a/foo" ) . unwrap ( ) ;
364
+ assert_eq ! ( * m. handler, "ab" . to_string( ) ) ;
365
+ assert_eq ! ( m. params, params( "b" , "foo" ) ) ;
366
+
367
+ let m = router. recognize ( "/a/foo/bar" ) . unwrap ( ) ;
368
+ assert_eq ! ( * m. handler, "ab" . to_string( ) ) ;
369
+ assert_eq ! ( m. params, params( "b" , "foo/bar" ) ) ;
370
+
371
+ let m = router. recognize ( "/a/foo/c" ) . unwrap ( ) ;
372
+ assert_eq ! ( * m. handler, "abc" . to_string( ) ) ;
373
+ assert_eq ! ( m. params, params( "b" , "foo" ) ) ;
374
+
375
+ let m = router. recognize ( "/a/foo/bar/c" ) . unwrap ( ) ;
376
+ assert_eq ! ( * m. handler, "abc" . to_string( ) ) ;
377
+ assert_eq ! ( m. params, params( "b" , "foo/bar" ) ) ;
378
+
379
+ let m = router. recognize ( "/a/foo/c/baz" ) . unwrap ( ) ;
380
+ assert_eq ! ( * m. handler, "abcd" . to_string( ) ) ;
381
+ assert_eq ! ( m. params, two_params( "b" , "foo" , "d" , "baz" ) ) ;
382
+
383
+ let m = router. recognize ( "/a/foo/bar/c/baz" ) . unwrap ( ) ;
384
+ assert_eq ! ( * m. handler, "abcd" . to_string( ) ) ;
385
+ assert_eq ! ( m. params, two_params( "b" , "foo/bar" , "d" , "baz" ) ) ;
386
+
387
+ let m = router. recognize ( "/a/foo/bar/c/baz/bay" ) . unwrap ( ) ;
388
+ assert_eq ! ( * m. handler, "ab" . to_string( ) ) ;
389
+ assert_eq ! ( m. params, params( "b" , "foo/bar/c/baz/bay" ) ) ;
390
+ }
391
+
355
392
#[ test]
356
393
fn unnamed_parameters ( ) {
357
394
let mut router = Router :: new ( ) ;
0 commit comments