blob: 5068021c4f387c3ea48a9087c9eae6d8404d9f38 [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 factory Uri.file(String path, {bool windows})
/// Creates a new file URI from an absolute or relative file path.
/// With non-Windows semantics the slash ("/") is used to separate path
/// segments.
/// @description Checks that forward slash is interpreted as path separator and
/// backward slash is not interpreted as path separator for non-Windows
/// semantics
/// @author sgrekhov@unipro.ru
import "dart:convert";
import "../../../Utils/expect.dart";
import "UriDataEncoder.lib.dart";
check(String path) {
Uri uri = new Uri.file(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);
Expect.equals(encodeString(path, encoding: Encoding.getByName("utf-8")),
uri.path);
}
main() {
check("");
check(" ");
check(" a ");
check(r"a/b");
check(r"a\b");
check(r"/a/b");
check(r"\a\b");
check(r"/a\b");
check(r" a / b ");
check(r" a \ b ");
check(r"/ a / b ");
check(r"\ a \ b ");
check(r" й / ф ");
check(r" й \ ф ");
check(r"/ й / ф ");
check(r"\ й \ ф ");
}