@@ -764,4 +764,44 @@ describe('path-to-regexp', function () {
764764 assert . equal ( m [ 3 ] , 'path' ) ;
765765 } ) ;
766766 } ) ;
767+
768+ describe ( 'regressions' , function ( ) {
769+ it ( 'should work with strongloop/expressjs.com#417' , function ( ) {
770+ var params = [ ] ;
771+ var re = pathToRegExp ( '/:foo\\(:bar?\\)' , params ) ;
772+ var m ;
773+
774+ assert . equal ( params . length , 2 ) ;
775+ assert . equal ( params [ 0 ] . name , 'foo' ) ;
776+ assert . equal ( params [ 0 ] . optional , false ) ;
777+ assert . equal ( params [ 1 ] . name , 'bar' ) ;
778+ assert . equal ( params [ 1 ] . optional , true ) ;
779+
780+ m = re . exec ( '/hello(world)' ) ;
781+
782+ assert . equal ( m . length , 3 ) ;
783+ assert . equal ( m [ 0 ] , '/hello(world)' ) ;
784+ assert . equal ( m [ 1 ] , 'hello' ) ;
785+ assert . equal ( m [ 2 ] , 'world' ) ;
786+ } ) ;
787+
788+ it ( 'should handle an escaped escape character' , function ( ) {
789+ var params = [ ] ;
790+ var re = pathToRegExp ( '/:foo\\\\(world)' , params ) ;
791+ var m ;
792+
793+ assert . equal ( params . length , 2 ) ;
794+ assert . equal ( params [ 0 ] . name , 'foo' ) ;
795+ assert . equal ( params [ 0 ] . optional , false ) ;
796+ assert . equal ( params [ 1 ] . name , 0 ) ;
797+ assert . equal ( params [ 1 ] . optional , false ) ;
798+
799+ m = re . exec ( '/hello\\world' ) ;
800+
801+ assert . equal ( m . length , 3 ) ;
802+ assert . equal ( m [ 0 ] , '/hello\\world' ) ;
803+ assert . equal ( m [ 1 ] , 'hello' ) ;
804+ assert . equal ( m [ 2 ] , 'world' ) ;
805+ } ) ;
806+ } ) ;
767807} ) ;
0 commit comments