blob: bcbc894a42b9e1129fcae64c46c8d5d4599f0103 [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 normalizePath()
* Returns a URI where the path has been normalized.
*
* A normalized path does not contain . segments or non-leading .. segments.
* Only a relative path with no scheme or authority may contain leading ..
* segments, a path that starts with / will also drop any leading .. segments.
*
* This uses the same normalization strategy as new Uri().resolve(this).
*
* Does not change any part of the URI except the path.
*
* The default implementation of Uri always normalizes paths, so calling this
* function has no effect.
* @description Check that calling of this function has no effect
* @author sgrekhov@unipro.ru
*/
import "../../../Utils/expect.dart";
main() {
var url = Uri.parse('scheme://user:pass@host/path/');
Expect.equals(url, url.normalizePath());
url = Uri.parse('../path/');
Expect.equals(url, url.normalizePath());
url = Uri.parse('../path/./../a/b.c/');
Expect.equals(url, url.normalizePath());
url = Uri.parse('../path/./../a/b.c/ .. /');
Expect.equals(url, url.normalizePath());
}