Index: packages/path/test/windows_test.dart |
diff --git a/packages/path/test/windows_test.dart b/packages/path/test/windows_test.dart |
index 717043d1fe75b5ba551ac8b38456cf30b9a335ed..364db34385d9e8446291532518fe0dfebc204e08 100644 |
--- a/packages/path/test/windows_test.dart |
+++ b/packages/path/test/windows_test.dart |
@@ -2,8 +2,6 @@ |
// for details. All rights reserved. Use of this source code is governed by a |
// BSD-style license that can be found in the LICENSE file. |
-library path.test.windows_test; |
- |
import 'package:test/test.dart'; |
import 'package:path/path.dart' as path; |
@@ -332,6 +330,7 @@ main() { |
test('eliminates "." parts', () { |
expect(context.normalize(r'.\'), '.'); |
expect(context.normalize(r'c:\.'), r'c:\'); |
+ expect(context.normalize(r'c:\foo\.'), r'c:\foo'); |
expect(context.normalize(r'B:\.\'), r'B:\'); |
expect(context.normalize(r'\\server\share\.'), r'\\server\share'); |
expect(context.normalize(r'.\.'), '.'); |
@@ -353,6 +352,7 @@ main() { |
expect( |
context.normalize(r'\\server\share\..\../..\a'), r'\\server\share\a'); |
expect(context.normalize(r'c:\..'), r'c:\'); |
+ expect(context.normalize(r'c:\foo\..'), r'c:\'); |
expect(context.normalize(r'A:/..\..\..'), r'A:\'); |
expect(context.normalize(r'b:\..\..\..\a'), r'b:\a'); |
expect(context.normalize(r'b:\r\..\..\..\a\c\.\..'), r'b:\a'); |
@@ -380,6 +380,14 @@ main() { |
test('normalizes separators', () { |
expect(context.normalize(r'a/b\c'), r'a\b\c'); |
}); |
+ |
+ test('when canonicalizing', () { |
+ expect(context.canonicalize('.'), r'c:\root\path'); |
+ expect(context.canonicalize('foo/bar'), r'c:\root\path\foo\bar'); |
+ expect(context.canonicalize('FoO'), r'c:\root\path\foo'); |
+ expect(context.canonicalize('/foo'), r'c:\foo'); |
+ expect(context.canonicalize('D:/foo'), r'd:\foo'); |
+ }); |
}); |
group('relative', () { |
@@ -427,6 +435,12 @@ main() { |
expect(context.relative(r'a\.\b\..\c.txt'), r'a\c.txt'); |
}); |
+ test('is case-insensitive', () { |
+ expect(context.relative(r'c:\'), r'..\..'); |
+ expect(context.relative(r'c:\RoOt'), r'..'); |
+ expect(context.relative(r'c:\rOoT\pAtH\a'), r'a'); |
+ }); |
+ |
// Regression |
test('from root-only path', () { |
expect(context.relative(r'C:\', from: r'C:\'), '.'); |
@@ -569,6 +583,59 @@ main() { |
expect(r.isWithin(r'C:\', r'C:\baz\bang'), isTrue); |
expect(r.isWithin('.', r'C:\baz\bang'), isFalse); |
}); |
+ |
+ test('is case-insensitive', () { |
+ expect(context.isWithin(r'FoO', r'fOo\bar'), isTrue); |
+ expect(context.isWithin(r'C:\', r'c:\foo'), isTrue); |
+ expect(context.isWithin(r'fOo\qux\..\BaR', r'FoO\bAr\baz'), isTrue); |
+ }); |
+ }); |
+ |
+ group('equals and hash', () { |
+ test('simple cases', () { |
+ expectEquals(context, r'foo\bar', r'foo\bar'); |
+ expectNotEquals(context, r'foo\bar', r'foo\bar\baz'); |
+ expectNotEquals(context, r'foo\bar', r'foo'); |
+ expectNotEquals(context, r'foo\bar', r'foo\baz'); |
+ expectEquals(context, r'foo\bar', r'..\path\foo\bar'); |
+ expectEquals(context, r'D:\', r'D:\'); |
+ expectEquals(context, r'C:\', r'..\..'); |
+ expectEquals(context, r'baz', r'C:\root\path\baz'); |
+ }); |
+ |
+ test('complex cases', () { |
+ expectEquals(context, r'foo\.\bar', r'foo\bar'); |
+ expectEquals(context, r'foo\\bar', r'foo\bar'); |
+ expectEquals(context, r'foo\qux\..\bar', r'foo\bar'); |
+ expectNotEquals(context, r'foo\qux\..\bar', r'foo\qux'); |
+ expectNotEquals(context, r'foo\bar', r'foo\bar\baz\..\..'); |
+ expectEquals(context, r'foo\bar', r'foo\bar\\\'); |
+ expectEquals(context, r'foo\.bar', r'foo\.bar'); |
+ expectNotEquals(context, r'foo\.\bar', r'foo\.bar'); |
+ expectEquals(context, r'foo\..bar', r'foo\..bar'); |
+ expectNotEquals(context, r'foo\..\bar', r'foo\..bar'); |
+ expectEquals(context, r'foo\bar', r'foo\bar\baz\..'); |
+ expectEquals(context, r'FoO\bAr', r'foo\bar'); |
+ expectEquals(context, r'foo/\bar', r'foo\/bar'); |
+ expectEquals(context, r'c:\', r'C:\'); |
+ expectEquals(context, r'C:\root', r'..'); |
+ }); |
+ |
+ test('with root-relative paths', () { |
+ expectEquals(context, r'\foo', r'C:\foo'); |
+ expectNotEquals(context, r'\foo', 'http://google.com/foo'); |
+ expectEquals(context, r'C:\root\path\foo\bar', r'foo\bar'); |
+ }); |
+ |
+ test('from a relative root', () { |
+ var r = new path.Context(style: path.Style.windows, current: r'foo\bar'); |
+ expectEquals(r, r'a\b', r'a\b'); |
+ expectNotEquals(r, '.', r'foo\bar'); |
+ expectNotEquals(r, '.', r'..\a\b'); |
+ expectEquals(r, '.', r'..\bar'); |
+ expectEquals(r, r'C:\baz\bang', r'C:\baz\bang'); |
+ expectNotEquals(r, r'baz\bang', r'C:\baz\bang'); |
+ }); |
}); |
group('absolute', () { |
@@ -639,6 +706,7 @@ main() { |
r'\\server\share\path\to\foo#bar'); |
expect(context.fromUri(Uri.parse('_%7B_%7D_%60_%5E_%20_%22_%25_')), |
r'_{_}_`_^_ _"_%_'); |
+ expect(context.fromUri(Uri.parse('/foo')), r'\foo'); |
expect(() => context.fromUri(Uri.parse('http://dartlang.org')), |
throwsArgumentError); |
}); |