// 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 Uri parse(String uri, [int start = 0, int end])
 * Creates a new Uri object by parsing a URI string.
 *
 * If start and end are provided, only the substring from start to end is parsed
 * as a URI.
 *
 * If the string is not valid as a URI or URI reference, a FormatException is
 * thrown.
 * @description Checks that components of well-formed URI match
 * appropriate regexp match groups.
 * RFC-3986 The following line is the regular expression for
 * breaking-down a well-formed URI reference into its components.
 *   ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
 *    12            3  4          5       6  7        8 9
 * scheme    = $2
 * authority = $4
 * path      = $5
 * query     = $7
 * fragment  = $9
 * @author ilya
 */
import "../../../Utils/expect.dart";

var r = new RegExp(r'^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?');

main() {
  var s = 'scheme://user:pass@foo.bar-baz:123/A/V/file-name.ext?query#fragment';
  var uri = Uri.parse(s);
  var match = r.firstMatch(s);
  if (match != null) {
    Expect.equals(match[2], uri.scheme);
    Expect.equals(match[4], uri.authority);
    Expect.equals(match[5], uri.path);
    Expect.equals(match[7], uri.query);
    Expect.equals(match[9], uri.fragment);
  } else {
    Expect.fail("match is null");
  }
}
