blob: 7ad471c9f80445bb6f2151ffc7823875255dcd1c [file] [log] [blame]
// Copyright (c) 2017, 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.
/**
* @assertion Uri.directory(String path, {bool windows})
* Like Uri.file except that a non-empty URI path ends in a slash.
* If path is not empty, and it doesn't end in a directory separator, then a
* slash is added to the returned URI's path. In all other cases, the result is
* the same as returned by Uri.file
* @description Checks that forward slash is interpreted as path separator and
* backward slash is not interpreted as path separator for non-Windows
* semantics. Also checks that that returned URI is always ends with a slash
* @issue 28660
* @author sgrekhov@unipro.ru
*/
import "dart:convert";
import "../../../Utils/expect.dart";
import "UriDataEncoder.lib.dart";
check(String path) {
Uri uri = new Uri.directory(path, windows: false);
Expect.equals(path.startsWith("/") ? "file" : "", uri.scheme);
Expect.equals("", uri.userInfo);
Expect.equals("", uri.host);
Expect.equals("", uri.query);
Expect.equals(0, uri.port);
Expect.equals("", uri.fragment);
String expected = Uri.encodeComponent(path);
if (!expected.endsWith("/")) {
expected = expected + "/";
}
Expect.equals(expected, uri.path);
}
main() {
check(r"c:");
check(r"c:\");
check(r"c: ");
check(r"c: \");
}