| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import "package:expect/expect.dart"; | 5 import "package:expect/expect.dart"; |
| 6 | 6 |
| 7 main() { | 7 main() { |
| 8 testSplitString(); | 8 testSplitString(); |
| 9 testSplitRegExp(); | 9 testSplitRegExp(); |
| 10 testSplitPattern(); | 10 testSplitPattern(); |
| 11 } | 11 } |
| 12 | 12 |
| 13 | |
| 14 testSplit(List expect, String string, Pattern pattern) { | 13 testSplit(List expect, String string, Pattern pattern) { |
| 15 String patternString; | 14 String patternString; |
| 16 if (pattern is String) { | 15 if (pattern is String) { |
| 17 patternString = '"$pattern"'; | 16 patternString = '"$pattern"'; |
| 18 } else if (pattern is RegExp) { | 17 } else if (pattern is RegExp) { |
| 19 patternString = "/${pattern.pattern}/"; | 18 patternString = "/${pattern.pattern}/"; |
| 20 } else { | 19 } else { |
| 21 patternString = pattern.toString(); | 20 patternString = pattern.toString(); |
| 22 } | 21 } |
| 23 Expect.listEquals(expect, string.split(pattern), | 22 Expect.listEquals( |
| 24 '"$string".split($patternString)'); | 23 expect, string.split(pattern), '"$string".split($patternString)'); |
| 25 } | 24 } |
| 26 | 25 |
| 27 /** String patterns. */ | 26 /** String patterns. */ |
| 28 void testSplitString() { | 27 void testSplitString() { |
| 29 // Normal match. | 28 // Normal match. |
| 30 testSplit(["a", "b", "c"], "a b c", " "); | 29 testSplit(["a", "b", "c"], "a b c", " "); |
| 31 testSplit(["a", "b", "c"], "adbdc", "d"); | 30 testSplit(["a", "b", "c"], "adbdc", "d"); |
| 32 testSplit(["a", "b", "c"], "addbddc", "dd"); | 31 testSplit(["a", "b", "c"], "addbddc", "dd"); |
| 33 // No match. | 32 // No match. |
| 34 testSplit(["abc"], "abc", " "); | 33 testSplit(["abc"], "abc", " "); |
| 35 testSplit(["a"], "a", "b"); | 34 testSplit(["a"], "a", "b"); |
| 36 testSplit([""], "", "b"); | 35 testSplit([""], "", "b"); |
| 37 // Empty match matches everywhere except start/end. | 36 // Empty match matches everywhere except start/end. |
| 38 testSplit(["a", "b", "c"], "abc", ""); | 37 testSplit(["a", "b", "c"], "abc", ""); |
| 39 // All empty parts. | 38 // All empty parts. |
| 40 testSplit(["", "", "", "", ""], "aaaa", "a"); | 39 testSplit(["", "", "", "", ""], "aaaa", "a"); |
| 41 testSplit(["", "", "", "", ""], " ", " "); | 40 testSplit(["", "", "", "", ""], " ", " "); |
| 42 testSplit(["", ""], "a", "a"); | 41 testSplit(["", ""], "a", "a"); |
| 43 // No overlapping matches. Match as early as possible. | 42 // No overlapping matches. Match as early as possible. |
| 44 testSplit(["", "", "", "a"], "aaaaaaa", "aa"); | 43 testSplit(["", "", "", "a"], "aaaaaaa", "aa"); |
| 45 // Cannot split the empty string. | 44 // Cannot split the empty string. |
| 46 testSplit([], "", ""); // Match. | 45 testSplit([], "", ""); // Match. |
| 47 testSplit([""], "", "a"); // No match. | 46 testSplit([""], "", "a"); // No match. |
| 48 } | 47 } |
| 49 | 48 |
| 50 /** RegExp patterns. */ | 49 /** RegExp patterns. */ |
| 51 void testSplitRegExp() { | 50 void testSplitRegExp() { |
| 52 testSplitWithRegExp((s) => new RegExp(s)); | 51 testSplitWithRegExp((s) => new RegExp(s)); |
| 53 } | 52 } |
| 54 | 53 |
| 55 /** Non-String, non-RegExp patterns. */ | 54 /** Non-String, non-RegExp patterns. */ |
| 56 void testSplitPattern() { | 55 void testSplitPattern() { |
| 57 testSplitWithRegExp((s) => new RegExpWrap(s)); | 56 testSplitWithRegExp((s) => new RegExpWrap(s)); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 final regexp; | 126 final regexp; |
| 128 RegExpWrap(String source) : regexp = new RegExp(source); | 127 RegExpWrap(String source) : regexp = new RegExp(source); |
| 129 Iterable<Match> allMatches(String string, [int start = 0]) => | 128 Iterable<Match> allMatches(String string, [int start = 0]) => |
| 130 regexp.allMatches(string, start); | 129 regexp.allMatches(string, start); |
| 131 | 130 |
| 132 Match matchAsPrefix(String string, [int start = 0]) => | 131 Match matchAsPrefix(String string, [int start = 0]) => |
| 133 regexp.matchAsPrefix(string, start); | 132 regexp.matchAsPrefix(string, start); |
| 134 | 133 |
| 135 String toString() => "Wrap(/${regexp.pattern}/)"; | 134 String toString() => "Wrap(/${regexp.pattern}/)"; |
| 136 } | 135 } |
| OLD | NEW |