Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(849)

Side by Side Diff: utils/tests/pub/path/path_windows_test.dart

Issue 11553005: Move path-manipulation code from io.dart into path.dart. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library path_test; 5 library path_test;
6 6
7 import 'dart:io' as io; 7 import 'dart:io' as io;
8 8
9 import '../../../../pkg/unittest/lib/unittest.dart'; 9 import '../../../../pkg/unittest/lib/unittest.dart';
10 import '../../../pub/path.dart' as path; 10 import '../../../pub/path.dart' as path;
(...skipping 17 matching lines...) Expand all
28 test('extension', () { 28 test('extension', () {
29 expect(builder.extension(''), ''); 29 expect(builder.extension(''), '');
30 expect(builder.extension('foo.dart'), '.dart'); 30 expect(builder.extension('foo.dart'), '.dart');
31 expect(builder.extension('foo.dart.js'), '.js'); 31 expect(builder.extension('foo.dart.js'), '.js');
32 expect(builder.extension(r'a.b\c'), ''); 32 expect(builder.extension(r'a.b\c'), '');
33 expect(builder.extension('a.b/c.d'), '.d'); 33 expect(builder.extension('a.b/c.d'), '.d');
34 expect(builder.extension(r'~\.bashrc'), ''); 34 expect(builder.extension(r'~\.bashrc'), '');
35 expect(builder.extension(r'a.b/c'), r''); 35 expect(builder.extension(r'a.b/c'), r'');
36 }); 36 });
37 37
38 test('rootOf', () {
39 expect(builder.rootOf(''), null);
40 expect(builder.rootOf('a'), null);
41 expect(builder.rootOf(r'a\b'), null);
42 expect(builder.rootOf(r'C:\a\c'), 'C:\\');
Bob Nystrom 2012/12/12 00:01:20 Can you use raw strings for these? Here and below.
nweiz 2012/12/12 00:50:37 It screws with my editor to have a string ending w
Bob Nystrom 2012/12/12 01:02:13 It screws up my editor too (I need to fix the subl
nweiz 2012/12/12 02:45:57 Done.
43 expect(builder.rootOf('C:\\'), 'C:\\');
44 expect(builder.rootOf('C:/'), 'C:/');
45
46 // TODO(nweiz): enable this once issue 7323 is fixed.
47 // expect(builder.rootOf(r'\\server\a\b'), '\\\\server\\');
48 });
49
50 test('dirname', () {
51 expect(builder.dirname(r''), '.');
52 expect(builder.dirname(r'a'), '.');
53 expect(builder.dirname(r'a\b'), 'a');
54 expect(builder.dirname(r'a\b\c'), r'a\b');
55 expect(builder.dirname(r'a\b.c'), 'a');
56 expect(builder.dirname('a\\'), 'a');
57 expect(builder.dirname('a/'), 'a');
58 expect(builder.dirname(r'a\.'), 'a');
59 expect(builder.dirname(r'a\b/c'), r'a\b');
60 });
61
38 test('basename', () { 62 test('basename', () {
39 expect(builder.basename(r''), ''); 63 expect(builder.basename(r''), '');
40 expect(builder.basename(r'a'), 'a'); 64 expect(builder.basename(r'a'), 'a');
41 expect(builder.basename(r'a\b'), 'b'); 65 expect(builder.basename(r'a\b'), 'b');
42 expect(builder.basename(r'a\b\c'), 'c'); 66 expect(builder.basename(r'a\b\c'), 'c');
43 expect(builder.basename(r'a\b.c'), 'b.c'); 67 expect(builder.basename(r'a\b.c'), 'b.c');
44 expect(builder.basename(r'a\'), ''); 68 expect(builder.basename(r'a\'), '');
45 expect(builder.basename(r'a/'), ''); 69 expect(builder.basename(r'a/'), '');
46 expect(builder.basename(r'a\.'), '.'); 70 expect(builder.basename(r'a\.'), '.');
47 expect(builder.basename(r'a\b/c'), r'c'); 71 expect(builder.basename(r'a\b/c'), r'c');
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 expect(builder.join('a/', 'b'), r'a/b'); 140 expect(builder.join('a/', 'b'), r'a/b');
117 expect(builder.join('a', '/b'), 'a/b'); 141 expect(builder.join('a', '/b'), 'a/b');
118 expect(builder.join('a', r'\b'), r'a\b'); 142 expect(builder.join('a', r'\b'), r'a\b');
119 }); 143 });
120 144
121 test('ignores parts before an absolute path', () { 145 test('ignores parts before an absolute path', () {
122 expect(builder.join('a', '/b', '/c', 'd'), r'a/b/c\d'); 146 expect(builder.join('a', '/b', '/c', 'd'), r'a/b/c\d');
123 expect(builder.join('a', r'c:\b', 'c', 'd'), r'c:\b\c\d'); 147 expect(builder.join('a', r'c:\b', 'c', 'd'), r'c:\b\c\d');
124 expect(builder.join('a', r'\\b', r'\\c', 'd'), r'\\c\d'); 148 expect(builder.join('a', r'\\b', r'\\c', 'd'), r'\\c\d');
125 }); 149 });
150
151 test('ignores trailing nulls', () {
152 expect(builder.join('a', null), equals('a'));
153 expect(builder.join('a', 'b', 'c', null, null), equals(r'a\b\c'));
154 });
155
156 test('disallows intermediate nulls', () {
157 expect(() => builder.join('a', null, 'b'), throwsArgumentError);
158 expect(() => builder.join(null, 'a'), throwsArgumentError);
159 });
160 });
161
162 group('split', () {
163 test('simple cases', () {
164 expect(builder.split('foo'), equals(['foo']));
165 expect(builder.split(r'foo\bar'), equals(['foo', 'bar']));
166 expect(builder.split(r'foo\bar\baz'), equals(['foo', 'bar', 'baz']));
167 expect(builder.split(r'foo\..\bar\.\baz'),
168 equals(['foo', '..', 'bar', '.', 'baz']));
169 expect(builder.split(r'foo\\bar\\\baz'), equals(['foo', 'bar', 'baz']));
170 expect(builder.split(r'foo\/\baz'), equals(['foo', 'baz']));
171 });
172
173 test('includes the root for absolute paths', () {
174 expect(builder.split(r'C:\foo\bar\baz'), equals(['C:\\', 'foo', 'bar', 'ba z']));
Bob Nystrom 2012/12/12 00:01:20 Long line.
nweiz 2012/12/12 00:50:37 Done.
175 expect(builder.split(r'C:\\'), equals(['C:\\']));
176
177 // TODO(nweiz): enable these once issue 7323 is fixed.
178 // expect(builder.split(r'\\server\foo\bar\baz'),
179 // equals(['\\\\server\\', 'foo', 'bar', 'baz']));
180 // expect(builder.split('\\\\server\\'), equals(['\\\\server\\']));
181 });
126 }); 182 });
127 183
128 group('normalize', () { 184 group('normalize', () {
129 test('simple cases', () { 185 test('simple cases', () {
130 expect(builder.normalize(''), ''); 186 expect(builder.normalize(''), '');
131 expect(builder.normalize('.'), '.'); 187 expect(builder.normalize('.'), '.');
132 expect(builder.normalize('..'), '..'); 188 expect(builder.normalize('..'), '..');
133 expect(builder.normalize('a'), 'a'); 189 expect(builder.normalize('a'), 'a');
134 expect(builder.normalize('C:/'), r'C:/'); 190 expect(builder.normalize('C:/'), r'C:/');
135 expect(builder.normalize(r'C:\'), r'C:\'); 191 expect(builder.normalize(r'C:\'), r'C:\');
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 expect(r.relative(r'..\a/b.txt'), r'..\a\b.txt'); 308 expect(r.relative(r'..\a/b.txt'), r'..\a\b.txt');
253 expect(r.relative(r'a\./b\../c.txt'), r'a\c.txt'); 309 expect(r.relative(r'a\./b\../c.txt'), r'a\c.txt');
254 }); 310 });
255 }); 311 });
256 312
257 test('from a root with extension', () { 313 test('from a root with extension', () {
258 var r = new path.Builder(style: path.Style.windows, root: r'C:\dir.ext'); 314 var r = new path.Builder(style: path.Style.windows, root: r'C:\dir.ext');
259 expect(r.relative(r'C:\dir.ext\file'), 'file'); 315 expect(r.relative(r'C:\dir.ext\file'), 'file');
260 }); 316 });
261 317
318 test('with a root parameter', () {
319 expect(builder.relative(r'C:\foo\bar\baz', to: r'C:\foo\bar'), equals('baz '));
Bob Nystrom 2012/12/12 00:01:20 Long line.
nweiz 2012/12/12 00:50:37 Done.
320 });
321
262 test('given absolute with different root prefix', () { 322 test('given absolute with different root prefix', () {
263 expect(builder.relative(r'D:\a\b'), r'D:\a\b'); 323 expect(builder.relative(r'D:\a\b'), r'D:\a\b');
264 expect(builder.relative(r'\\a\b'), r'\\a\b'); 324 expect(builder.relative(r'\\a\b'), r'\\a\b');
265 }); 325 });
266 }); 326 });
267 327
268 group('resolve', () { 328 group('resolve', () {
269 test('allows up to seven parts', () { 329 test('allows up to seven parts', () {
270 expect(builder.resolve('a'), r'C:\root\path\a'); 330 expect(builder.resolve('a'), r'C:\root\path\a');
271 expect(builder.resolve('a', 'b'), r'C:\root\path\a\b'); 331 expect(builder.resolve('a', 'b'), r'C:\root\path\a\b');
(...skipping 30 matching lines...) Expand all
302 expect(builder.withoutExtension(r'a\b\'), r'a\b\'); 362 expect(builder.withoutExtension(r'a\b\'), r'a\b\');
303 expect(builder.withoutExtension(r'a\.'), r'a\.'); 363 expect(builder.withoutExtension(r'a\.'), r'a\.');
304 expect(builder.withoutExtension(r'a\.b'), r'a\.b'); 364 expect(builder.withoutExtension(r'a\.b'), r'a\.b');
305 expect(builder.withoutExtension(r'a.b\c'), r'a.b\c'); 365 expect(builder.withoutExtension(r'a.b\c'), r'a.b\c');
306 expect(builder.withoutExtension(r'a/b.c/d'), r'a/b.c/d'); 366 expect(builder.withoutExtension(r'a/b.c/d'), r'a/b.c/d');
307 expect(builder.withoutExtension(r'a\b/c'), r'a\b/c'); 367 expect(builder.withoutExtension(r'a\b/c'), r'a\b/c');
308 expect(builder.withoutExtension(r'a\b/c.d'), r'a\b/c'); 368 expect(builder.withoutExtension(r'a\b/c.d'), r'a\b/c');
309 expect(builder.withoutExtension(r'a.b/c'), r'a.b/c'); 369 expect(builder.withoutExtension(r'a.b/c'), r'a.b/c');
310 }); 370 });
311 } 371 }
OLDNEW
« utils/tests/pub/path/path_posix_test.dart ('K') | « utils/tests/pub/path/path_posix_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698