| Index: tests/standalone/io/parent_test.dart | 
| diff --git a/tests/standalone/io/parent_test.dart b/tests/standalone/io/parent_test.dart | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..fc687e3b9fb487b92890cc550045538356522d75 | 
| --- /dev/null | 
| +++ b/tests/standalone/io/parent_test.dart | 
| @@ -0,0 +1,127 @@ | 
| +// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 
| +// 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. | 
| +// | 
| +// Dart test program for testing file I/O. | 
| + | 
| +import 'dart:async'; | 
| +import 'dart:convert'; | 
| +import 'dart:collection'; | 
| +import 'dart:io'; | 
| + | 
| +import "package:async_helper/async_helper.dart"; | 
| +import "package:expect/expect.dart"; | 
| +import "package:path/path.dart"; | 
| + | 
| +String tempDirectory; | 
| + | 
| +void main() { | 
| +  if (Platform.isWindows) { | 
| +    testWindowsCases(); | 
| +  } else { | 
| +    testPosixCases(); | 
| +  } | 
| +  asyncStart(); | 
| +  createTempDirectories() | 
| +    .then(testObjects) | 
| +    .whenComplete(() { | 
| +      asyncEnd(); | 
| +      new Directory(tempDirectory).delete(recursive: true); | 
| +    }); | 
| +} | 
| + | 
| +testPosixCases() { | 
| +  Expect.equals('/dir', FileSystemEntity.parentOf('/dir/file')); | 
| +  Expect.equals('/dir', FileSystemEntity.parentOf('/dir/file/')); | 
| +  Expect.equals('/dir', FileSystemEntity.parentOf('/dir//file//')); | 
| +  Expect.equals('/', FileSystemEntity.parentOf('/dir')); | 
| +  Expect.equals('/', FileSystemEntity.parentOf('/dir///')); | 
| +  Expect.equals('/', FileSystemEntity.parentOf('/')); | 
| + | 
| +  Expect.equals('.', FileSystemEntity.parentOf('file')); | 
| +  Expect.equals('.', FileSystemEntity.parentOf('file//')); | 
| +  Expect.equals('.', FileSystemEntity.parentOf('')); | 
| +  Expect.equals('.', FileSystemEntity.parentOf('..')); | 
| +  Expect.equals('.', FileSystemEntity.parentOf('.')); | 
| +  Expect.equals('.', FileSystemEntity.parentOf('')); | 
| +  Expect.equals('/', FileSystemEntity.parentOf('/')); | 
| +  Expect.equals('/', FileSystemEntity.parentOf('//')); | 
| +  Expect.equals('/', FileSystemEntity.parentOf('//file///')); | 
| +  Expect.equals('dir', FileSystemEntity.parentOf('dir/file')); | 
| +  Expect.equals('dir', FileSystemEntity.parentOf('dir/file/')); | 
| +  Expect.equals('dir', FileSystemEntity.parentOf('dir/file//')); | 
| +  Expect.equals('dir/subdir', FileSystemEntity.parentOf('dir/subdir/file')); | 
| +  Expect.equals('dir//subdir', FileSystemEntity.parentOf('dir//subdir//file/')); | 
| +  Expect.equals('dir/sub.dir', | 
| +                FileSystemEntity.parentOf('dir/sub.dir/fi le///')); | 
| +  Expect.equals('dir/..', FileSystemEntity.parentOf('dir/../file/')); | 
| +  Expect.equals('dir/..', FileSystemEntity.parentOf('dir/../..')); | 
| +  Expect.equals('.', FileSystemEntity.parentOf('./..')); | 
| +  Expect.equals('..', FileSystemEntity.parentOf('../.')); | 
| +} | 
| + | 
| +testWindowsCases() { | 
| +  Expect.equals(r'C:/dir', FileSystemEntity.parentOf(r'C:/dir/file')); | 
| +  Expect.equals(r'C:/dir', FileSystemEntity.parentOf(r'C:/dir/file/')); | 
| +  Expect.equals(r'C:\dir', FileSystemEntity.parentOf(r'C:\dir\file')); | 
| +  Expect.equals(r'C:\dir', FileSystemEntity.parentOf(r'C:\dir\file\')); | 
| +  Expect.equals(r'C:\dir', FileSystemEntity.parentOf(r'C:\dir\\file\\')); | 
| +  Expect.equals(r'C:\', FileSystemEntity.parentOf(r'C:\dir')); | 
| +  Expect.equals(r'C:\', FileSystemEntity.parentOf(r'C:\dir\/\')); | 
| +  Expect.equals(r'C:\', FileSystemEntity.parentOf(r'C:\')); | 
| +  // FileSystemEntity.isAbsolute returns false for 'C:'. | 
| +  Expect.equals(r'.', FileSystemEntity.parentOf(r'C:')); | 
| + | 
| +  Expect.equals(r'\\server\share\dir', | 
| +                FileSystemEntity.parentOf(r'\\server\share\dir\file')); | 
| +  Expect.equals(r'\\server\share\dir', | 
| +                FileSystemEntity.parentOf(r'\\server\share\dir\file\')); | 
| +  Expect.equals(r'\\server\share', | 
| +                FileSystemEntity.parentOf(r'\\server\share\file')); | 
| +  Expect.equals(r'\\server\', | 
| +                FileSystemEntity.parentOf(r'\\server\share')); | 
| +  Expect.equals(r'\\server\', | 
| +                FileSystemEntity.parentOf(r'\\server\share\')); | 
| +  Expect.equals(r'\\server\', | 
| +                FileSystemEntity.parentOf(r'\\server\')); | 
| +  Expect.equals(r'\\server/', | 
| +                FileSystemEntity.parentOf(r'\\server/')); | 
| +  Expect.equals(r'\\serve', | 
| +                FileSystemEntity.parentOf(r'\\serve')); | 
| + | 
| +  Expect.equals(r'.', FileSystemEntity.parentOf(r'file')); | 
| +  Expect.equals(r'.', FileSystemEntity.parentOf(r'')); | 
| +  Expect.equals(r'.', FileSystemEntity.parentOf(r'..')); | 
| +  Expect.equals(r'.', FileSystemEntity.parentOf(r'.')); | 
| +  Expect.equals(r'.', FileSystemEntity.parentOf(r'')); | 
| +  Expect.equals(r'/', FileSystemEntity.parentOf(r'/')); | 
| +  Expect.equals(r'\', FileSystemEntity.parentOf(r'\')); | 
| +  Expect.equals(r'\', FileSystemEntity.parentOf(r'\file\\/')); | 
| +  Expect.equals(r'dir', FileSystemEntity.parentOf(r'dir\file')); | 
| +  Expect.equals(r'dir', FileSystemEntity.parentOf(r'dir\file\')); | 
| +  Expect.equals(r'dir', FileSystemEntity.parentOf(r'dir/file/')); | 
| +  Expect.equals(r'dir\subdir', FileSystemEntity.parentOf(r'dir\subdir\file')); | 
| +  Expect.equals(r'dir\sub.dir', | 
| +                FileSystemEntity.parentOf(r'dir\sub.dir\fi le')); | 
| +} | 
| + | 
| +Future createTempDirectories() { | 
| +  return Directory.systemTemp.createTemp('dart_parent_').then((dir) { | 
| +    tempDirectory = dir.path; | 
| +  }).then((_) => new File(join(tempDirectory, 'file1')).create()) | 
| +  .then((_) => new Link(join(tempDirectory, 'link1')).create('.')) | 
| +  .then((_) => new Directory(join(tempDirectory, 'dir1')).create()); | 
| +} | 
| + | 
| +testObjects(var ignored) { | 
| +  ['file1', 'link1', 'dir1', 'file2', 'link2', 'dir2'].map(testPath); | 
| +} | 
| + | 
| +testPath(String path) { | 
| +  Expect.equals(tempDirectory, | 
| +                new File(join(tempDirectory, path)).parent.path); | 
| +  Expect.equals(tempDirectory, | 
| +                new Link(join(tempDirectory, path)).parent.path); | 
| +  Expect.equals(tempDirectory, | 
| +                new Directory(join(tempDirectory, path)).parent.path); | 
| +} | 
|  |