| Index: tests/standalone/io/path_test.dart
|
| diff --git a/tests/standalone/io/path_test.dart b/tests/standalone/io/path_test.dart
|
| index b6d1b9911525d2a804807c631280197fb924d8d3..1607cda58280f6c65fe5cbdcba99b01a7948a7ec 100644
|
| --- a/tests/standalone/io/path_test.dart
|
| +++ b/tests/standalone/io/path_test.dart
|
| @@ -183,6 +183,7 @@ void testJoinAppend() {
|
| }
|
|
|
| void testRelativeTo() {
|
| + // Cases where the arguments are absolute paths.
|
| Expect.equals('c/d',
|
| new Path('/a/b/c/d').relativeTo(new Path('/a/b')).toString());
|
| Expect.equals('c/d',
|
| @@ -190,28 +191,65 @@ void testRelativeTo() {
|
| Expect.equals('.',
|
| new Path('/a').relativeTo(new Path('/a')).toString());
|
|
|
| - // Trailing / in base path represents directory
|
| + // Trailing slash in the base path has no effect. This matches Path.join
|
| + // semantics, but not URL join semantics.
|
| Expect.equals('../../z/x/y',
|
| new Path('/a/b/z/x/y').relativeTo(new Path('/a/b/c/d/')).toString());
|
| - Expect.equals('../z/x/y',
|
| + Expect.equals('../../z/x/y',
|
| new Path('/a/b/z/x/y').relativeTo(new Path('/a/b/c/d')).toString());
|
| - Expect.equals('../z/x/y/',
|
| + Expect.equals('../../z/x/y/',
|
| new Path('/a/b/z/x/y/').relativeTo(new Path('/a/b/c/d')).toString());
|
|
|
| - Expect.equals('../../z/x/y',
|
| + Expect.equals('../../../z/x/y',
|
| new Path('/z/x/y').relativeTo(new Path('/a/b/c')).toString());
|
| Expect.equals('../../../z/x/y',
|
| new Path('/z/x/y').relativeTo(new Path('/a/b/c/')).toString());
|
|
|
| - // Not implemented yet. Should return new Path('../b/c/d/').
|
| - Expect.throws(() =>
|
| - new Path('b/c/d/').relativeTo(new Path('a/')));
|
| + // Cases where the arguments are relative paths.
|
| + Expect.equals('c/d',
|
| + new Path('a/b/c/d').relativeTo(new Path('a/b')).toString());
|
| + Expect.equals('c/d',
|
| + new Path('/a/b/c/d').relativeTo(new Path('/a/b/')).toString());
|
| + Expect.equals('.',
|
| + new Path('a/b/c').relativeTo(new Path('a/b/c')).toString());
|
| + Expect.equals('.',
|
| + new Path('').relativeTo(new Path('')).toString());
|
| + Expect.equals('.',
|
| + new Path('.').relativeTo(new Path('.')).toString());
|
| + Expect.equals('a',
|
| + new Path('a').relativeTo(new Path('.')).toString());
|
| + Expect.equals('..',
|
| + new Path('..').relativeTo(new Path('.')).toString());
|
| + Expect.equals('..',
|
| + new Path('.').relativeTo(new Path('a')).toString());
|
| + Expect.equals('.',
|
| + new Path('..').relativeTo(new Path('..')).toString());
|
| + Expect.equals('./',
|
| + new Path('a/b/f/../c/').relativeTo(new Path('a/e/../b/c')).toString());
|
| + Expect.equals('d',
|
| + new Path('a/b/f/../c/d').relativeTo(new Path('a/e/../b/c')).toString());
|
| + Expect.equals('..',
|
| + new Path('a/b/f/../c').relativeTo(new Path('a/e/../b/c/e/')).toString());
|
| + Expect.equals('../..',
|
| + new Path('').relativeTo(new Path('a/b/')).toString());
|
| + Expect.equals('../../..',
|
| + new Path('..').relativeTo(new Path('a/b')).toString());
|
| + Expect.equals('../b/c/d/',
|
| + new Path('b/c/d/').relativeTo(new Path('a/')).toString());
|
| +
|
| // Should always throw - no relative path can be constructed.
|
| Expect.throws(() =>
|
| new Path('a/b').relativeTo(new Path('../../d')));
|
| + // Should always throw - relative and absolute paths are compared.
|
| + Expect.throws(() =>
|
| + new Path('/a/b').relativeTo(new Path('c/d')));
|
| +
|
| + Expect.throws(() =>
|
| + new Path('a/b').relativeTo(new Path('/a/b')));
|
| +
|
| }
|
|
|
| -// Test that Windows share information is maintain through
|
| +// Test that Windows share information is maintained through
|
| // Path operations.
|
| void testWindowsShare() {
|
| // Windows share information only makes sense on Windows.
|
|
|