// 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 authority
 * Returns the authority component.
 * The authority is formatted from the userInfo, host and port parts.
 * Returns the empty string if there is no authority component.
 * @description Checks expected authority settings
 * @author ilya
 */

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

main() {
  var x = new Uri(userInfo: 'user:pass', host: 'foo', port:123);
  Expect.equals('user:pass@foo:123', x.authority);
  
  x = new Uri(port:123);
  Expect.equals(':123', x.authority);
  
  x = new Uri(userInfo: 'root');
  Expect.equals('root@', x.authority);

  x = Uri.parse('foo:bar');
  Expect.equals('', x.authority);
}

