blob: f4f1e4463042ff6277fee24d3c9f2c49aa41f304 [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: \");
}