OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. All rights reserved. | 1 // Copyright (c) 2014, the Dart project authors. All rights reserved. |
2 // Copyright 2012 the V8 project authors. All rights reserved. | 2 // Copyright 2012 the V8 project authors. All rights reserved. |
3 // Redistribution and use in source and binary forms, with or without | 3 // Redistribution and use in source and binary forms, with or without |
4 // modification, are permitted provided that the following conditions are | 4 // modification, are permitted provided that the following conditions are |
5 // met: | 5 // met: |
6 // | 6 // |
7 // * Redistributions of source code must retain the above copyright | 7 // * Redistributions of source code must retain the above copyright |
8 // notice, this list of conditions and the following disclaimer. | 8 // notice, this list of conditions and the following disclaimer. |
9 // * Redistributions in binary form must reproduce the above | 9 // * Redistributions in binary form must reproduce the above |
10 // copyright notice, this list of conditions and the following | 10 // copyright notice, this list of conditions and the following |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 if (m.group(2) != null) return "+"; | 53 if (m.group(2) != null) return "+"; |
54 if (m.group(3) != null) return "="; | 54 if (m.group(3) != null) return "="; |
55 }); | 55 }); |
56 assertEquals("= -. +, or + -. There is - =.", str); | 56 assertEquals("= -. +, or + -. There is - =.", str); |
57 | 57 |
58 // Test multiple alternate captures. | 58 // Test multiple alternate captures. |
59 str = "FOUR LEGS GOOD, TWO LEGS BAD!"; | 59 str = "FOUR LEGS GOOD, TWO LEGS BAD!"; |
60 str = str.replaceAllMapped(new RegExp(r"(FOUR|TWO) LEGS (GOOD|BAD)"), (m) { | 60 str = str.replaceAllMapped(new RegExp(r"(FOUR|TWO) LEGS (GOOD|BAD)"), (m) { |
61 if (m.group(1) == "FOUR") assertTrue(m.group(2) == "GOOD"); | 61 if (m.group(1) == "FOUR") assertTrue(m.group(2) == "GOOD"); |
62 if (m.group(1) == "TWO") assertTrue(m.group(2) == "BAD"); | 62 if (m.group(1) == "TWO") assertTrue(m.group(2) == "BAD"); |
63 return m.group(0).length - 10; | 63 return (m.group(0).length - 10).toString(); |
64 }); | 64 }); |
65 assertEquals("4, 2!", str); | 65 assertEquals("4, 2!", str); |
66 | 66 |
67 // The same tests with UC16. | 67 // The same tests with UC16. |
68 | 68 |
69 //Test that an optional capture is cleared between two matches. | 69 //Test that an optional capture is cleared between two matches. |
70 str = "AB\u1234 \u1234"; | 70 str = "AB\u1234 \u1234"; |
71 str = str.replaceAll(new RegExp(r"(\w)?\u1234"), "c"); | 71 str = str.replaceAll(new RegExp(r"(\w)?\u1234"), "c"); |
72 assertEquals("Ac c", str); | 72 assertEquals("Ac c", str); |
73 | 73 |
(...skipping 15 matching lines...) Expand all Loading... |
89 if (m.group(2) != null) return "+"; | 89 if (m.group(2) != null) return "+"; |
90 if (m.group(3) != null) return "="; | 90 if (m.group(3) != null) return "="; |
91 }); | 91 }); |
92 assertEquals("= -. +, or + -. There is - =.", str); | 92 assertEquals("= -. +, or + -. There is - =.", str); |
93 | 93 |
94 // Test multiple alternate captures. | 94 // Test multiple alternate captures. |
95 str = "FOUR \u817f GOOD, TWO \u817f BAD!"; | 95 str = "FOUR \u817f GOOD, TWO \u817f BAD!"; |
96 str = str.replaceAllMapped(new RegExp(r"(FOUR|TWO) \u817f (GOOD|BAD)"), (m) { | 96 str = str.replaceAllMapped(new RegExp(r"(FOUR|TWO) \u817f (GOOD|BAD)"), (m) { |
97 if (m.group(1) == "FOUR") assertTrue(m.group(2) == "GOOD"); | 97 if (m.group(1) == "FOUR") assertTrue(m.group(2) == "GOOD"); |
98 if (m.group(1) == "TWO") assertTrue(m.group(2) == "BAD"); | 98 if (m.group(1) == "TWO") assertTrue(m.group(2) == "BAD"); |
99 return m.group(0).length - 7; | 99 return (m.group(0).length - 7).toString(); |
100 }); | 100 }); |
101 assertEquals("4, 2!", str); | 101 assertEquals("4, 2!", str); |
102 | 102 |
103 // Test capture that is a real substring. | 103 // Test capture that is a real substring. |
104 str = "Beasts of England, beasts of Ireland"; | 104 str = "Beasts of England, beasts of Ireland"; |
105 str = str.replaceAll(new RegExp(r"(.*)"), '~'); | 105 str = str.replaceAll(new RegExp(r"(.*)"), '~'); |
106 assertEquals("~~", str); | 106 assertEquals("~~", str); |
107 | 107 |
108 // Test zero-length matches that have non-zero-length sub-captures that do not | 108 // Test zero-length matches that have non-zero-length sub-captures that do not |
109 // start at the match start position. | 109 // start at the match start position. |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 var crosscheck = "\x80"; | 175 var crosscheck = "\x80"; |
176 for (var i = 0; i < 12; i++) crosscheck += crosscheck; | 176 for (var i = 0; i < 12; i++) crosscheck += crosscheck; |
177 new RegExp(crosscheck); | 177 new RegExp(crosscheck); |
178 | 178 |
179 var subject = "ascii~only~string~here~"; | 179 var subject = "ascii~only~string~here~"; |
180 var replacement = "\x80"; | 180 var replacement = "\x80"; |
181 var result = subject.replaceAll(new RegExp(r"~"), replacement); | 181 var result = subject.replaceAll(new RegExp(r"~"), replacement); |
182 for (var i = 0; i < 5; i++) result += result; | 182 for (var i = 0; i < 5; i++) result += result; |
183 new RegExp(result); | 183 new RegExp(result); |
184 } | 184 } |
OLD | NEW |