Lines 436-441
Link Here
|
436 |
* test toUri |
436 |
* test toUri |
437 |
*/ |
437 |
*/ |
438 |
public void testToURI() { |
438 |
public void testToURI() { |
|
|
439 |
// Tricky because the syntax of a file: URI is platform-dependent and |
440 |
// not fully specified by Java. |
439 |
String dosRoot = null; |
441 |
String dosRoot = null; |
440 |
if (Os.isFamily("dos")) { |
442 |
if (Os.isFamily("dos")) { |
441 |
dosRoot = System.getProperty("user.dir").charAt(0) + ":/"; |
443 |
dosRoot = System.getProperty("user.dir").charAt(0) + ":/"; |
Lines 445-463
Link Here
|
445 |
dosRoot = ""; |
447 |
dosRoot = ""; |
446 |
} |
448 |
} |
447 |
if (Os.isFamily("dos")) { |
449 |
if (Os.isFamily("dos")) { |
448 |
assertEquals("file:///C:/foo", fu.toURI("c:\\foo")); |
450 |
assertEquals("file:/C:/foo", removeExtraneousAuthority(fu.toURI("c:\\foo"))); |
449 |
} |
451 |
} |
450 |
if (Os.isFamily("netware")) { |
452 |
if (Os.isFamily("netware")) { |
451 |
assertEquals("file:///SYS:/foo", fu.toURI("sys:\\foo")); |
453 |
assertEquals("file:/SYS:/foo", removeExtraneousAuthority(fu.toURI("sys:\\foo"))); |
|
|
454 |
} |
455 |
if (File.pathSeparatorChar == '/') { |
456 |
assertEquals("file:/foo", removeExtraneousAuthority(fu.toURI("/foo"))); |
457 |
assertTrue("file: URIs must name absolute paths", fu.toURI("./foo").startsWith("file:/")); |
458 |
assertTrue(fu.toURI("./foo").endsWith("/foo")); |
459 |
assertEquals("file:/" + dosRoot + "foo%20bar", removeExtraneousAuthority(fu.toURI("/foo bar"))); |
460 |
assertEquals("file:/" + dosRoot + "foo%23bar", removeExtraneousAuthority(fu.toURI("/foo#bar"))); |
461 |
} else if (File.pathSeparatorChar == '\\') { |
462 |
assertEquals("file:/" + dosRoot + "foo", removeExtraneousAuthority(fu.toURI("\\foo"))); |
463 |
assertTrue("file: URIs must name absolute paths", fu.toURI(".\\foo").startsWith("file:/")); |
464 |
assertTrue(fu.toURI(".\\foo").endsWith("/foo")); |
465 |
assertEquals("file:/" + dosRoot + "foo%20bar", removeExtraneousAuthority(fu.toURI("\\foo bar"))); |
466 |
assertEquals("file:/" + dosRoot + "foo%23bar", removeExtraneousAuthority(fu.toURI("\\foo#bar"))); |
467 |
} |
468 |
} |
469 |
|
470 |
/** |
471 |
* Authority field is unnecessary, but harmless, in file: URIs. |
472 |
* Java 1.4 does not produce it when using File.toURI. |
473 |
*/ |
474 |
private static String removeExtraneousAuthority(String uri) { |
475 |
String prefix = "file:///"; |
476 |
if (uri.startsWith(prefix)) { |
477 |
return "file:/" + uri.substring(prefix.length()); |
478 |
} else { |
479 |
return uri; |
452 |
} |
480 |
} |
453 |
assertEquals("file:///" + dosRoot + "foo", fu.toURI("/foo")); |
|
|
454 |
assertEquals("file:./foo", fu.toURI("./foo")); |
455 |
assertEquals("file:///" + dosRoot + "foo", fu.toURI("\\foo")); |
456 |
assertEquals("file:./foo", fu.toURI(".\\foo")); |
457 |
assertEquals("file:///" + dosRoot + "foo%20bar", fu.toURI("/foo bar")); |
458 |
assertEquals("file:///" + dosRoot + "foo%20bar", fu.toURI("\\foo bar")); |
459 |
assertEquals("file:///" + dosRoot + "foo%23bar", fu.toURI("/foo#bar")); |
460 |
assertEquals("file:///" + dosRoot + "foo%23bar", fu.toURI("\\foo#bar")); |
461 |
} |
481 |
} |
462 |
|
482 |
|
463 |
/** |
483 |
/** |
Lines 471-478
Link Here
|
471 |
assertEqualsIgnoreDriveCase("C:\\foo", fu.fromURI("file:///c:/foo")); |
491 |
assertEqualsIgnoreDriveCase("C:\\foo", fu.fromURI("file:///c:/foo")); |
472 |
} |
492 |
} |
473 |
assertEqualsIgnoreDriveCase(localize("/foo"), fu.fromURI("file:///foo")); |
493 |
assertEqualsIgnoreDriveCase(localize("/foo"), fu.fromURI("file:///foo")); |
|
|
494 |
/* Illegal URI. |
474 |
assertEquals("." + File.separator + "foo", |
495 |
assertEquals("." + File.separator + "foo", |
475 |
fu.fromURI("file:./foo")); |
496 |
fu.fromURI("file:./foo")); |
|
|
497 |
*/ |
476 |
assertEqualsIgnoreDriveCase(localize("/foo bar"), fu.fromURI("file:///foo%20bar")); |
498 |
assertEqualsIgnoreDriveCase(localize("/foo bar"), fu.fromURI("file:///foo%20bar")); |
477 |
assertEqualsIgnoreDriveCase(localize("/foo#bar"), fu.fromURI("file:///foo%23bar")); |
499 |
assertEqualsIgnoreDriveCase(localize("/foo#bar"), fu.fromURI("file:///foo%23bar")); |
478 |
} |
500 |
} |