// 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. library uri.examples; // Examples from the Uri class documentation. // Get an error if the documentation starts to be wrong. // REMEMBER TO UPDATE BOTH. import "package:expect/expect.dart"; import 'dart:convert'; main() { // Uri.http test("http://example.org/path?q=dart", new Uri.http("example.org", "/path", {"q": "dart"})); test("http://user:pass@localhost:8080", new Uri.http("user:pass@localhost:8080", "")); test("http://example.org/a%20b", new Uri.http("example.org", "a b")); test("http://example.org/a%252F", new Uri.http("example.org", "/a%2F")); // Uri.file test("xxx/yyy", new Uri.file("xxx/yyy", windows: false)); test("xxx/yyy/", new Uri.file("xxx/yyy/", windows: false)); test("file:///xxx/yyy", new Uri.file("/xxx/yyy", windows: false)); test("file:///xxx/yyy/", new Uri.file("/xxx/yyy/", windows: false)); test("C%3A", new Uri.file("C:", windows: false)); test("xxx/yyy", new Uri.file(r"xxx\yyy", windows: true)); test("xxx/yyy/", new Uri.file(r"xxx\yyy\", windows: true)); test("file:///xxx/yyy", new Uri.file(r"\xxx\yyy", windows: true)); test("file:///xxx/yyy/", new Uri.file(r"\xxx\yyy/", windows: true)); test("file:///C:/xxx/yyy", new Uri.file(r"C:\xxx\yyy", windows: true)); test("file://server/share/file", new Uri.file(r"\\server\share\file", windows: true)); Expect.throws(() => new Uri.file(r"C:", windows: true)); Expect.throws(() => new Uri.file(r"C:xxx\yyy", windows: true)); // isScheme. var uri = Uri.parse("http://example.com/"); Expect.isTrue(uri.isScheme("HTTP")); // toFilePath. Expect.equals(r"xxx/yyy", Uri.parse("xxx/yyy").toFilePath(windows: false)); Expect.equals(r"xxx/yyy/", Uri.parse("xxx/yyy/").toFilePath(windows: false)); Expect.equals( r"/xxx/yyy", Uri.parse("file:///xxx/yyy").toFilePath(windows: false)); Expect.equals( r"/xxx/yyy/", Uri.parse("file:///xxx/yyy/").toFilePath(windows: false)); Expect.equals(r"/C:", Uri.parse("file:///C:").toFilePath(windows: false)); Expect.equals(r"/C:a", Uri.parse("file:///C:a").toFilePath(windows: false)); Expect.equals(r"xxx\yyy", Uri.parse("xxx/yyy").toFilePath(windows: true)); Expect.equals(r"xxx\yyy\", Uri.parse("xxx/yyy/").toFilePath(windows: true)); Expect.equals( r"\xxx\yyy", Uri.parse("file:///xxx/yyy").toFilePath(windows: true)); Expect.equals( r"\xxx\yyy\", Uri.parse("file:///xxx/yyy/").toFilePath(windows: true)); Expect.equals( r"C:\xxx\yyy", Uri.parse("file:///C:/xxx/yyy").toFilePath(windows: true)); Expect.throws(() => Uri.parse("file:C:xxx/yyy").toFilePath(windows: true)); Expect.equals(r"\\server\share\file", Uri.parse("file://server/share/file").toFilePath(windows: true)); // // replace. Uri uri1 = Uri.parse("a://b@c:4/d/e?f#g"); Uri uri2 = uri1.replace(scheme: "A", path: "D/E/E", fragment: "G"); Expect.equals("a://b@c:4/D/E/E?f#G", "$uri2"); Uri uri3 = new Uri( scheme: "A", userInfo: uri1.userInfo, host: uri1.host, port: uri1.port, path: "D/E/E", query: uri1.query, fragment: "G"); Expect.equals("a://b@c:4/D/E/E?f#G", "$uri3"); Expect.equals(uri2, uri3); // UriData.mimeType var data = UriData.parse("data:text/plain;charset=utf-8,Hello%20World!"); Expect.equals("text/plain", data.mimeType); Expect.equals("utf-8", data.charset); // Uri.parseIPv6Address - shouldn't throw. Uri.parseIPv6Address("::1"); Uri.parseIPv6Address("FEDC:BA98:7654:3210:FEDC:BA98:7654:3210"); Uri.parseIPv6Address("3ffe:2a00:100:7031::1"); Uri.parseIPv6Address("::FFFF:129.144.52.38"); Uri.parseIPv6Address("2010:836B:4179::836B:4179"); } test(String result, Uri value) { Expect.equals(Uri.parse(result), value); Expect.equals(result, value.toString()); }