@@ -46,6 +46,30 @@ describe('path-to-regexp', function () {
46
46
assert . ok ( ! m ) ;
47
47
} ) ;
48
48
49
+ it ( 'should do strict matches with trailing slashes' , function ( ) {
50
+ var params = [ ] ;
51
+ var re = pathToRegExp ( '/:test/' , params , { strict : true } ) ;
52
+ var m ;
53
+
54
+ assert . equal ( params . length , 1 ) ;
55
+ assert . equal ( params [ 0 ] . name , 'test' ) ;
56
+ assert . equal ( params [ 0 ] . optional , false ) ;
57
+
58
+ m = re . exec ( '/route' ) ;
59
+
60
+ assert . ok ( ! m ) ;
61
+
62
+ m = re . exec ( '/route/' ) ;
63
+
64
+ assert . equal ( m . length , 2 ) ;
65
+ assert . equal ( m [ 0 ] , '/route/' ) ;
66
+ assert . equal ( m [ 1 ] , 'route' ) ;
67
+
68
+ m = re . exec ( '/route//' ) ;
69
+
70
+ assert . ok ( ! m ) ;
71
+ } ) ;
72
+
49
73
it ( 'should allow optional express format params' , function ( ) {
50
74
var params = [ ] ;
51
75
var re = pathToRegExp ( '/:test?' , params ) ;
@@ -388,19 +412,47 @@ describe('path-to-regexp', function () {
388
412
assert . equal ( m [ 1 ] , 'test' ) ;
389
413
} ) ;
390
414
415
+ it ( 'should match trailing slashing in non-ending strict mode' , function ( ) {
416
+ var params = [ ] ;
417
+ var re = pathToRegExp ( '/route/' , params , { end : false , strict : true } ) ;
418
+
419
+ assert . equal ( params . length , 0 ) ;
420
+
421
+ m = re . exec ( '/route/' ) ;
422
+
423
+ assert . equal ( m . length , 1 ) ;
424
+ assert . equal ( m [ 0 ] , '/route/' ) ;
425
+
426
+ m = re . exec ( '/route/test' ) ;
427
+
428
+ assert . equal ( m . length , 1 ) ;
429
+ assert . equal ( m [ 0 ] , '/route/' ) ;
430
+
431
+ m = re . exec ( '/route' ) ;
432
+
433
+ assert . ok ( ! m ) ;
434
+
435
+ m = re . exec ( '/route//' ) ;
436
+
437
+ assert . equal ( m . length , 1 ) ;
438
+ assert . equal ( m [ 0 ] , '/route/' ) ;
439
+ } ) ;
440
+
391
441
it ( 'should not match trailing slashes in non-ending strict mode' , function ( ) {
392
442
var params = [ ] ;
393
- var re = pathToRegExp ( '/:test ' , params , { end : false , strict : true } ) ;
443
+ var re = pathToRegExp ( '/route ' , params , { end : false , strict : true } ) ;
394
444
395
- assert . equal ( params . length , 1 ) ;
396
- assert . equal ( params [ 0 ] . name , 'test' ) ;
397
- assert . equal ( params [ 0 ] . optional , false ) ;
445
+ assert . equal ( params . length , 0 ) ;
398
446
399
- m = re . exec ( '/test/ ' ) ;
447
+ m = re . exec ( '/route ' ) ;
400
448
401
- assert . equal ( m . length , 2 ) ;
402
- assert . equal ( m [ 0 ] , '/test' ) ;
403
- assert . equal ( m [ 1 ] , 'test' ) ;
449
+ assert . equal ( m . length , 1 ) ;
450
+ assert . equal ( m [ 0 ] , '/route' ) ;
451
+
452
+ m = re . exec ( '/route/' ) ;
453
+
454
+ assert . ok ( m . length , 1 ) ;
455
+ assert . equal ( m [ 0 ] , '/route' ) ;
404
456
} ) ;
405
457
406
458
it ( 'should match text after an express param' , function ( ) {
0 commit comments