blob: cb42e28bbeec3eae16b0b6968f63e93c22b5947b [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());
}