| Index: test/codegen/corelib/string_pattern_test.dart
|
| diff --git a/test/codegen/corelib/string_pattern_test.dart b/test/codegen/corelib/string_pattern_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4229617ff1a7551f3c34dc3db6772e5aa25c75a9
|
| --- /dev/null
|
| +++ b/test/codegen/corelib/string_pattern_test.dart
|
| @@ -0,0 +1,112 @@
|
| +// 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.
|
| +// Dart test for testing String.allMatches.
|
| +
|
| +import "package:expect/expect.dart";
|
| +
|
| +String str = "this is a string with hello here and hello there";
|
| +
|
| +main() {
|
| + testNoMatch();
|
| + testOneMatch();
|
| + testTwoMatches();
|
| + testEmptyPattern();
|
| + testEmptyString();
|
| + testEmptyPatternAndString();
|
| + testMatchAsPrefix();
|
| + testAllMatchesStart();
|
| +}
|
| +
|
| +testNoMatch() {
|
| + // Also tests that RegExp groups don't work.
|
| + String helloPattern = "with (hello)";
|
| + Iterable<Match> matches = helloPattern.allMatches(str);
|
| + Expect.isFalse(matches.iterator.moveNext());
|
| +}
|
| +
|
| +testOneMatch() {
|
| + String helloPattern = "with hello";
|
| + Iterable<Match> matches = helloPattern.allMatches(str);
|
| + var iterator = matches.iterator;
|
| + Expect.isTrue(iterator.moveNext());
|
| + Match match = iterator.current;
|
| + Expect.isFalse(iterator.moveNext());
|
| + Expect.equals(str.indexOf('with', 0), match.start);
|
| + Expect.equals(str.indexOf('with', 0) + helloPattern.length, match.end);
|
| + Expect.equals(helloPattern, match.pattern);
|
| + Expect.equals(str, match.input);
|
| + Expect.equals(helloPattern, match[0]);
|
| + Expect.equals(0, match.groupCount);
|
| +}
|
| +
|
| +testTwoMatches() {
|
| + String helloPattern = "hello";
|
| + Iterable<Match> matches = helloPattern.allMatches(str);
|
| +
|
| + int count = 0;
|
| + int start = 0;
|
| + for (var match in matches) {
|
| + count++;
|
| + Expect.equals(str.indexOf('hello', start), match.start);
|
| + Expect.equals(
|
| + str.indexOf('hello', start) + helloPattern.length, match.end);
|
| + Expect.equals(helloPattern, match.pattern);
|
| + Expect.equals(str, match.input);
|
| + Expect.equals(helloPattern, match[0]);
|
| + Expect.equals(0, match.groupCount);
|
| + start = match.end;
|
| + }
|
| + Expect.equals(2, count);
|
| +}
|
| +
|
| +testEmptyPattern() {
|
| + String pattern = "";
|
| + Iterable<Match> matches = pattern.allMatches(str);
|
| + Expect.isTrue(matches.iterator.moveNext());
|
| +}
|
| +
|
| +testEmptyString() {
|
| + String pattern = "foo";
|
| + String str = "";
|
| + Iterable<Match> matches = pattern.allMatches(str);
|
| + Expect.isFalse(matches.iterator.moveNext());
|
| +}
|
| +
|
| +testEmptyPatternAndString() {
|
| + String pattern = "";
|
| + String str = "";
|
| + Iterable<Match> matches = pattern.allMatches(str);
|
| + Expect.isTrue(matches.iterator.moveNext());
|
| +}
|
| +
|
| +testMatchAsPrefix() {
|
| + String pattern = "an";
|
| + String str = "banana";
|
| + Expect.isNull(pattern.matchAsPrefix(str));
|
| + Expect.isNull(pattern.matchAsPrefix(str, 0));
|
| + var m = pattern.matchAsPrefix(str, 1);
|
| + Expect.equals("an", m[0]);
|
| + Expect.equals(1, m.start);
|
| + Expect.isNull(pattern.matchAsPrefix(str, 2));
|
| + m = pattern.matchAsPrefix(str, 3);
|
| + Expect.equals("an", m[0]);
|
| + Expect.equals(3, m.start);
|
| + Expect.isNull(pattern.matchAsPrefix(str, 4));
|
| + Expect.isNull(pattern.matchAsPrefix(str, 5));
|
| + Expect.isNull(pattern.matchAsPrefix(str, 6));
|
| + Expect.throws(() => pattern.matchAsPrefix(str, -1));
|
| + Expect.throws(() => pattern.matchAsPrefix(str, 7));
|
| +}
|
| +
|
| +testAllMatchesStart() {
|
| + String p = "ass";
|
| + String s = "assassin";
|
| + Expect.equals(2, p.allMatches(s).length);
|
| + Expect.equals(2, p.allMatches(s, 0).length);
|
| + Expect.equals(1, p.allMatches(s, 1).length);
|
| + Expect.equals(0, p.allMatches(s, 4).length);
|
| + Expect.equals(0, p.allMatches(s, s.length).length);
|
| + Expect.throws(() => p.allMatches(s, -1));
|
| + Expect.throws(() => p.allMatches(s, s.length + 1));
|
| +}
|
|
|