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

Side by Side Diff: pkg/path/test/url_test.dart

Issue 19231002: Port dart:io Path tests to package:path. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Add comment to relative(path, from: from) Created 7 years, 5 months 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
« no previous file with comments | « pkg/path/test/relative_test.dart ('k') | pkg/path/test/windows_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 import 'package:unittest/unittest.dart'; 5 import 'package:unittest/unittest.dart';
6 import 'package:path/path.dart' as path; 6 import 'package:path/path.dart' as path;
7 7
8 main() { 8 main() {
9 var builder = new path.Builder(style: path.Style.url, 9 var builder = new path.Builder(style: path.Style.url,
10 root: 'http://dartlang.org/root/path'); 10 root: 'http://dartlang.org/root/path');
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 expect(builder.basename('http://dartlang.org/'), 'http://dartlang.org'); 82 expect(builder.basename('http://dartlang.org/'), 'http://dartlang.org');
83 expect(builder.basename('http://dartlang.org'), 'http://dartlang.org'); 83 expect(builder.basename('http://dartlang.org'), 'http://dartlang.org');
84 expect(builder.basename('file:///'), 'file://'); 84 expect(builder.basename('file:///'), 'file://');
85 expect(builder.basename('file://'), 'file://'); 85 expect(builder.basename('file://'), 'file://');
86 expect(builder.basename('/'), '/'); 86 expect(builder.basename('/'), '/');
87 expect(builder.basename('a/b/'), 'b'); 87 expect(builder.basename('a/b/'), 'b');
88 expect(builder.basename(r'a/b\c'), r'b\c'); 88 expect(builder.basename(r'a/b\c'), r'b\c');
89 expect(builder.basename('a//'), 'a'); 89 expect(builder.basename('a//'), 'a');
90 expect(builder.basename('a/b//'), 'b'); 90 expect(builder.basename('a/b//'), 'b');
91 expect(builder.basename('a//b'), 'b'); 91 expect(builder.basename('a//b'), 'b');
92 expect(builder.basename('a b/c d.e f'), 'c d.e f');
92 }); 93 });
93 94
94 test('basenameWithoutExtension', () { 95 test('basenameWithoutExtension', () {
95 expect(builder.basenameWithoutExtension(''), ''); 96 expect(builder.basenameWithoutExtension(''), '');
97 expect(builder.basenameWithoutExtension('.'), '.');
98 expect(builder.basenameWithoutExtension('..'), '..');
96 expect(builder.basenameWithoutExtension('a'), 'a'); 99 expect(builder.basenameWithoutExtension('a'), 'a');
97 expect(builder.basenameWithoutExtension('a/b'), 'b'); 100 expect(builder.basenameWithoutExtension('a/b'), 'b');
98 expect(builder.basenameWithoutExtension('a/b/c'), 'c'); 101 expect(builder.basenameWithoutExtension('a/b/c'), 'c');
99 expect(builder.basenameWithoutExtension('a/b.c'), 'b'); 102 expect(builder.basenameWithoutExtension('a/b.c'), 'b');
100 expect(builder.basenameWithoutExtension('a/'), 'a'); 103 expect(builder.basenameWithoutExtension('a/'), 'a');
101 expect(builder.basenameWithoutExtension('a/.'), '.'); 104 expect(builder.basenameWithoutExtension('a/.'), '.');
102 expect(builder.basenameWithoutExtension(r'a/b\c'), r'b\c'); 105 expect(builder.basenameWithoutExtension(r'a/b\c'), r'b\c');
103 expect(builder.basenameWithoutExtension('a/.bashrc'), '.bashrc'); 106 expect(builder.basenameWithoutExtension('a/.bashrc'), '.bashrc');
104 expect(builder.basenameWithoutExtension('a/b/c.d.e'), 'c.d'); 107 expect(builder.basenameWithoutExtension('a/b/c.d.e'), 'c.d');
105 expect(builder.basenameWithoutExtension('a//'), 'a'); 108 expect(builder.basenameWithoutExtension('a//'), 'a');
106 expect(builder.basenameWithoutExtension('a/b//'), 'b'); 109 expect(builder.basenameWithoutExtension('a/b//'), 'b');
107 expect(builder.basenameWithoutExtension('a//b'), 'b'); 110 expect(builder.basenameWithoutExtension('a//b'), 'b');
108 expect(builder.basenameWithoutExtension('a/b.c/'), 'b'); 111 expect(builder.basenameWithoutExtension('a/b.c/'), 'b');
109 expect(builder.basenameWithoutExtension('a/b.c//'), 'b'); 112 expect(builder.basenameWithoutExtension('a/b.c//'), 'b');
113 expect(builder.basenameWithoutExtension('a/b c.d e.f g'), 'b c.d e');
110 }); 114 });
111 115
112 test('isAbsolute', () { 116 test('isAbsolute', () {
113 expect(builder.isAbsolute(''), false); 117 expect(builder.isAbsolute(''), false);
114 expect(builder.isAbsolute('a'), false); 118 expect(builder.isAbsolute('a'), false);
115 expect(builder.isAbsolute('a/b'), false); 119 expect(builder.isAbsolute('a/b'), false);
116 expect(builder.isAbsolute('http://dartlang.org/a'), true); 120 expect(builder.isAbsolute('http://dartlang.org/a'), true);
117 expect(builder.isAbsolute('file:///a'), true); 121 expect(builder.isAbsolute('file:///a'), true);
118 expect(builder.isAbsolute('/a'), true); 122 expect(builder.isAbsolute('/a'), true);
119 expect(builder.isAbsolute('http://dartlang.org/a/b'), true); 123 expect(builder.isAbsolute('http://dartlang.org/a/b'), true);
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 expect(builder.join('', ''), ''); 232 expect(builder.join('', ''), '');
229 expect(builder.join('', 'a'), 'a'); 233 expect(builder.join('', 'a'), 'a');
230 expect(builder.join('a', '', 'b', '', '', '', 'c'), 'a/b/c'); 234 expect(builder.join('a', '', 'b', '', '', '', 'c'), 'a/b/c');
231 expect(builder.join('a', 'b', ''), 'a/b'); 235 expect(builder.join('a', 'b', ''), 'a/b');
232 }); 236 });
233 237
234 test('disallows intermediate nulls', () { 238 test('disallows intermediate nulls', () {
235 expect(() => builder.join('a', null, 'b'), throwsArgumentError); 239 expect(() => builder.join('a', null, 'b'), throwsArgumentError);
236 expect(() => builder.join(null, 'a'), throwsArgumentError); 240 expect(() => builder.join(null, 'a'), throwsArgumentError);
237 }); 241 });
242
243 test('Join does not modify internal ., .., or trailing separators', () {
244 expect(builder.join('a/', 'b/c/'), 'a/b/c/');
245 expect(builder.join('a/b/./c/..//', 'd/.././..//e/f//'),
246 'a/b/./c/..//d/.././..//e/f//');
247 expect(builder.join('a/b', 'c/../../../..'), 'a/b/c/../../../..');
248 expect(builder.join('a', 'b${builder.separator}'), 'a/b/');
249 });
238 }); 250 });
239 251
240 group('joinAll', () { 252 group('joinAll', () {
241 test('allows more than eight parts', () { 253 test('allows more than eight parts', () {
242 expect(builder.joinAll(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']), 254 expect(builder.joinAll(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']),
243 'a/b/c/d/e/f/g/h/i'); 255 'a/b/c/d/e/f/g/h/i');
244 }); 256 });
245 257
246 test('ignores parts before an absolute path', () { 258 test('ignores parts before an absolute path', () {
247 expect(builder.joinAll(['a', 'http://dartlang.org', 'b', 'c']), 259 expect(builder.joinAll(['a', 'http://dartlang.org', 'b', 'c']),
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 expect(builder.split('http://dartlang.org'), 310 expect(builder.split('http://dartlang.org'),
299 equals(['http://dartlang.org'])); 311 equals(['http://dartlang.org']));
300 expect(builder.split('file:///'), equals(['file://'])); 312 expect(builder.split('file:///'), equals(['file://']));
301 expect(builder.split('file://'), equals(['file://'])); 313 expect(builder.split('file://'), equals(['file://']));
302 expect(builder.split('/'), equals(['/'])); 314 expect(builder.split('/'), equals(['/']));
303 }); 315 });
304 }); 316 });
305 317
306 group('normalize', () { 318 group('normalize', () {
307 test('simple cases', () { 319 test('simple cases', () {
308 expect(builder.normalize(''), ''); 320 expect(builder.normalize(''), '.');
309 expect(builder.normalize('.'), '.'); 321 expect(builder.normalize('.'), '.');
310 expect(builder.normalize('..'), '..'); 322 expect(builder.normalize('..'), '..');
311 expect(builder.normalize('a'), 'a'); 323 expect(builder.normalize('a'), 'a');
312 expect(builder.normalize('http://dartlang.org/'), 'http://dartlang.org'); 324 expect(builder.normalize('http://dartlang.org/'), 'http://dartlang.org');
313 expect(builder.normalize('http://dartlang.org'), 'http://dartlang.org'); 325 expect(builder.normalize('http://dartlang.org'), 'http://dartlang.org');
314 expect(builder.normalize('file://'), 'file://'); 326 expect(builder.normalize('file://'), 'file://');
315 expect(builder.normalize('file:///'), 'file://'); 327 expect(builder.normalize('file:///'), 'file://');
316 expect(builder.normalize('/'), '/'); 328 expect(builder.normalize('/'), '/');
317 expect(builder.normalize(r'\'), r'\'); 329 expect(builder.normalize(r'\'), r'\');
330 expect(builder.normalize('C:/'), 'C:');
331 expect(builder.normalize(r'C:\'), r'C:\');
332 expect(builder.normalize(r'\\'), r'\\');
333 expect(builder.normalize('a/./\xc5\u0bf8-;\u{1f085}\u{00}/c/d/../'),
334 'a/\xc5\u0bf8-;\u{1f085}\u{00}/c');
318 }); 335 });
319 336
320 test('collapses redundant separators', () { 337 test('collapses redundant separators', () {
321 expect(builder.normalize(r'a/b/c'), r'a/b/c'); 338 expect(builder.normalize(r'a/b/c'), r'a/b/c');
322 expect(builder.normalize(r'a//b///c////d'), r'a/b/c/d'); 339 expect(builder.normalize(r'a//b///c////d'), r'a/b/c/d');
323 }); 340 });
324 341
325 test('does not collapse separators for other platform', () { 342 test('does not collapse separators for other platform', () {
326 expect(builder.normalize(r'a\\b\\\c'), r'a\\b\\\c'); 343 expect(builder.normalize(r'a\\b\\\c'), r'a\\b\\\c');
327 }); 344 });
(...skipping 25 matching lines...) Expand all
353 expect(builder.normalize('file:///..'), 'file://'); 370 expect(builder.normalize('file:///..'), 'file://');
354 expect(builder.normalize('/..'), '/'); 371 expect(builder.normalize('/..'), '/');
355 expect(builder.normalize('http://dartlang.org/../../..'), 372 expect(builder.normalize('http://dartlang.org/../../..'),
356 'http://dartlang.org'); 373 'http://dartlang.org');
357 expect(builder.normalize('file:///../../..'), 'file://'); 374 expect(builder.normalize('file:///../../..'), 'file://');
358 expect(builder.normalize('/../../..'), '/'); 375 expect(builder.normalize('/../../..'), '/');
359 expect(builder.normalize('http://dartlang.org/../../../a'), 376 expect(builder.normalize('http://dartlang.org/../../../a'),
360 'http://dartlang.org/a'); 377 'http://dartlang.org/a');
361 expect(builder.normalize('file:///../../../a'), 'file:///a'); 378 expect(builder.normalize('file:///../../../a'), 'file:///a');
362 expect(builder.normalize('/../../../a'), '/a'); 379 expect(builder.normalize('/../../../a'), '/a');
380 expect(builder.normalize('c:/..'), '.');
381 expect(builder.normalize('A:/../../..'), '../..');
363 expect(builder.normalize('a/..'), '.'); 382 expect(builder.normalize('a/..'), '.');
364 expect(builder.normalize('a/b/..'), 'a'); 383 expect(builder.normalize('a/b/..'), 'a');
365 expect(builder.normalize('a/../b'), 'b'); 384 expect(builder.normalize('a/../b'), 'b');
366 expect(builder.normalize('a/./../b'), 'b'); 385 expect(builder.normalize('a/./../b'), 'b');
367 expect(builder.normalize('a/b/c/../../d/e/..'), 'a/d'); 386 expect(builder.normalize('a/b/c/../../d/e/..'), 'a/d');
368 expect(builder.normalize('a/b/../../../../c'), '../../c'); 387 expect(builder.normalize('a/b/../../../../c'), '../../c');
388 expect(builder.normalize('z/a/b/../../..\../c'), 'z/..\../c');
389 expect(builder.normalize('a/b\c/../d'), 'a/d');
369 }); 390 });
370 391
371 test('does not walk before root on absolute paths', () { 392 test('does not walk before root on absolute paths', () {
372 expect(builder.normalize('..'), '..'); 393 expect(builder.normalize('..'), '..');
373 expect(builder.normalize('../'), '..'); 394 expect(builder.normalize('../'), '..');
374 expect(builder.normalize('http://dartlang.org/..'), 395 expect(builder.normalize('http://dartlang.org/..'),
375 'http://dartlang.org'); 396 'http://dartlang.org');
397 expect(builder.normalize('http://dartlang.org/../a'),
398 'http://dartlang.org/a');
376 expect(builder.normalize('file:///..'), 'file://'); 399 expect(builder.normalize('file:///..'), 'file://');
400 expect(builder.normalize('file:///../a'), 'file:///a');
377 expect(builder.normalize('/..'), '/'); 401 expect(builder.normalize('/..'), '/');
378 expect(builder.normalize('a/..'), '.'); 402 expect(builder.normalize('a/..'), '.');
403 expect(builder.normalize('../a'), '../a');
404 expect(builder.normalize('/../a'), '/a');
405 expect(builder.normalize('c:/../a'), 'a');
406 expect(builder.normalize('/../a'), '/a');
379 expect(builder.normalize('a/b/..'), 'a'); 407 expect(builder.normalize('a/b/..'), 'a');
408 expect(builder.normalize('../a/b/..'), '../a');
380 expect(builder.normalize('a/../b'), 'b'); 409 expect(builder.normalize('a/../b'), 'b');
381 expect(builder.normalize('a/./../b'), 'b'); 410 expect(builder.normalize('a/./../b'), 'b');
382 expect(builder.normalize('a/b/c/../../d/e/..'), 'a/d'); 411 expect(builder.normalize('a/b/c/../../d/e/..'), 'a/d');
383 expect(builder.normalize('a/b/../../../../c'), '../../c'); 412 expect(builder.normalize('a/b/../../../../c'), '../../c');
413 expect(builder.normalize('a/b/c/../../..d/./.e/f././'), 'a/..d/.e/f.');
384 }); 414 });
385 415
386 test('removes trailing separators', () { 416 test('removes trailing separators', () {
387 expect(builder.normalize('./'), '.'); 417 expect(builder.normalize('./'), '.');
388 expect(builder.normalize('.//'), '.'); 418 expect(builder.normalize('.//'), '.');
389 expect(builder.normalize('a/'), 'a'); 419 expect(builder.normalize('a/'), 'a');
390 expect(builder.normalize('a/b/'), 'a/b'); 420 expect(builder.normalize('a/b/'), 'a/b');
421 expect(builder.normalize(r'a/b\'), r'a/b\');
391 expect(builder.normalize('a/b///'), 'a/b'); 422 expect(builder.normalize('a/b///'), 'a/b');
392 }); 423 });
393 }); 424 });
394 425
395 group('relative', () { 426 group('relative', () {
396 group('from absolute root', () { 427 group('from absolute root', () {
397 test('given absolute path in root', () { 428 test('given absolute path in root', () {
398 expect(builder.relative('http://dartlang.org'), '../..'); 429 expect(builder.relative('http://dartlang.org'), '../..');
399 expect(builder.relative('http://dartlang.org/'), '../..'); 430 expect(builder.relative('http://dartlang.org/'), '../..');
400 expect(builder.relative('/'), '../..'); 431 expect(builder.relative('/'), '../..');
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
652 Uri.parse('http://dartlang.org/path/to/foo')); 683 Uri.parse('http://dartlang.org/path/to/foo'));
653 expect(builder.toUri('http://dartlang.org/path/to/foo/'), 684 expect(builder.toUri('http://dartlang.org/path/to/foo/'),
654 Uri.parse('http://dartlang.org/path/to/foo/')); 685 Uri.parse('http://dartlang.org/path/to/foo/'));
655 expect(builder.toUri('file:///path/to/foo'), 686 expect(builder.toUri('file:///path/to/foo'),
656 Uri.parse('file:///path/to/foo')); 687 Uri.parse('file:///path/to/foo'));
657 expect(builder.toUri('foo/bar'), Uri.parse('foo/bar')); 688 expect(builder.toUri('foo/bar'), Uri.parse('foo/bar'));
658 expect(builder.toUri('http://dartlang.org/path/to/foo%23bar'), 689 expect(builder.toUri('http://dartlang.org/path/to/foo%23bar'),
659 Uri.parse('http://dartlang.org/path/to/foo%23bar')); 690 Uri.parse('http://dartlang.org/path/to/foo%23bar'));
660 }); 691 });
661 } 692 }
OLDNEW
« no previous file with comments | « pkg/path/test/relative_test.dart ('k') | pkg/path/test/windows_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698