9614a603bb
Can be used to implement startsWith (and endsWith with a loop). R=floitsch@google.com Review URL: https://codereview.chromium.org//15709018 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@23897 260f80e4-7a28-3924-810f-c04153c831b5
65 lines
2.1 KiB
Dart
65 lines
2.1 KiB
Dart
// 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 regular expressions in Dart.
|
|
|
|
import "package:expect/expect.dart";
|
|
|
|
void main() {
|
|
RegExp exp = new RegExp(r"(\w+)");
|
|
String str = "Parse my string";
|
|
List<Match> matches = exp.allMatches(str).toList();
|
|
Expect.equals(3, matches.length);
|
|
Expect.equals("Parse", matches[0].group(0));
|
|
Expect.equals("my", matches[1].group(0));
|
|
Expect.equals("string", matches[2].group(0));
|
|
|
|
// Check that allMatches progresses correctly for empty matches, and that
|
|
// it includes the empty match at the end position.
|
|
exp = new RegExp("a?");
|
|
str = "babba";
|
|
Expect.listEquals(["", "a", "", "", "a", ""],
|
|
exp.allMatches(str).map((x)=>x[0]).toList());
|
|
|
|
// Regression test for http://dartbug.com/2980
|
|
exp = new RegExp("^", multiLine: true); // Any zero-length match will work.
|
|
str = "foo\nbar\nbaz";
|
|
Expect.equals(" foo\n bar\n baz", str.replaceAll(exp, " "));
|
|
|
|
exp = new RegExp(r"(\w+)");
|
|
Expect.isNull(exp.matchAsPrefix(" xyz ab"));
|
|
Expect.isNull(exp.matchAsPrefix(" xyz ab", 0));
|
|
|
|
var m = exp.matchAsPrefix(" xyz ab", 1);
|
|
Expect.equals("xyz", m[0]);
|
|
Expect.equals("xyz", m[1]);
|
|
Expect.equals(1, m.groupCount);
|
|
|
|
m = exp.matchAsPrefix(" xyz ab", 2);
|
|
Expect.equals("yz", m[0]);
|
|
Expect.equals("yz", m[1]);
|
|
Expect.equals(1, m.groupCount);
|
|
|
|
m = exp.matchAsPrefix(" xyz ab", 3);
|
|
Expect.equals("z", m[0]);
|
|
Expect.equals("z", m[1]);
|
|
Expect.equals(1, m.groupCount);
|
|
|
|
Expect.isNull(exp.matchAsPrefix(" xyz ab", 4));
|
|
|
|
m = exp.matchAsPrefix(" xyz ab", 5);
|
|
Expect.equals("ab", m[0]);
|
|
Expect.equals("ab", m[1]);
|
|
Expect.equals(1, m.groupCount);
|
|
|
|
m = exp.matchAsPrefix(" xyz ab", 6);
|
|
Expect.equals("b", m[0]);
|
|
Expect.equals("b", m[1]);
|
|
Expect.equals(1, m.groupCount);
|
|
|
|
Expect.isNull(exp.matchAsPrefix(" xyz ab", 7));
|
|
|
|
Expect.throws(() => exp.matchAsPrefix(" xyz ab", -1));
|
|
Expect.throws(() => exp.matchAsPrefix(" xyz ab", 8));
|
|
}
|