blob: 7dafba4a81836dd7a07675d7a8dbcea9c5f87b1d [file] [log] [blame]
// 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 Returns the string matched by the given [group]. If [group] is 0,
/// returns the match of the regular expression.
/// @description Checks that correct group is returned.
/// @author rodionov
import "../../../Utils/expect.dart";
void check(String str, String pattern, List<String?> expected,
{bool multiLine: false, bool caseSensitive: true}) {
RegExp re = new RegExp(pattern, multiLine: multiLine,
caseSensitive: caseSensitive);
Match? m = re.firstMatch(str);
Expect.equals(expected.length, (m?.groupCount as int) + 1);
for(int i = 0; i < expected.length; i++) {
Expect.equals(expected[i], m?.group(i));
}
}
main() {
check("ABCDEF", "(([A-Z])*)", ["ABCDEF", "ABCDEF", "F"]);
check("a", r"((((((((a))))))))", ["a","a","a","a","a","a","a","a","a"]);
check("AEKFCD", r"(ab|cd)+|ef", ["CD", "CD"], caseSensitive: false);
check("abc", r"((a)|(ab))((c)|(bc))", ["abc", "a", "a", null, "bc", null, "bc"]);
check("aa", r"(a)(\1)", ["aa", "a", "a"]);
check("a", r"[a-z]", ["a"]);
}