// 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 replace({
///  String scheme,
///  String userInfo,
///  String host,
///  int port,
///  String path,
///  Iterable<String> pathSegments,
///  String query,
///  Map<String, dynamic> queryParameters,
///  String fragment
///  })
/// Returns a new Uri based on this one, but with some parts replaced.
/// ...
/// At most one of path and pathSegments must be provided. Likewise, at most one
/// of query and queryParameters must be provided.
/// @description Check that exception is thrown if both path and pathSegments
/// specified
/// @author sgrekhov@unipro.ru

import "../../../Utils/expect.dart";

main() {
  var url = Uri.parse("scheme://user:pass@host/path/?q#fr");
  Expect.throws(() {
    url.replace(path: "replaced1", pathSegments: ["replaced2"]);
  });
  Expect.throws(() {
    url.replace(path: "replaced1", pathSegments: []);
  });
  Expect.throws(() {
    url.replace(path: "", pathSegments: ["replaced2"]);
  });
}
