// 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 bool hasEmptyPath
/// Returns whether the URI has an empty path.
/// @description Checks that this property returns true if the URI has an empty
/// path.
/// @author sgrekhov@unipro.ru

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

main() {
  var uri = new Uri(path: "index.dart");
  Expect.isFalse(uri.hasEmptyPath);
  
  uri = new Uri(port: 123);
  Expect.isTrue(uri.hasEmptyPath);
  
  uri = new Uri(path: "/index.dart");
  Expect.isFalse(uri.hasEmptyPath);

  uri = new Uri(path: "/");
  Expect.isFalse(uri.hasEmptyPath);

  uri = new Uri(path: "");
  Expect.isTrue(uri.hasEmptyPath);

  uri = Uri.parse("foo:bar");
  Expect.isFalse(uri.hasEmptyPath);

  uri = Uri.parse("foo:/");
  Expect.isFalse(uri.hasEmptyPath);

  uri = Uri.parse("foo: ");
  Expect.isFalse(uri.hasEmptyPath);

  uri = Uri.parse("foo: /");
  Expect.isFalse(uri.hasEmptyPath);

  uri = Uri.parse("foo:");
  Expect.isTrue(uri.hasEmptyPath);
}
