@@ -438,6 +438,48 @@ describe('url-parse', function () {
438438 data . set ( 'protocol' , 'https:' ) ;
439439 assume ( data . href ) . equals ( 'https://google.com/foo' ) ;
440440 } ) ;
441+
442+ it ( 'handles the file: protocol' , function ( ) {
443+ var slashes = [ '' , '/' , '//' , '///' , '////' , '/////' ] ;
444+ var data ;
445+ var url ;
446+
447+ for ( var i = 0 ; i < slashes . length ; i ++ ) {
448+ data = parse ( 'file:' + slashes [ i ] ) ;
449+ assume ( data . protocol ) . equals ( 'file:' ) ;
450+ assume ( data . pathname ) . equals ( '/' ) ;
451+ assume ( data . href ) . equals ( 'file:///' ) ;
452+ }
453+
454+ url = 'file:///Users/foo/BAR/baz.pdf' ;
455+ data = parse ( url ) ;
456+ assume ( data . protocol ) . equals ( 'file:' ) ;
457+ assume ( data . pathname ) . equals ( '/Users/foo/BAR/baz.pdf' ) ;
458+ assume ( data . href ) . equals ( url ) ;
459+
460+ url = 'file:///foo/bar?baz=qux#hash' ;
461+ data = parse ( url ) ;
462+ assume ( data . protocol ) . equals ( 'file:' ) ;
463+ assume ( data . hash ) . equals ( '#hash' ) ;
464+ assume ( data . query ) . equals ( '?baz=qux' ) ;
465+ assume ( data . pathname ) . equals ( '/foo/bar' ) ;
466+ assume ( data . href ) . equals ( url ) ;
467+
468+ data = parse ( 'file://c:\\foo\\bar\\' ) ;
469+ assume ( data . protocol ) . equals ( 'file:' ) ;
470+ assume ( data . pathname ) . equals ( '/c:/foo/bar/' ) ;
471+ assume ( data . href ) . equals ( 'file:///c:/foo/bar/' ) ;
472+
473+ data = parse ( 'foo/bar' , 'file:///baz' ) ;
474+ assume ( data . protocol ) . equals ( 'file:' ) ;
475+ assume ( data . pathname ) . equals ( '/foo/bar' ) ;
476+ assume ( data . href ) . equals ( 'file:///foo/bar' ) ;
477+
478+ data = parse ( 'foo/bar' , 'file:///baz/' ) ;
479+ assume ( data . protocol ) . equals ( 'file:' ) ;
480+ assume ( data . pathname ) . equals ( '/baz/foo/bar' ) ;
481+ assume ( data . href ) . equals ( 'file:///baz/foo/bar' ) ;
482+ } ) ;
441483 } ) ;
442484
443485 describe ( 'ip' , function ( ) {
0 commit comments