| //------------------------------------------------------------------------------------------------------- |
| // Copyright (C) Microsoft. All rights reserved. |
| // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. |
| //------------------------------------------------------------------------------------------------------- |
| |
| /* |
| Below test cases verifies the combination of sticky+multiline flag when used. |
| */ |
| var testCount = 0; |
| function test(re, str, lastIndex, loopCount) |
| { |
| var formattedStr = str.replace('\n', '\\n'); |
| WScript.Echo('********** Test #' + ++testCount + " **********"); |
| |
| re.lastIndex = lastIndex; |
| for(var i = 0; i < loopCount; i++) { |
| WScript.Echo(' *** Iteration#' + (i+1)) |
| WScript.Echo(' var re=' + re); |
| WScript.Echo(' var str=\'' + formattedStr + '\''); |
| WScript.Echo(' re.lastIndex = '+re.lastIndex); |
| WScript.Echo(' Result = ' + re.exec(str)); |
| WScript.Echo(' re.lastIndex = ' + re.lastIndex); |
| } |
| } |
| |
| // no-^, /y |
| test(/b12/y, "b12asd\nb12", 1, 4); |
| test(/b12/y, "ab12asd\nb12", 1, 4); |
| test(/b/y, "ab", 1, 4); |
| test(/abc/y, "abcabcababc", 3, 4); |
| |
| // no-^, /my |
| test(/b12/my, "ab12asd\nb12", 0, 4); |
| test(/b12/my, "ab12asd\nb12", 1, 4); |
| test(/b12/my, "b12asd\nb12", 1, 4); |
| |
| // ^, /y |
| test(/^b12/y, "b12asd\nb12", 1, 4); |
| test(/^b12/y, "ab12asd\nb12", 0, 4); |
| test(/^b12/y, "ab12asd\nb12", 1, 4); |
| test(/^b12/y, "b12b12", 3, 4); |
| test(/a|^b/gy, "baba", 0, 4); |
| |
| // ^, /my |
| test(/^b12/my, "b12asd\nb12", 0, 4); |
| test(/^b12/my, "b12asd\nb12", 1, 4); |
| test(/^b12/my, "b12asd\nb12", 7, 4); |
| test(/^b12/my, "asdsa123asd\nb12", 1, 4); |
| test(/^b12/my, "ab12asd\nb12", 1, 4); |
| test(/^b12/my, "ab12asd\nb12", 0, 4); |
| test(/^b/my, "a\nb", 2, 4); |
| |
| WScript.Echo("abc\ndef\nghi\njkl\nmno\npqr\nstu\nvwx\nyz".match(/^.*\n/myg)); |
| |
| // BOILiteral2 |
| test(/^ba/my, "ba\nba", 0, 4); |
| test(/^ba/my, "ba\nba", 1, 4); |
| |
| // BoundedWordTag |
| test(/\b\w+\b/y, "( ab )", 0, 4); |
| test(/\b\w+\b/y, "( ab )", 2, 4); |
| |
| // SingleCharTag |
| test(/b/my, "ba\nb", 0, 4); |
| test(/b/my, "ba\nb", 1, 4); |
| test(/b/y, "ba\nb", 0, 4); |
| test(/b/y, "ba\nb", 1, 4); |
| test(/b/y, "a\nb", 0, 4); |
| test(/b/my, "a\nb", 0, 4); |
| |
| //LeadingTrailingSpacesTag (already taken care because of trailing ^) |
| var re = /^\s*|\s*$/; |
| test(/^\s*|\s*$/y, " ab", 1, 1); |