// Copyright (c) 2011, 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 final String scheme
 * Returns the scheme component.
 * Returns the empty string if there is no scheme component.
 * @description Checks empty and non empty scheme settings
 * @author ilya
 */
import "../../../Utils/expect.dart";

main() {
  Expect.equals('https', new Uri.https('host', 'path').scheme);
  Expect.equals('http', Uri.parse('http://host/path').scheme);

  Expect.equals('', Uri.parse('../path').scheme);
  Expect.equals('', Uri.parse('www.host/path').scheme);
}
