|
40 | 40 | */
|
41 | 41 | package com.oracle.truffle.regex.tregex.test;
|
42 | 42 |
|
43 |
| -import com.oracle.truffle.regex.charset.Range; |
44 |
| -import com.oracle.truffle.regex.tregex.parser.CaseFoldData; |
45 |
| -import com.oracle.truffle.regex.tregex.parser.flavors.java.JavaFlags; |
46 |
| -import com.oracle.truffle.regex.tregex.string.Encodings; |
47 |
| -import com.oracle.truffle.regex.util.EmptyArrays; |
| 43 | +import java.util.List; |
| 44 | +import java.util.concurrent.ExecutorService; |
| 45 | +import java.util.concurrent.Executors; |
| 46 | +import java.util.regex.Matcher; |
| 47 | +import java.util.regex.Pattern; |
| 48 | +import java.util.regex.PatternSyntaxException; |
| 49 | +import java.util.stream.Stream; |
| 50 | + |
48 | 51 | import org.graalvm.collections.Pair;
|
49 | 52 | import org.graalvm.polyglot.Context;
|
50 | 53 | import org.graalvm.polyglot.PolyglotException;
|
|
53 | 56 | import org.junit.Ignore;
|
54 | 57 | import org.junit.Test;
|
55 | 58 |
|
56 |
| -import java.util.List; |
57 |
| -import java.util.concurrent.ExecutorService; |
58 |
| -import java.util.concurrent.Executors; |
59 |
| -import java.util.regex.Matcher; |
60 |
| -import java.util.regex.Pattern; |
61 |
| -import java.util.regex.PatternSyntaxException; |
62 |
| -import java.util.stream.Stream; |
| 59 | +import com.oracle.truffle.regex.RegexSyntaxException.ErrorCode; |
| 60 | +import com.oracle.truffle.regex.charset.Range; |
| 61 | +import com.oracle.truffle.regex.tregex.parser.CaseFoldData; |
| 62 | +import com.oracle.truffle.regex.tregex.parser.flavors.java.JavaFlags; |
| 63 | +import com.oracle.truffle.regex.tregex.string.Encodings; |
| 64 | +import com.oracle.truffle.regex.util.EmptyArrays; |
63 | 65 |
|
64 | 66 | public class JavaUtilPatternTests extends RegexTestBase {
|
65 | 67 |
|
@@ -163,6 +165,8 @@ public void documentationSummary() {
|
163 | 165 | // Boundary matchers
|
164 | 166 | test("^", 0, "");
|
165 | 167 | test("$", 0, "");
|
| 168 | + test("$", 0, "empty"); |
| 169 | + test("\\Z", 0, "\r\n"); |
166 | 170 | test("\\b", 0, " a", 1);
|
167 | 171 | // test("\\b{g}", 0, "");
|
168 | 172 | test("\\B", 0, "b");
|
@@ -1263,6 +1267,112 @@ public void caseFolding() {
|
1263 | 1267 | });
|
1264 | 1268 | }
|
1265 | 1269 |
|
| 1270 | + @Test |
| 1271 | + public void generatedTests() { |
| 1272 | + /* GENERATED CODE BEGIN - KEEP THIS MARKER FOR AUTOMATIC UPDATES */ |
| 1273 | + |
| 1274 | + // Generated using Java version 24 |
| 1275 | + test("((A|){7,10}?){10,17}", "", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", 0, true, 0, 86, 86, 86, 86, 86); |
| 1276 | + test("(a{1,30}){1,4}", "", "a", 0, true, 0, 1, 0, 1); |
| 1277 | + test("((a|){4,6}){4,6}", "", "aaaaaaa", 0, true, 0, 7, 7, 7, 7, 7); |
| 1278 | + test("((a?){4,6}){4,6}", "", "aaaaaaa", 0, true, 0, 7, 7, 7, 7, 7); |
| 1279 | + test("((|a){4,6}){4,6}", "", "aaaaaaa", 0, true, 0, 0, 0, 0, 0, 0); |
| 1280 | + test("((a??){4,6}){4,6}", "", "aaaaaaa", 0, true, 0, 0, 0, 0, 0, 0); |
| 1281 | + test("((a?){4,6}){4,6}", "", "aaaaaa", 0, true, 0, 6, 6, 6, 6, 6); |
| 1282 | + test("(a|^){100}", "", "a", 0, true, 0, 0, 0, 0); |
| 1283 | + test("(a|^){100}", "", "aa", 0, true, 0, 0, 0, 0); |
| 1284 | + test("(a|^){100}", "", "aa", 1, false); |
| 1285 | + test("(a|^){100}", "", "ab", 1, false); |
| 1286 | + test("(.)\\1{2,}", "", "billiam", 0, false); |
| 1287 | + test("(^_(a{1,2}[:])*a{1,2}[:]a{1,2}([.]a{1,4})?_)+", "", "_a:a:a.aaa_", 0, true, 0, 11, 0, 11, 1, 3, 6, 10); |
| 1288 | + test("(a{2}|())+$", "", "aaaa", 0, true, 0, 4, 4, 4, 4, 4); |
| 1289 | + test("^a(b*)\\1{4,6}?", "", "abbbb", 0, true, 0, 1, 1, 1); |
| 1290 | + test("^a(b*)\\1{4,6}?", "", "abbbbb", 0, true, 0, 6, 1, 2); |
| 1291 | + test("(?<=|$)", "", "a", 0, true, 0, 0); |
| 1292 | + test("(?=ab)a", "", "ab", 0, true, 0, 1); |
| 1293 | + test("(?=()|^)|x", "", "empty", 0, true, 0, 0, 0, 0); |
| 1294 | + test("a(?<=ba)", "", "ba", 0, true, 1, 2); |
| 1295 | + test("(?<=(?=|()))", "", "aa", 0, true, 0, 0, -1, -1); |
| 1296 | + test("\\d\\W", "iv", "4\u017f", 0, true, 0, 2); |
| 1297 | + test("[\u08bc-\ucf3a]", "iv", "\u03b0", 0, false); |
| 1298 | + test("a(?:|()\\1){1,2}", "", "a", 0, true, 0, 1, -1, -1); |
| 1299 | + expectSyntaxError("|(?<\\d\\1)\ub7e4", "", "", getTRegexEncoding(), "error", 0, ErrorCode.InvalidNamedGroup); |
| 1300 | + test("[a-z][a-z\u2028\u2029].|ab(?<=[a-z]w.)", "", "aac", 0, true, 0, 3); |
| 1301 | + test("(animation|animation-name)", "", "animation", 0, true, 0, 9, 0, 9); |
| 1302 | + test("(a|){7,7}b", "", "aaab", 0, true, 0, 4, 3, 3); |
| 1303 | + test("(a|){7,7}?b", "", "aaab", 0, true, 0, 4, 3, 3); |
| 1304 | + test("(|a){7,7}b", "", "aaab", 0, true, 0, 4, 3, 3); |
| 1305 | + test("(|a){7,7}?b", "", "aaab", 0, true, 0, 4, 3, 3); |
| 1306 | + test("(a||b){7,7}c", "", "aaabc", 0, true, 0, 5, 4, 4); |
| 1307 | + test("(a||b){7,7}c", "", "aaac", 0, true, 0, 4, 3, 3); |
| 1308 | + test("(a||b){7,7}c", "", "aaabac", 0, true, 0, 6, 5, 5); |
| 1309 | + test("($|a){7,7}", "", "aaa", 0, true, 0, 3, 3, 3); |
| 1310 | + test("($|a){7,7}?", "", "aaa", 0, true, 0, 3, 3, 3); |
| 1311 | + test("(a|$){7,7}", "", "aaa", 0, true, 0, 3, 3, 3); |
| 1312 | + test("(a|$){7,7}?", "", "aaa", 0, true, 0, 3, 3, 3); |
| 1313 | + test("(a|$|b){7,7}", "", "aaab", 0, true, 0, 4, 4, 4); |
| 1314 | + test("(a|$|b){7,7}", "", "aaa", 0, true, 0, 3, 3, 3); |
| 1315 | + test("(a|$|b){7,7}", "", "aaaba", 0, true, 0, 5, 5, 5); |
| 1316 | + test("((?=a)|a){7,7}b", "", "aaa", 0, false); |
| 1317 | + test("((?=[ab])|a){7,7}b", "", "aaab", 0, true, 0, 4, 3, 3); |
| 1318 | + test("((?<=a)|a){7,7}b", "", "aaab", 0, true, 0, 4, 3, 3); |
| 1319 | + test("a((?<=a)|a){7,7}b", "", "aaab", 0, true, 0, 4, 3, 3); |
| 1320 | + test("(a|){0,7}b", "", "aaab", 0, true, 0, 4, 3, 3); |
| 1321 | + test("(a|){0,7}?b", "", "aaab", 0, true, 0, 4, 2, 3); |
| 1322 | + test("(|a){0,7}b", "", "aaab", 0, true, 0, 4, 3, 3); |
| 1323 | + test("(|a){0,7}?b", "", "aaab", 0, true, 0, 4, 2, 3); |
| 1324 | + test("(a||b){0,7}c", "", "aaabc", 0, true, 0, 5, 4, 4); |
| 1325 | + test("(a||b){0,7}c", "", "aaac", 0, true, 0, 4, 3, 3); |
| 1326 | + test("(a||b){0,7}c", "", "aaabac", 0, true, 0, 6, 5, 5); |
| 1327 | + test("((?=a)|a){0,7}b", "", "aaab", 0, true, 0, 4, 2, 3); |
| 1328 | + test("((?=[ab])|a){0,7}b", "", "aaab", 0, true, 0, 4, 3, 3); |
| 1329 | + test("((?<=a)|a){0,7}b", "", "aaab", 0, true, 0, 4, 3, 3); |
| 1330 | + test("a((?<=a)|a){0,7}b", "", "aaab", 0, true, 0, 4, 3, 3); |
| 1331 | + test("(a*?){11,11}?b", "", "aaaaaaaaaaaaaaaaaaaaaaaaab", 0, true, 0, 26, 10, 25); |
| 1332 | + test("(?:a(b{0,19})c)", "", "abbbbbbbcdebbbbbbbf", 0, true, 0, 9, 1, 8); |
| 1333 | + test("(?:a(b{0,19})c)de", "", "abbbbbbbcdebbbbbbbf", 0, true, 0, 11, 1, 8); |
| 1334 | + test("(?<=a(b{0,19})c)de", "", "abbbbbbbcdebbbbbbbf", 0, true, 9, 11, 1, 8); |
| 1335 | + test("[\ud0d9](?<=\\S)", "", "\ud0d9", 0, true, 0, 1); |
| 1336 | + test("[\ud0d9](?<=\\W)", "", "\ud0d9", 0, true, 0, 1); |
| 1337 | + test("\u0895(?<=\\S)", "", "\u0895", 0, true, 0, 1); |
| 1338 | + test("\u0895(?<=\\W)", "", "\u0895", 0, true, 0, 1); |
| 1339 | + test("[\u8053](?<=\\S)", "", "\u8053", 0, true, 0, 1); |
| 1340 | + test("[\u8053](?<=\\W)", "", "\u8053", 0, true, 0, 1); |
| 1341 | + test("\u0895(?<=\\S)", "", "\u0895", 0, true, 0, 1); |
| 1342 | + test("\u0895(?<=\\W)", "", "\u0895", 0, true, 0, 1); |
| 1343 | + test("\u0895|[\u8053\ud0d9]+(?<=\\S\\W\\S)", "", "\ud0d9\ud0d9\ud0d9\ud0d9", 0, true, 0, 4); |
| 1344 | + test("a|[bc]+(?<=[abc][abcd][abc])", "", "bbbb", 0, true, 0, 4); |
| 1345 | + test("a(b*)*c\\1d", "", "abbbbcbbd", 0, true, 0, 9, 3, 5); |
| 1346 | + test("(|a)||b(?<=cde)|", "", "a", 0, true, 0, 0, 0, 0); |
| 1347 | + test("^(\\1)?\\D*", "s", "empty", 0, true, 0, 5, -1, -1); |
| 1348 | + test("abcd(?<=d|c()d)", "", "_abcd", 0, true, 1, 5, -1, -1); |
| 1349 | + test("\\Dw\u3aa7\\A\\S(?<=\ue3b3|\\A()\\S)", "", "\udad1\udcfaw\u3aa7A\ue3b3", 0, false); |
| 1350 | + test("a(?:c|b(?=()))*", "", "abc", 0, true, 0, 3, 2, 2); |
| 1351 | + test("a(?:c|b(?=(c)))*", "", "abc", 0, true, 0, 3, 2, 3); |
| 1352 | + test("a(?:c|(?<=(a))b)*", "", "abc", 0, true, 0, 3, 0, 1); |
| 1353 | + test("(a||b){15,18}c", "", "ababaabbaaac", 0, true, 0, 12, 11, 11); |
| 1354 | + test("(a||b){15,18}?c", "", "ababaabbaaac", 0, true, 0, 12, 11, 11); |
| 1355 | + test("(?:ab|c|^){103,104}", "", "abcababccabccabababccabcababcccccabcababababccccabcabcabccabcabcccabababccabababcababababccababccabcababcabcabccabababccccabcab", 0, true, 0, 0); |
| 1356 | + test("((?<=a)bec)*d", "", "abecd", 0, true, 1, 5, 1, 4); |
| 1357 | + test("(|(^|\\z){2,77}?)?", "", "empty", 0, true, 0, 0, 0, 0, -1, -1); |
| 1358 | + test("a(|a{15,36}){10,11}", "", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 0, true, 0, 1, 1, 1); |
| 1359 | + test("a(|a{15,36}?){10,11}", "", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 0, true, 0, 1, 1, 1); |
| 1360 | + test("a(|a{15,36}){10,11}$", "", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 0, true, 0, 66, 66, 66); |
| 1361 | + test("a(|a{15,36}?){10,11}b$", "", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab", 0, true, 0, 67, 66, 66); |
| 1362 | + test("(?:a()|b??){22,26}c", "", "aabbbaabaaaaaabaaaac", 0, true, 0, 20, 19, 19); |
| 1363 | + test("b()(a\\1|){4,4}\\2c", "", "baaaac", 0, false); |
| 1364 | + test("a((?=b()|)[a-d])+", "", "abbbcbd", 0, true, 0, 7, 6, 7, 6, 6); |
| 1365 | + test("a(?=b(?<=ab)()|)", "", "ab", 0, true, 0, 1, 2, 2); |
| 1366 | + test("[ab]*?$(?<=[^b][ab][^b])", "", "aaaaaa", 0, true, 0, 6); |
| 1367 | + test("([ab]+){0,5}", "", "bbbba", 0, true, 0, 5, 0, 5); |
| 1368 | + test("[--a]", "v", "empty", 0, false); |
| 1369 | + test("(?:^\\1|$){10,11}bc", "", "aaaaaabc", 0, false); |
| 1370 | + test("a(?:|[0-9]+?a|[0-9a]){11,13}?[ab]", "", "a372a466a109585878b", 0, true, 0, 19); |
| 1371 | + test("\\Z", "", "\r\n", 0, true, 0, 0); |
| 1372 | + |
| 1373 | + /* GENERATED CODE END - KEEP THIS MARKER FOR AUTOMATIC UPDATES */ |
| 1374 | + } |
| 1375 | + |
1266 | 1376 | void test(String pattern, int flags, String input) {
|
1267 | 1377 | test(pattern, flags, input, 0);
|
1268 | 1378 | }
|
|
0 commit comments