// 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 Throws RangeError if [group] is out of bounds
 * @description Checks that exception is thrown.
 * @author rodionov
 * @reviewer msyabro
 */
import "../../../Utils/expect.dart";
 
void check(String str, String pattern, int index) {
  RegExp re = new RegExp(pattern, multiLine: false, caseSensitive: true);
  Match? m = re.firstMatch(str);
  Expect.throws(() { m?[index]; }, (e) => e is RangeError);
}
 
main() {
  check("a", "a", 1);
  check("a", "(a)", 2);
  check("abcdef", "(([a-z])*)", 3);
  check("abcdef", "(([a-z])*)", 65536);
  check("abcdef", "(([a-z])*)", -1);
  check("abcdef", "(([a-z])*)", -65536);
}
