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