OLD | NEW |
(Empty) | |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. |
| 2 // Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. |
| 3 // |
| 4 // Redistribution and use in source and binary forms, with or without |
| 5 // modification, are permitted provided that the following conditions |
| 6 // are met: |
| 7 // 1. Redistributions of source code must retain the above copyright |
| 8 // notice, this list of conditions and the following disclaimer. |
| 9 // 2. Redistributions in binary form must reproduce the above copyright |
| 10 // notice, this list of conditions and the following disclaimer in the |
| 11 // documentation and/or other materials provided with the distribution. |
| 12 // |
| 13 // THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND AN
Y |
| 14 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| 15 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| 16 // DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR AN
Y |
| 17 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| 18 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| 19 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND O
N |
| 20 // ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 21 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
| 22 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 23 |
| 24 description( |
| 25 "A chunk of our port of PCRE's test suite, adapted to be more applicable to Java
Script." |
| 26 ); |
| 27 |
| 28 var regex0 = /a.b/; |
| 29 var input0 = "acb"; |
| 30 var results = ["acb"]; |
| 31 shouldBe('regex0.exec(input0);', 'results'); |
| 32 var input1 = "a\x7fb"; |
| 33 var results = ["a\u007fb"]; |
| 34 shouldBe('regex0.exec(input1);', 'results'); |
| 35 var input2 = "a\u0100b"; |
| 36 var results = ["a\u0100b"]; |
| 37 shouldBe('regex0.exec(input2);', 'results'); |
| 38 // Failers |
| 39 var input3 = "a\nb"; |
| 40 var results = null; |
| 41 shouldBe('regex0.exec(input3);', 'results'); |
| 42 |
| 43 var regex1 = /a(.{3})b/; |
| 44 var input0 = "a\u4000xyb"; |
| 45 var results = ["a\u4000xyb", "\u4000xy"]; |
| 46 shouldBe('regex1.exec(input0);', 'results'); |
| 47 var input1 = "a\u4000\x7fyb"; |
| 48 var results = ["a\u4000\u007fyb", "\u4000\u007fy"]; |
| 49 shouldBe('regex1.exec(input1);', 'results'); |
| 50 var input2 = "a\u4000\u0100yb"; |
| 51 var results = ["a\u4000\u0100yb", "\u4000\u0100y"]; |
| 52 shouldBe('regex1.exec(input2);', 'results'); |
| 53 // Failers |
| 54 var input3 = "a\u4000b"; |
| 55 var results = null; |
| 56 shouldBe('regex1.exec(input3);', 'results'); |
| 57 var input4 = "ac\ncb"; |
| 58 var results = null; |
| 59 shouldBe('regex1.exec(input4);', 'results'); |
| 60 |
| 61 var regex2 = /a(.*?)(.)/; |
| 62 var input0 = "a\xc0\x88b"; |
| 63 var results = ["a\xc0", "", "\xc0"]; |
| 64 shouldBe('regex2.exec(input0);', 'results'); |
| 65 |
| 66 var regex3 = /a(.*?)(.)/; |
| 67 var input0 = "a\u0100b"; |
| 68 var results = ["a\u0100", "", "\u0100"]; |
| 69 shouldBe('regex3.exec(input0);', 'results'); |
| 70 |
| 71 var regex4 = /a(.*)(.)/; |
| 72 var input0 = "a\xc0\x88b"; |
| 73 var results = ["a\xc0\x88b", "\xc0\x88", "b"]; |
| 74 shouldBe('regex4.exec(input0);', 'results'); |
| 75 |
| 76 var regex5 = /a(.*)(.)/; |
| 77 var input0 = "a\u0100b"; |
| 78 var results = ["a\u0100b", "\u0100", "b"]; |
| 79 shouldBe('regex5.exec(input0);', 'results'); |
| 80 |
| 81 var regex6 = /a(.)(.)/; |
| 82 var input0 = "a\xc0\x92bcd"; |
| 83 var results = ["a\xc0\x92", "\xc0", "\x92"]; |
| 84 shouldBe('regex6.exec(input0);', 'results'); |
| 85 |
| 86 var regex7 = /a(.)(.)/; |
| 87 var input0 = "a\u0240bcd"; |
| 88 var results = ["a\u0240b", "\u0240", "b"]; |
| 89 shouldBe('regex7.exec(input0);', 'results'); |
| 90 |
| 91 var regex8 = /a(.?)(.)/; |
| 92 var input0 = "a\xc0\x92bcd"; |
| 93 var results = ["a\xc0\x92", "\xc0", "\x92"]; |
| 94 shouldBe('regex8.exec(input0);', 'results'); |
| 95 |
| 96 var regex9 = /a(.?)(.)/; |
| 97 var input0 = "a\u0240bcd"; |
| 98 var results = ["a\u0240b", "\u0240", "b"]; |
| 99 shouldBe('regex9.exec(input0);', 'results'); |
| 100 |
| 101 var regex10 = /a(.??)(.)/; |
| 102 var input0 = "a\xc0\x92bcd"; |
| 103 var results = ["a\xc0", "", "\xc0"]; |
| 104 shouldBe('regex10.exec(input0);', 'results'); |
| 105 |
| 106 var regex11 = /a(.??)(.)/; |
| 107 var input0 = "a\u0240bcd"; |
| 108 var results = ["a\u0240", "", "\u0240"]; |
| 109 shouldBe('regex11.exec(input0);', 'results'); |
| 110 |
| 111 var regex12 = /a(.{3})b/; |
| 112 var input0 = "a\u1234xyb"; |
| 113 var results = ["a\u1234xyb", "\u1234xy"]; |
| 114 shouldBe('regex12.exec(input0);', 'results'); |
| 115 var input1 = "a\u1234\u4321yb"; |
| 116 var results = ["a\u1234\u4321yb", "\u1234\u4321y"]; |
| 117 shouldBe('regex12.exec(input1);', 'results'); |
| 118 var input2 = "a\u1234\u4321\u3412b"; |
| 119 var results = ["a\u1234\u4321\u3412b", "\u1234\u4321\u3412"]; |
| 120 shouldBe('regex12.exec(input2);', 'results'); |
| 121 // Failers |
| 122 var input3 = "a\u1234b"; |
| 123 var results = null; |
| 124 shouldBe('regex12.exec(input3);', 'results'); |
| 125 var input4 = "ac\ncb"; |
| 126 var results = null; |
| 127 shouldBe('regex12.exec(input4);', 'results'); |
| 128 |
| 129 var regex13 = /a(.{3,})b/; |
| 130 var input0 = "a\u1234xyb"; |
| 131 var results = ["a\u1234xyb", "\u1234xy"]; |
| 132 shouldBe('regex13.exec(input0);', 'results'); |
| 133 var input1 = "a\u1234\u4321yb"; |
| 134 var results = ["a\u1234\u4321yb", "\u1234\u4321y"]; |
| 135 shouldBe('regex13.exec(input1);', 'results'); |
| 136 var input2 = "a\u1234\u4321\u3412b"; |
| 137 var results = ["a\u1234\u4321\u3412b", "\u1234\u4321\u3412"]; |
| 138 shouldBe('regex13.exec(input2);', 'results'); |
| 139 var input3 = "axxxxbcdefghijb"; |
| 140 var results = ["axxxxbcdefghijb", "xxxxbcdefghij"]; |
| 141 shouldBe('regex13.exec(input3);', 'results'); |
| 142 var input4 = "a\u1234\u4321\u3412\u3421b"; |
| 143 var results = ["a\u1234\u4321\u3412\u3421b", "\u1234\u4321\u3412\u3421"]; |
| 144 shouldBe('regex13.exec(input4);', 'results'); |
| 145 // Failers |
| 146 var input5 = "a\u1234b"; |
| 147 var results = null; |
| 148 shouldBe('regex13.exec(input5);', 'results'); |
| 149 |
| 150 var regex14 = /a(.{3,}?)b/; |
| 151 var input0 = "a\u1234xyb"; |
| 152 var results = ["a\u1234xyb", "\u1234xy"]; |
| 153 shouldBe('regex14.exec(input0);', 'results'); |
| 154 var input1 = "a\u1234\u4321yb"; |
| 155 var results = ["a\u1234\u4321yb", "\u1234\u4321y"]; |
| 156 shouldBe('regex14.exec(input1);', 'results'); |
| 157 var input2 = "a\u1234\u4321\u3412b"; |
| 158 var results = ["a\u1234\u4321\u3412b", "\u1234\u4321\u3412"]; |
| 159 shouldBe('regex14.exec(input2);', 'results'); |
| 160 var input3 = "axxxxbcdefghijb"; |
| 161 var results = ["axxxxb", "xxxx"]; |
| 162 shouldBe('regex14.exec(input3);', 'results'); |
| 163 var input4 = "a\u1234\u4321\u3412\u3421b"; |
| 164 var results = ["a\u1234\u4321\u3412\u3421b", "\u1234\u4321\u3412\u3421"]; |
| 165 shouldBe('regex14.exec(input4);', 'results'); |
| 166 // Failers |
| 167 var input5 = "a\u1234b"; |
| 168 var results = null; |
| 169 shouldBe('regex14.exec(input5);', 'results'); |
| 170 |
| 171 var regex15 = /a(.{3,5})b/; |
| 172 var input0 = "a\u1234xyb"; |
| 173 var results = ["a\u1234xyb", "\u1234xy"]; |
| 174 shouldBe('regex15.exec(input0);', 'results'); |
| 175 var input1 = "a\u1234\u4321yb"; |
| 176 var results = ["a\u1234\u4321yb", "\u1234\u4321y"]; |
| 177 shouldBe('regex15.exec(input1);', 'results'); |
| 178 var input2 = "a\u1234\u4321\u3412b"; |
| 179 var results = ["a\u1234\u4321\u3412b", "\u1234\u4321\u3412"]; |
| 180 shouldBe('regex15.exec(input2);', 'results'); |
| 181 var input3 = "axxxxbcdefghijb"; |
| 182 var results = ["axxxxb", "xxxx"]; |
| 183 shouldBe('regex15.exec(input3);', 'results'); |
| 184 var input4 = "a\u1234\u4321\u3412\u3421b"; |
| 185 var results = ["a\u1234\u4321\u3412\u3421b", "\u1234\u4321\u3412\u3421"]; |
| 186 shouldBe('regex15.exec(input4);', 'results'); |
| 187 var input5 = "axbxxbcdefghijb"; |
| 188 var results = ["axbxxb", "xbxx"]; |
| 189 shouldBe('regex15.exec(input5);', 'results'); |
| 190 var input6 = "axxxxxbcdefghijb"; |
| 191 var results = ["axxxxxb", "xxxxx"]; |
| 192 shouldBe('regex15.exec(input6);', 'results'); |
| 193 // Failers |
| 194 var input7 = "a\u1234b"; |
| 195 var results = null; |
| 196 shouldBe('regex15.exec(input7);', 'results'); |
| 197 var input8 = "axxxxxxbcdefghijb"; |
| 198 var results = null; |
| 199 shouldBe('regex15.exec(input8);', 'results'); |
| 200 |
| 201 var regex16 = /a(.{3,5}?)b/; |
| 202 var input0 = "a\u1234xyb"; |
| 203 var results = ["a\u1234xyb", "\u1234xy"]; |
| 204 shouldBe('regex16.exec(input0);', 'results'); |
| 205 var input1 = "a\u1234\u4321yb"; |
| 206 var results = ["a\u1234\u4321yb", "\u1234\u4321y"]; |
| 207 shouldBe('regex16.exec(input1);', 'results'); |
| 208 var input2 = "a\u1234\u4321\u3412b"; |
| 209 var results = ["a\u1234\u4321\u3412b", "\u1234\u4321\u3412"]; |
| 210 shouldBe('regex16.exec(input2);', 'results'); |
| 211 var input3 = "axxxxbcdefghijb"; |
| 212 var results = ["axxxxb", "xxxx"]; |
| 213 shouldBe('regex16.exec(input3);', 'results'); |
| 214 var input4 = "a\u1234\u4321\u3412\u3421b"; |
| 215 var results = ["a\u1234\u4321\u3412\u3421b", "\u1234\u4321\u3412\u3421"]; |
| 216 shouldBe('regex16.exec(input4);', 'results'); |
| 217 var input5 = "axbxxbcdefghijb"; |
| 218 var results = ["axbxxb", "xbxx"]; |
| 219 shouldBe('regex16.exec(input5);', 'results'); |
| 220 var input6 = "axxxxxbcdefghijb"; |
| 221 var results = ["axxxxxb", "xxxxx"]; |
| 222 shouldBe('regex16.exec(input6);', 'results'); |
| 223 // Failers |
| 224 var input7 = "a\u1234b"; |
| 225 var results = null; |
| 226 shouldBe('regex16.exec(input7);', 'results'); |
| 227 var input8 = "axxxxxxbcdefghijb"; |
| 228 var results = null; |
| 229 shouldBe('regex16.exec(input8);', 'results'); |
| 230 |
| 231 var regex17 = /^[a\u00c0]/; |
| 232 // Failers |
| 233 var input0 = "\u0100"; |
| 234 var results = null; |
| 235 shouldBe('regex17.exec(input0);', 'results'); |
| 236 |
| 237 var regex21 = /(?:\u0100){3}b/; |
| 238 var input0 = "\u0100\u0100\u0100b"; |
| 239 var results = ["\u0100\u0100\u0100b"]; |
| 240 shouldBe('regex21.exec(input0);', 'results'); |
| 241 // Failers |
| 242 var input1 = "\u0100\u0100b"; |
| 243 var results = null; |
| 244 shouldBe('regex21.exec(input1);', 'results'); |
| 245 |
| 246 var regex22 = /\u00ab/; |
| 247 var input0 = "\u00ab"; |
| 248 var results = ["\u00ab"]; |
| 249 shouldBe('regex22.exec(input0);', 'results'); |
| 250 var input1 = "\xc2\xab"; |
| 251 var results = ["\u00ab"]; |
| 252 shouldBe('regex22.exec(input1);', 'results'); |
| 253 // Failers |
| 254 var input2 = "\x00{ab}"; |
| 255 var results = null; |
| 256 shouldBe('regex22.exec(input2);', 'results'); |
| 257 |
| 258 var regex30 = /^[^a]{2}/; |
| 259 var input0 = "\u0100bc"; |
| 260 var results = ["\u0100b"]; |
| 261 shouldBe('regex30.exec(input0);', 'results'); |
| 262 |
| 263 var regex31 = /^[^a]{2,}/; |
| 264 var input0 = "\u0100bcAa"; |
| 265 var results = ["\u0100bcA"]; |
| 266 shouldBe('regex31.exec(input0);', 'results'); |
| 267 |
| 268 var regex32 = /^[^a]{2,}?/; |
| 269 var input0 = "\u0100bca"; |
| 270 var results = ["\u0100b"]; |
| 271 shouldBe('regex32.exec(input0);', 'results'); |
| 272 |
| 273 var regex33 = /^[^a]{2}/i; |
| 274 var input0 = "\u0100bc"; |
| 275 var results = ["\u0100b"]; |
| 276 shouldBe('regex33.exec(input0);', 'results'); |
| 277 |
| 278 var regex34 = /^[^a]{2,}/i; |
| 279 var input0 = "\u0100bcAa"; |
| 280 var results = ["\u0100bc"]; |
| 281 shouldBe('regex34.exec(input0);', 'results'); |
| 282 |
| 283 var regex35 = /^[^a]{2,}?/i; |
| 284 var input0 = "\u0100bca"; |
| 285 var results = ["\u0100b"]; |
| 286 shouldBe('regex35.exec(input0);', 'results'); |
| 287 |
| 288 var regex36 = /\u0100{0,0}/; |
| 289 var input0 = "abcd"; |
| 290 var results = [""]; |
| 291 shouldBe('regex36.exec(input0);', 'results'); |
| 292 |
| 293 var regex37 = /\u0100?/; |
| 294 var input0 = "abcd"; |
| 295 var results = [""]; |
| 296 shouldBe('regex37.exec(input0);', 'results'); |
| 297 var input1 = "\u0100\u0100"; |
| 298 var results = ["\u0100"]; |
| 299 shouldBe('regex37.exec(input1);', 'results'); |
| 300 |
| 301 var regex38 = /\u0100{0,3}/; |
| 302 var input0 = "\u0100\u0100"; |
| 303 var results = ["\u0100\u0100"]; |
| 304 shouldBe('regex38.exec(input0);', 'results'); |
| 305 var input1 = "\u0100\u0100\u0100\u0100"; |
| 306 var results = ["\u0100\u0100\u0100"]; |
| 307 shouldBe('regex38.exec(input1);', 'results'); |
| 308 |
| 309 var regex39 = /\u0100*/; |
| 310 var input0 = "abce"; |
| 311 var results = [""]; |
| 312 shouldBe('regex39.exec(input0);', 'results'); |
| 313 var input1 = "\u0100\u0100\u0100\u0100"; |
| 314 var results = ["\u0100\u0100\u0100\u0100"]; |
| 315 shouldBe('regex39.exec(input1);', 'results'); |
| 316 |
| 317 var regex40 = /\u0100{1,1}/; |
| 318 var input0 = "abcd\u0100\u0100\u0100\u0100"; |
| 319 var results = ["\u0100"]; |
| 320 shouldBe('regex40.exec(input0);', 'results'); |
| 321 |
| 322 var regex41 = /\u0100{1,3}/; |
| 323 var input0 = "abcd\u0100\u0100\u0100\u0100"; |
| 324 var results = ["\u0100\u0100\u0100"]; |
| 325 shouldBe('regex41.exec(input0);', 'results'); |
| 326 |
| 327 var regex42 = /\u0100+/; |
| 328 var input0 = "abcd\u0100\u0100\u0100\u0100"; |
| 329 var results = ["\u0100\u0100\u0100\u0100"]; |
| 330 shouldBe('regex42.exec(input0);', 'results'); |
| 331 |
| 332 var regex43 = /\u0100{3}/; |
| 333 var input0 = "abcd\u0100\u0100\u0100XX"; |
| 334 var results = ["\u0100\u0100\u0100"]; |
| 335 shouldBe('regex43.exec(input0);', 'results'); |
| 336 |
| 337 var regex44 = /\u0100{3,5}/; |
| 338 var input0 = "abcd\u0100\u0100\u0100\u0100\u0100\u0100\u0100XX"; |
| 339 var results = ["\u0100\u0100\u0100\u0100\u0100"]; |
| 340 shouldBe('regex44.exec(input0);', 'results'); |
| 341 |
| 342 var regex45 = /\u0100{3,}/; |
| 343 var input0 = "abcd\u0100\u0100\u0100\u0100\u0100\u0100\u0100XX"; |
| 344 var results = ["\u0100\u0100\u0100\u0100\u0100\u0100\u0100"]; |
| 345 shouldBe('regex45.exec(input0);', 'results'); |
| 346 |
| 347 var regex47 = /\D*/; |
| 348 var input0 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; |
| 349 var results = ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]
; |
| 350 shouldBe('regex47.exec(input0);', 'results'); |
| 351 |
| 352 var regex48 = /\D*/; |
| 353 var input0 = "\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100
\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u
0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u01
00\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100
\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u
0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u01
00\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100
\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u
0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u01
00\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100
\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u
0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u01
00\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100
\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u
0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u01
00\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100
\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100"; |
| 354 var results = ["\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u01
00\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100
\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u
0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u01
00\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100
\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u
0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u01
00\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100
\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u
0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u01
00\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100
\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u
0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u01
00\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100
\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u
0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u01
00\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100"]; |
| 355 shouldBe('regex48.exec(input0);', 'results'); |
| 356 |
| 357 var regex49 = /\D/; |
| 358 var input0 = "1X2"; |
| 359 var results = ["X"]; |
| 360 shouldBe('regex49.exec(input0);', 'results'); |
| 361 var input1 = "1\u01002"; |
| 362 var results = ["\u0100"]; |
| 363 shouldBe('regex49.exec(input1);', 'results'); |
| 364 |
| 365 var regex50 = />\S/; |
| 366 var input0 = "> >X Y"; |
| 367 var results = [">X"]; |
| 368 shouldBe('regex50.exec(input0);', 'results'); |
| 369 var input1 = "> >\u0100 Y"; |
| 370 var results = [">\u0100"]; |
| 371 shouldBe('regex50.exec(input1);', 'results'); |
| 372 |
| 373 var regex51 = /\d/; |
| 374 var input0 = "\u01003"; |
| 375 var results = ["3"]; |
| 376 shouldBe('regex51.exec(input0);', 'results'); |
| 377 |
| 378 var regex52 = /\s/; |
| 379 var input0 = "\u0100 X"; |
| 380 var results = [" "]; |
| 381 shouldBe('regex52.exec(input0);', 'results'); |
| 382 |
| 383 var regex53 = /\D+/; |
| 384 var input0 = "12abcd34"; |
| 385 var results = ["abcd"]; |
| 386 shouldBe('regex53.exec(input0);', 'results'); |
| 387 // Failers |
| 388 var input1 = "1234"; |
| 389 var results = null; |
| 390 shouldBe('regex53.exec(input1);', 'results'); |
| 391 |
| 392 var regex54 = /\D{2,3}/; |
| 393 var input0 = "12abcd34"; |
| 394 var results = ["abc"]; |
| 395 shouldBe('regex54.exec(input0);', 'results'); |
| 396 var input1 = "12ab34"; |
| 397 var results = ["ab"]; |
| 398 shouldBe('regex54.exec(input1);', 'results'); |
| 399 // Failers |
| 400 var input2 = "1234"; |
| 401 var results = null; |
| 402 shouldBe('regex54.exec(input2);', 'results'); |
| 403 var input3 = "12a34"; |
| 404 var results = null; |
| 405 shouldBe('regex54.exec(input3);', 'results'); |
| 406 |
| 407 var regex55 = /\D{2,3}?/; |
| 408 var input0 = "12abcd34"; |
| 409 var results = ["ab"]; |
| 410 shouldBe('regex55.exec(input0);', 'results'); |
| 411 var input1 = "12ab34"; |
| 412 var results = ["ab"]; |
| 413 shouldBe('regex55.exec(input1);', 'results'); |
| 414 // Failers |
| 415 var input2 = "1234"; |
| 416 var results = null; |
| 417 shouldBe('regex55.exec(input2);', 'results'); |
| 418 var input3 = "12a34"; |
| 419 var results = null; |
| 420 shouldBe('regex55.exec(input3);', 'results'); |
| 421 |
| 422 var regex56 = /\d+/; |
| 423 var input0 = "12abcd34"; |
| 424 var results = ["12"]; |
| 425 shouldBe('regex56.exec(input0);', 'results'); |
| 426 |
| 427 var regex57 = /\d{2,3}/; |
| 428 var input0 = "12abcd34"; |
| 429 var results = ["12"]; |
| 430 shouldBe('regex57.exec(input0);', 'results'); |
| 431 var input1 = "1234abcd"; |
| 432 var results = ["123"]; |
| 433 shouldBe('regex57.exec(input1);', 'results'); |
| 434 // Failers |
| 435 var input2 = "1.4"; |
| 436 var results = null; |
| 437 shouldBe('regex57.exec(input2);', 'results'); |
| 438 |
| 439 var regex58 = /\d{2,3}?/; |
| 440 var input0 = "12abcd34"; |
| 441 var results = ["12"]; |
| 442 shouldBe('regex58.exec(input0);', 'results'); |
| 443 var input1 = "1234abcd"; |
| 444 var results = ["12"]; |
| 445 shouldBe('regex58.exec(input1);', 'results'); |
| 446 // Failers |
| 447 var input2 = "1.4"; |
| 448 var results = null; |
| 449 shouldBe('regex58.exec(input2);', 'results'); |
| 450 |
| 451 var regex59 = /\S+/; |
| 452 var input0 = "12abcd34"; |
| 453 var results = ["12abcd34"]; |
| 454 shouldBe('regex59.exec(input0);', 'results'); |
| 455 // Failers |
| 456 var input1 = " "; |
| 457 var results = null; |
| 458 shouldBe('regex59.exec(input1);', 'results'); |
| 459 |
| 460 var regex60 = /\S{2,3}/; |
| 461 var input0 = "12abcd34"; |
| 462 var results = ["12a"]; |
| 463 shouldBe('regex60.exec(input0);', 'results'); |
| 464 var input1 = "1234abcd"; |
| 465 var results = ["123"]; |
| 466 shouldBe('regex60.exec(input1);', 'results'); |
| 467 // Failers |
| 468 var input2 = " "; |
| 469 var results = null; |
| 470 shouldBe('regex60.exec(input2);', 'results'); |
| 471 |
| 472 var regex61 = /\S{2,3}?/; |
| 473 var input0 = "12abcd34"; |
| 474 var results = ["12"]; |
| 475 shouldBe('regex61.exec(input0);', 'results'); |
| 476 var input1 = "1234abcd"; |
| 477 var results = ["12"]; |
| 478 shouldBe('regex61.exec(input1);', 'results'); |
| 479 // Failers |
| 480 var input2 = " "; |
| 481 var results = null; |
| 482 shouldBe('regex61.exec(input2);', 'results'); |
| 483 |
| 484 var regex62 = />\s+</; |
| 485 var input0 = "12> <34"; |
| 486 var results = ["> <"]; |
| 487 shouldBe('regex62.exec(input0);', 'results'); |
| 488 |
| 489 var regex63 = />\s{2,3}</; |
| 490 var input0 = "ab> <cd"; |
| 491 var results = ["> <"]; |
| 492 shouldBe('regex63.exec(input0);', 'results'); |
| 493 var input1 = "ab> <ce"; |
| 494 var results = ["> <"]; |
| 495 shouldBe('regex63.exec(input1);', 'results'); |
| 496 // Failers |
| 497 var input2 = "ab> <cd"; |
| 498 var results = null; |
| 499 shouldBe('regex63.exec(input2);', 'results'); |
| 500 |
| 501 var regex64 = />\s{2,3}?</; |
| 502 var input0 = "ab> <cd"; |
| 503 var results = ["> <"]; |
| 504 shouldBe('regex64.exec(input0);', 'results'); |
| 505 var input1 = "ab> <ce"; |
| 506 var results = ["> <"]; |
| 507 shouldBe('regex64.exec(input1);', 'results'); |
| 508 // Failers |
| 509 var input2 = "ab> <cd"; |
| 510 var results = null; |
| 511 shouldBe('regex64.exec(input2);', 'results'); |
| 512 |
| 513 var regex65 = /\w+/; |
| 514 var input0 = "12 34"; |
| 515 var results = ["12"]; |
| 516 shouldBe('regex65.exec(input0);', 'results'); |
| 517 // Failers |
| 518 var input1 = "+++=*!"; |
| 519 var results = null; |
| 520 shouldBe('regex65.exec(input1);', 'results'); |
| 521 |
| 522 var regex66 = /\w{2,3}/; |
| 523 var input0 = "ab cd"; |
| 524 var results = ["ab"]; |
| 525 shouldBe('regex66.exec(input0);', 'results'); |
| 526 var input1 = "abcd ce"; |
| 527 var results = ["abc"]; |
| 528 shouldBe('regex66.exec(input1);', 'results'); |
| 529 // Failers |
| 530 var input2 = "a.b.c"; |
| 531 var results = null; |
| 532 shouldBe('regex66.exec(input2);', 'results'); |
| 533 |
| 534 var regex67 = /\w{2,3}?/; |
| 535 var input0 = "ab cd"; |
| 536 var results = ["ab"]; |
| 537 shouldBe('regex67.exec(input0);', 'results'); |
| 538 var input1 = "abcd ce"; |
| 539 var results = ["ab"]; |
| 540 shouldBe('regex67.exec(input1);', 'results'); |
| 541 // Failers |
| 542 var input2 = "a.b.c"; |
| 543 var results = null; |
| 544 shouldBe('regex67.exec(input2);', 'results'); |
| 545 |
| 546 var regex68 = /\W+/; |
| 547 var input0 = "12====34"; |
| 548 var results = ["===="]; |
| 549 shouldBe('regex68.exec(input0);', 'results'); |
| 550 // Failers |
| 551 var input1 = "abcd"; |
| 552 var results = null; |
| 553 shouldBe('regex68.exec(input1);', 'results'); |
| 554 |
| 555 var regex69 = /\W{2,3}/; |
| 556 var input0 = "ab====cd"; |
| 557 var results = ["==="]; |
| 558 shouldBe('regex69.exec(input0);', 'results'); |
| 559 var input1 = "ab==cd"; |
| 560 var results = ["=="]; |
| 561 shouldBe('regex69.exec(input1);', 'results'); |
| 562 // Failers |
| 563 var input2 = "a.b.c"; |
| 564 var results = null; |
| 565 shouldBe('regex69.exec(input2);', 'results'); |
| 566 |
| 567 var regex70 = /\W{2,3}?/; |
| 568 var input0 = "ab====cd"; |
| 569 var results = ["=="]; |
| 570 shouldBe('regex70.exec(input0);', 'results'); |
| 571 var input1 = "ab==cd"; |
| 572 var results = ["=="]; |
| 573 shouldBe('regex70.exec(input1);', 'results'); |
| 574 // Failers |
| 575 var input2 = "a.b.c"; |
| 576 var results = null; |
| 577 shouldBe('regex70.exec(input2);', 'results'); |
| 578 |
| 579 var regex71 = /[\u0100]/; |
| 580 var input0 = "\u0100"; |
| 581 var results = ["\u0100"]; |
| 582 shouldBe('regex71.exec(input0);', 'results'); |
| 583 var input1 = "Z\u0100"; |
| 584 var results = ["\u0100"]; |
| 585 shouldBe('regex71.exec(input1);', 'results'); |
| 586 var input2 = "\u0100Z"; |
| 587 var results = ["\u0100"]; |
| 588 shouldBe('regex71.exec(input2);', 'results'); |
| 589 |
| 590 var regex72 = /[Z\u0100]/; |
| 591 var input0 = "Z\u0100"; |
| 592 var results = ["Z"]; |
| 593 shouldBe('regex72.exec(input0);', 'results'); |
| 594 var input1 = "\u0100"; |
| 595 var results = ["\u0100"]; |
| 596 shouldBe('regex72.exec(input1);', 'results'); |
| 597 var input2 = "\u0100Z"; |
| 598 var results = ["\u0100"]; |
| 599 shouldBe('regex72.exec(input2);', 'results'); |
| 600 |
| 601 var regex73 = /[\u0100\u0200]/; |
| 602 var input0 = "ab\u0100cd"; |
| 603 var results = ["\u0100"]; |
| 604 shouldBe('regex73.exec(input0);', 'results'); |
| 605 var input1 = "ab\u0200cd"; |
| 606 var results = ["\u0200"]; |
| 607 shouldBe('regex73.exec(input1);', 'results'); |
| 608 |
| 609 var regex74 = /[\u0100-\u0200]/; |
| 610 var input0 = "ab\u0100cd"; |
| 611 var results = ["\u0100"]; |
| 612 shouldBe('regex74.exec(input0);', 'results'); |
| 613 var input1 = "ab\u0200cd"; |
| 614 var results = ["\u0200"]; |
| 615 shouldBe('regex74.exec(input1);', 'results'); |
| 616 var input2 = "ab\u0111cd"; |
| 617 var results = ["\u0111"]; |
| 618 shouldBe('regex74.exec(input2);', 'results'); |
| 619 |
| 620 var regex75 = /[z-\u0200]/; |
| 621 var input0 = "ab\u0100cd"; |
| 622 var results = ["\u0100"]; |
| 623 shouldBe('regex75.exec(input0);', 'results'); |
| 624 var input1 = "ab\u0200cd"; |
| 625 var results = ["\u0200"]; |
| 626 shouldBe('regex75.exec(input1);', 'results'); |
| 627 var input2 = "ab\u0111cd"; |
| 628 var results = ["\u0111"]; |
| 629 shouldBe('regex75.exec(input2);', 'results'); |
| 630 var input3 = "abzcd"; |
| 631 var results = ["z"]; |
| 632 shouldBe('regex75.exec(input3);', 'results'); |
| 633 var input4 = "ab|cd"; |
| 634 var results = ["|"]; |
| 635 shouldBe('regex75.exec(input4);', 'results'); |
| 636 |
| 637 var regex76 = /[Q\u0100\u0200]/; |
| 638 var input0 = "ab\u0100cd"; |
| 639 var results = ["\u0100"]; |
| 640 shouldBe('regex76.exec(input0);', 'results'); |
| 641 var input1 = "ab\u0200cd"; |
| 642 var results = ["\u0200"]; |
| 643 shouldBe('regex76.exec(input1);', 'results'); |
| 644 var input2 = "Q?"; |
| 645 var results = ["Q"]; |
| 646 shouldBe('regex76.exec(input2);', 'results'); |
| 647 |
| 648 var regex77 = /[Q\u0100-\u0200]/; |
| 649 var input0 = "ab\u0100cd"; |
| 650 var results = ["\u0100"]; |
| 651 shouldBe('regex77.exec(input0);', 'results'); |
| 652 var input1 = "ab\u0200cd"; |
| 653 var results = ["\u0200"]; |
| 654 shouldBe('regex77.exec(input1);', 'results'); |
| 655 var input2 = "ab\u0111cd"; |
| 656 var results = ["\u0111"]; |
| 657 shouldBe('regex77.exec(input2);', 'results'); |
| 658 var input3 = "Q?"; |
| 659 var results = ["Q"]; |
| 660 shouldBe('regex77.exec(input3);', 'results'); |
| 661 |
| 662 var regex78 = /[Qz-\u0200]/; |
| 663 var input0 = "ab\u0100cd"; |
| 664 var results = ["\u0100"]; |
| 665 shouldBe('regex78.exec(input0);', 'results'); |
| 666 var input1 = "ab\u0200cd"; |
| 667 var results = ["\u0200"]; |
| 668 shouldBe('regex78.exec(input1);', 'results'); |
| 669 var input2 = "ab\u0111cd"; |
| 670 var results = ["\u0111"]; |
| 671 shouldBe('regex78.exec(input2);', 'results'); |
| 672 var input3 = "abzcd"; |
| 673 var results = ["z"]; |
| 674 shouldBe('regex78.exec(input3);', 'results'); |
| 675 var input4 = "ab|cd"; |
| 676 var results = ["|"]; |
| 677 shouldBe('regex78.exec(input4);', 'results'); |
| 678 var input5 = "Q?"; |
| 679 var results = ["Q"]; |
| 680 shouldBe('regex78.exec(input5);', 'results'); |
| 681 |
| 682 var regex79 = /[\u0100\u0200]{1,3}/; |
| 683 var input0 = "ab\u0100cd"; |
| 684 var results = ["\u0100"]; |
| 685 shouldBe('regex79.exec(input0);', 'results'); |
| 686 var input1 = "ab\u0200cd"; |
| 687 var results = ["\u0200"]; |
| 688 shouldBe('regex79.exec(input1);', 'results'); |
| 689 var input2 = "ab\u0200\u0100\u0200\u0100cd"; |
| 690 var results = ["\u0200\u0100\u0200"]; |
| 691 shouldBe('regex79.exec(input2);', 'results'); |
| 692 |
| 693 var regex80 = /[\u0100\u0200]{1,3}?/; |
| 694 var input0 = "ab\u0100cd"; |
| 695 var results = ["\u0100"]; |
| 696 shouldBe('regex80.exec(input0);', 'results'); |
| 697 var input1 = "ab\u0200cd"; |
| 698 var results = ["\u0200"]; |
| 699 shouldBe('regex80.exec(input1);', 'results'); |
| 700 var input2 = "ab\u0200\u0100\u0200\u0100cd"; |
| 701 var results = ["\u0200"]; |
| 702 shouldBe('regex80.exec(input2);', 'results'); |
| 703 |
| 704 var regex81 = /[Q\u0100\u0200]{1,3}/; |
| 705 var input0 = "ab\u0100cd"; |
| 706 var results = ["\u0100"]; |
| 707 shouldBe('regex81.exec(input0);', 'results'); |
| 708 var input1 = "ab\u0200cd"; |
| 709 var results = ["\u0200"]; |
| 710 shouldBe('regex81.exec(input1);', 'results'); |
| 711 var input2 = "ab\u0200\u0100\u0200\u0100cd"; |
| 712 var results = ["\u0200\u0100\u0200"]; |
| 713 shouldBe('regex81.exec(input2);', 'results'); |
| 714 |
| 715 var regex82 = /[Q\u0100\u0200]{1,3}?/; |
| 716 var input0 = "ab\u0100cd"; |
| 717 var results = ["\u0100"]; |
| 718 shouldBe('regex82.exec(input0);', 'results'); |
| 719 var input1 = "ab\u0200cd"; |
| 720 var results = ["\u0200"]; |
| 721 shouldBe('regex82.exec(input1);', 'results'); |
| 722 var input2 = "ab\u0200\u0100\u0200\u0100cd"; |
| 723 var results = ["\u0200"]; |
| 724 shouldBe('regex82.exec(input2);', 'results'); |
| 725 |
| 726 var regex86 = /[^\u0100\u0200]X/; |
| 727 var input0 = "AX"; |
| 728 var results = ["AX"]; |
| 729 shouldBe('regex86.exec(input0);', 'results'); |
| 730 var input1 = "\u0150X"; |
| 731 var results = ["\u0150X"]; |
| 732 shouldBe('regex86.exec(input1);', 'results'); |
| 733 var input2 = "\u0500X"; |
| 734 var results = ["\u0500X"]; |
| 735 shouldBe('regex86.exec(input2);', 'results'); |
| 736 // Failers |
| 737 var input3 = "\u0100X"; |
| 738 var results = null; |
| 739 shouldBe('regex86.exec(input3);', 'results'); |
| 740 var input4 = "\u0200X"; |
| 741 var results = null; |
| 742 shouldBe('regex86.exec(input4);', 'results'); |
| 743 |
| 744 var regex87 = /[^Q\u0100\u0200]X/; |
| 745 var input0 = "AX"; |
| 746 var results = ["AX"]; |
| 747 shouldBe('regex87.exec(input0);', 'results'); |
| 748 var input1 = "\u0150X"; |
| 749 var results = ["\u0150X"]; |
| 750 shouldBe('regex87.exec(input1);', 'results'); |
| 751 var input2 = "\u0500X"; |
| 752 var results = ["\u0500X"]; |
| 753 shouldBe('regex87.exec(input2);', 'results'); |
| 754 // Failers |
| 755 var input3 = "\u0100X"; |
| 756 var results = null; |
| 757 shouldBe('regex87.exec(input3);', 'results'); |
| 758 var input4 = "\u0200X"; |
| 759 var results = null; |
| 760 shouldBe('regex87.exec(input4);', 'results'); |
| 761 var input5 = "QX"; |
| 762 var results = null; |
| 763 shouldBe('regex87.exec(input5);', 'results'); |
| 764 |
| 765 var regex88 = /[^\u0100-\u0200]X/; |
| 766 var input0 = "AX"; |
| 767 var results = ["AX"]; |
| 768 shouldBe('regex88.exec(input0);', 'results'); |
| 769 var input1 = "\u0500X"; |
| 770 var results = ["\u0500X"]; |
| 771 shouldBe('regex88.exec(input1);', 'results'); |
| 772 // Failers |
| 773 var input2 = "\u0100X"; |
| 774 var results = null; |
| 775 shouldBe('regex88.exec(input2);', 'results'); |
| 776 var input3 = "\u0150X"; |
| 777 var results = null; |
| 778 shouldBe('regex88.exec(input3);', 'results'); |
| 779 var input4 = "\u0200X"; |
| 780 var results = null; |
| 781 shouldBe('regex88.exec(input4);', 'results'); |
| 782 |
| 783 var regex91 = /[z-\u0100]/i; |
| 784 var input0 = "z"; |
| 785 var results = ["z"]; |
| 786 shouldBe('regex91.exec(input0);', 'results'); |
| 787 var input1 = "Z"; |
| 788 var results = ["Z"]; |
| 789 shouldBe('regex91.exec(input1);', 'results'); |
| 790 var input2 = "\u0100"; |
| 791 var results = ["\u0100"]; |
| 792 shouldBe('regex91.exec(input2);', 'results'); |
| 793 // Failers |
| 794 var input3 = "\u0102"; |
| 795 var results = null; |
| 796 shouldBe('regex91.exec(input3);', 'results'); |
| 797 var input4 = "y"; |
| 798 var results = null; |
| 799 shouldBe('regex91.exec(input4);', 'results'); |
| 800 |
| 801 var regex92 = /[\xFF]/; |
| 802 var input0 = ">\xff<"; |
| 803 var results = ["\xff"]; |
| 804 shouldBe('regex92.exec(input0);', 'results'); |
| 805 |
| 806 var regex93 = /[\xff]/; |
| 807 var input0 = ">\u00ff<"; |
| 808 var results = ["\u00ff"]; |
| 809 shouldBe('regex93.exec(input0);', 'results'); |
| 810 |
| 811 var regex94 = /[^\xFF]/; |
| 812 var input0 = "XYZ"; |
| 813 var results = ["X"]; |
| 814 shouldBe('regex94.exec(input0);', 'results'); |
| 815 |
| 816 var regex95 = /[^\xff]/; |
| 817 var input0 = "XYZ"; |
| 818 var results = ["X"]; |
| 819 shouldBe('regex95.exec(input0);', 'results'); |
| 820 var input1 = "\u0123"; |
| 821 var results = ["\u0123"]; |
| 822 shouldBe('regex95.exec(input1);', 'results'); |
| 823 |
| 824 var regex96 = /^[ac]*b/; |
| 825 var input0 = "xb"; |
| 826 var results = null; |
| 827 shouldBe('regex96.exec(input0);', 'results'); |
| 828 |
| 829 var regex97 = /^[ac\u0100]*b/; |
| 830 var input0 = "xb"; |
| 831 var results = null; |
| 832 shouldBe('regex97.exec(input0);', 'results'); |
| 833 |
| 834 var regex98 = /^[^x]*b/i; |
| 835 var input0 = "xb"; |
| 836 var results = null; |
| 837 shouldBe('regex98.exec(input0);', 'results'); |
| 838 |
| 839 var regex99 = /^[^x]*b/; |
| 840 var input0 = "xb"; |
| 841 var results = null; |
| 842 shouldBe('regex99.exec(input0);', 'results'); |
| 843 |
| 844 var regex100 = /^\d*b/; |
| 845 var input0 = "xb"; |
| 846 var results = null; |
| 847 shouldBe('regex100.exec(input0);', 'results'); |
| 848 |
| 849 var regex102 = /^\u0085$/i; |
| 850 var input0 = "\u0085"; |
| 851 var results = ["\u0085"]; |
| 852 shouldBe('regex102.exec(input0);', 'results'); |
| 853 |
| 854 var regex103 = /^\xe1\x88\xb4/; |
| 855 var input0 = "\xe1\x88\xb4"; |
| 856 var results = ["\xe1\x88\xb4"]; |
| 857 shouldBe('regex103.exec(input0);', 'results'); |
| 858 |
| 859 var regex104 = /^\xe1\x88\xb4/; |
| 860 var input0 = "\xe1\x88\xb4"; |
| 861 var results = ["\xe1\x88\xb4"]; |
| 862 shouldBe('regex104.exec(input0);', 'results'); |
| 863 |
| 864 var regex105 = /(.{1,5})/; |
| 865 var input0 = "abcdefg"; |
| 866 var results = ["abcde", "abcde"]; |
| 867 shouldBe('regex105.exec(input0);', 'results'); |
| 868 var input1 = "ab"; |
| 869 var results = ["ab", "ab"]; |
| 870 shouldBe('regex105.exec(input1);', 'results'); |
| 871 |
| 872 var regex106 = /a*\u0100*\w/; |
| 873 var input0 = "a"; |
| 874 var results = ["a"]; |
| 875 shouldBe('regex106.exec(input0);', 'results'); |
| 876 |
| 877 var regex107 = /[\S\s]*/; |
| 878 var input0 = "abc\n\r\u0442\u0435\u0441\u0442xyz"; |
| 879 var results = ["abc\u000a\u000d\u0442\u0435\u0441\u0442xyz"]; |
| 880 shouldBe('regex107.exec(input0);', 'results'); |
| 881 |
| 882 var regexGlobal0 = /[^a]+/g; |
| 883 var input0 = "bcd"; |
| 884 var results = ["bcd"]; |
| 885 shouldBe('input0.match(regexGlobal0);', 'results'); |
| 886 var input1 = "\u0100aY\u0256Z"; |
| 887 var results = ["\u0100", "Y\u0256Z"]; |
| 888 shouldBe('input1.match(regexGlobal0);', 'results'); |
| 889 |
| 890 var regexGlobal1 = /\S\S/g; |
| 891 var input0 = "A\u00a3BC"; |
| 892 var results = ["A\u00a3", "BC"]; |
| 893 shouldBe('input0.match(regexGlobal1);', 'results'); |
| 894 |
| 895 var regexGlobal2 = /\S{2}/g; |
| 896 var input0 = "A\u00a3BC"; |
| 897 var results = ["A\u00a3", "BC"]; |
| 898 shouldBe('input0.match(regexGlobal2);', 'results'); |
| 899 |
| 900 var regexGlobal3 = /\W\W/g; |
| 901 var input0 = "+\u00a3=="; |
| 902 var results = ["+\u00a3", "=="]; |
| 903 shouldBe('input0.match(regexGlobal3);', 'results'); |
| 904 |
| 905 var regexGlobal4 = /\W{2}/g; |
| 906 var input0 = "+\u00a3=="; |
| 907 var results = ["+\u00a3", "=="]; |
| 908 shouldBe('input0.match(regexGlobal4);', 'results'); |
| 909 |
| 910 var regexGlobal5 = /\S/g; |
| 911 var input0 = "\u0442\u0435\u0441\u0442"; |
| 912 var results = ["\u0442", "\u0435", "\u0441", "\u0442"]; |
| 913 shouldBe('input0.match(regexGlobal5);', 'results'); |
| 914 |
| 915 var regexGlobal6 = /[\S]/g; |
| 916 var input0 = "\u0442\u0435\u0441\u0442"; |
| 917 var results = ["\u0442", "\u0435", "\u0441", "\u0442"]; |
| 918 shouldBe('input0.match(regexGlobal6);', 'results'); |
| 919 |
| 920 var regexGlobal7 = /\D/g; |
| 921 var input0 = "\u0442\u0435\u0441\u0442"; |
| 922 var results = ["\u0442", "\u0435", "\u0441", "\u0442"]; |
| 923 shouldBe('input0.match(regexGlobal7);', 'results'); |
| 924 |
| 925 var regexGlobal8 = /[\D]/g; |
| 926 var input0 = "\u0442\u0435\u0441\u0442"; |
| 927 var results = ["\u0442", "\u0435", "\u0441", "\u0442"]; |
| 928 shouldBe('input0.match(regexGlobal8);', 'results'); |
| 929 |
| 930 var regexGlobal9 = /\W/g; |
| 931 var input0 = "\u2442\u2435\u2441\u2442"; |
| 932 var results = ["\u2442", "\u2435", "\u2441", "\u2442"]; |
| 933 shouldBe('input0.match(regexGlobal9);', 'results'); |
| 934 |
| 935 var regexGlobal10 = /[\W]/g; |
| 936 var input0 = "\u2442\u2435\u2441\u2442"; |
| 937 var results = ["\u2442", "\u2435", "\u2441", "\u2442"]; |
| 938 shouldBe('input0.match(regexGlobal10);', 'results'); |
| 939 |
| 940 var regexGlobal11 = /[\u041f\S]/g; |
| 941 var input0 = "\u0442\u0435\u0441\u0442"; |
| 942 var results = ["\u0442", "\u0435", "\u0441", "\u0442"]; |
| 943 shouldBe('input0.match(regexGlobal11);', 'results'); |
| 944 |
| 945 var regexGlobal12 = /.[^\S]./g; |
| 946 var input0 = "abc def\u0442\u0443xyz\npqr"; |
| 947 var results = ["c d", "z\u000ap"]; |
| 948 shouldBe('input0.match(regexGlobal12);', 'results'); |
| 949 |
| 950 var regexGlobal13 = /.[^\S\n]./g; |
| 951 var input0 = "abc def\u0442\u0443xyz\npqr"; |
| 952 var results = ["c d"]; |
| 953 shouldBe('input0.match(regexGlobal13);', 'results'); |
| 954 |
| 955 var regexGlobal14 = /[\W]/g; |
| 956 var input0 = "+\u2442"; |
| 957 var results = ["+", "\u2442"]; |
| 958 shouldBe('input0.match(regexGlobal14);', 'results'); |
| 959 |
| 960 var regexGlobal15 = /[^a-zA-Z]/g; |
| 961 var input0 = "+\u2442"; |
| 962 var results = ["+", "\u2442"]; |
| 963 shouldBe('input0.match(regexGlobal15);', 'results'); |
| 964 |
| 965 var regexGlobal16 = /[^a-zA-Z]/g; |
| 966 var input0 = "A\u0442"; |
| 967 var results = ["\u0442"]; |
| 968 shouldBe('input0.match(regexGlobal16);', 'results'); |
| 969 |
| 970 var regexGlobal17 = /[\S]/g; |
| 971 var input0 = "A\u0442"; |
| 972 var results = ["A", "\u0442"]; |
| 973 shouldBe('input0.match(regexGlobal17);', 'results'); |
| 974 |
| 975 var regexGlobal19 = /[\D]/g; |
| 976 var input0 = "A\u0442"; |
| 977 var results = ["A", "\u0442"]; |
| 978 shouldBe('input0.match(regexGlobal19);', 'results'); |
| 979 |
| 980 var regexGlobal21 = /[^a-z]/g; |
| 981 var input0 = "A\u0422"; |
| 982 var results = ["A", "\u0422"]; |
| 983 shouldBe('input0.match(regexGlobal21);', 'results'); |
| 984 |
| 985 var regexGlobal24 = /[\S]/g; |
| 986 var input0 = "A\u0442"; |
| 987 var results = ["A", "\u0442"]; |
| 988 shouldBe('input0.match(regexGlobal24);', 'results'); |
| 989 |
| 990 var regexGlobal25 = /[^A-Z]/g; |
| 991 var input0 = "a\u0442"; |
| 992 var results = ["a", "\u0442"]; |
| 993 shouldBe('input0.match(regexGlobal25);', 'results'); |
| 994 |
| 995 var regexGlobal26 = /[\W]/g; |
| 996 var input0 = "+\u2442"; |
| 997 var results = ["+", "\u2442"]; |
| 998 shouldBe('input0.match(regexGlobal26);', 'results'); |
| 999 |
| 1000 var regexGlobal27 = /[\D]/g; |
| 1001 var input0 = "M\u0442"; |
| 1002 var results = ["M", "\u0442"]; |
| 1003 shouldBe('input0.match(regexGlobal27);', 'results'); |
| 1004 |
| 1005 var regexGlobal28 = /[^a]+/ig; |
| 1006 var input0 = "bcd"; |
| 1007 var results = ["bcd"]; |
| 1008 shouldBe('input0.match(regexGlobal28);', 'results'); |
| 1009 var input1 = "\u0100aY\u0256Z"; |
| 1010 var results = ["\u0100", "Y\u0256Z"]; |
| 1011 shouldBe('input1.match(regexGlobal28);', 'results'); |
| 1012 |
| 1013 var regexGlobal29 = /(a|)/g; |
| 1014 var input0 = "catac"; |
| 1015 var results = ["", "a", "", "a", "", ""]; |
| 1016 shouldBe('input0.match(regexGlobal29);', 'results'); |
| 1017 var input1 = "a\u0256a"; |
| 1018 var results = ["a", "", "a", ""]; |
| 1019 shouldBe('input1.match(regexGlobal29);', 'results'); |
| 1020 |
| 1021 // DISABLED: |
| 1022 // These tests use (?<) or (?>) constructs. These are not currently valid in ECM
AScript, |
| 1023 // but these tests may be useful if similar constructs are introduced in the fut
ure. |
| 1024 |
| 1025 //var regex18 = /(?<=aXb)cd/; |
| 1026 //var input0 = "aXbcd"; |
| 1027 //var results = ["cd"]; |
| 1028 //shouldBe('regex18.exec(input0);', 'results'); |
| 1029 // |
| 1030 //var regex19 = /(?<=a\u0100b)cd/; |
| 1031 //var input0 = "a\u0100bcd"; |
| 1032 //var results = ["cd"]; |
| 1033 //shouldBe('regex19.exec(input0);', 'results'); |
| 1034 // |
| 1035 //var regex20 = /(?<=a\u100000b)cd/; |
| 1036 //var input0 = "a\u100000bcd"; |
| 1037 //var results = ["cd"]; |
| 1038 //shouldBe('regex20.exec(input0);', 'results'); |
| 1039 // |
| 1040 //var regex23 = /(?<=(.))X/; |
| 1041 //var input0 = "WXYZ"; |
| 1042 //var results = ["X", "W"]; |
| 1043 //shouldBe('regex23.exec(input0);', 'results'); |
| 1044 //var input1 = "\u0256XYZ"; |
| 1045 //var results = ["X", "\u0256"]; |
| 1046 //shouldBe('regex23.exec(input1);', 'results'); |
| 1047 //// Failers |
| 1048 //var input2 = "XYZ"; |
| 1049 //var results = null; |
| 1050 //shouldBe('regex23.exec(input2);', 'results'); |
| 1051 // |
| 1052 //var regex46 = /(?<=a\u0100{2}b)X/; |
| 1053 //var input0 = "Xyyya\u0100\u0100bXzzz"; |
| 1054 //var results = ["X"]; |
| 1055 //shouldBe('regex46.exec(input0);', 'results'); |
| 1056 // |
| 1057 //var regex83 = /(?<=[\u0100\u0200])X/; |
| 1058 //var input0 = "abc\u0200X"; |
| 1059 //var results = ["X"]; |
| 1060 //shouldBe('regex83.exec(input0);', 'results'); |
| 1061 //var input1 = "abc\u0100X"; |
| 1062 //var results = ["X"]; |
| 1063 //shouldBe('regex83.exec(input1);', 'results'); |
| 1064 //// Failers |
| 1065 //var input2 = "X"; |
| 1066 //var results = null; |
| 1067 //shouldBe('regex83.exec(input2);', 'results'); |
| 1068 // |
| 1069 //var regex84 = /(?<=[Q\u0100\u0200])X/; |
| 1070 //var input0 = "abc\u0200X"; |
| 1071 //var results = ["X"]; |
| 1072 //shouldBe('regex84.exec(input0);', 'results'); |
| 1073 //var input1 = "abc\u0100X"; |
| 1074 //var results = ["X"]; |
| 1075 //shouldBe('regex84.exec(input1);', 'results'); |
| 1076 //var input2 = "abQX"; |
| 1077 //var results = ["X"]; |
| 1078 //shouldBe('regex84.exec(input2);', 'results'); |
| 1079 //// Failers |
| 1080 //var input3 = "X"; |
| 1081 //var results = null; |
| 1082 //shouldBe('regex84.exec(input3);', 'results'); |
| 1083 // |
| 1084 //var regex85 = /(?<=[\u0100\u0200]{3})X/; |
| 1085 //var input0 = "abc\u0100\u0200\u0100X"; |
| 1086 //var results = ["X"]; |
| 1087 //shouldBe('regex85.exec(input0);', 'results'); |
| 1088 //// Failers |
| 1089 //var input1 = "abc\u0200X"; |
| 1090 //var results = null; |
| 1091 //shouldBe('regex85.exec(input1);', 'results'); |
| 1092 //var input2 = "X"; |
| 1093 //var results = null; |
| 1094 //shouldBe('regex85.exec(input2);', 'results'); |
| 1095 |
| 1096 // DISABLED: |
| 1097 // These tests use PCRE's \C token. This is not currently valid in ECMAScript, |
| 1098 // but these tests may be useful if similar constructs are introduced in the fut
ure. |
| 1099 |
| 1100 //var regex24 = /X(\C{3})/; |
| 1101 //var input0 = "X\u1234"; |
| 1102 //var results = ["X\u1234", "\u1234"]; |
| 1103 //shouldBe('regex24.exec(input0);', 'results'); |
| 1104 // |
| 1105 //var regex25 = /X(\C{4})/; |
| 1106 //var input0 = "X\u1234YZ"; |
| 1107 //var results = ["X\u1234Y", "\u1234Y"]; |
| 1108 //shouldBe('regex25.exec(input0);', 'results'); |
| 1109 // |
| 1110 //var regex26 = /X\C*/; |
| 1111 //var input0 = "XYZabcdce"; |
| 1112 //var results = ["XYZabcdce"]; |
| 1113 //shouldBe('regex26.exec(input0);', 'results'); |
| 1114 // |
| 1115 //var regex27 = /X\C*?/; |
| 1116 //var input0 = "XYZabcde"; |
| 1117 //var results = ["X"]; |
| 1118 //shouldBe('regex27.exec(input0);', 'results'); |
| 1119 // |
| 1120 //var regex28 = /X\C{3,5}/; |
| 1121 //var input0 = "Xabcdefg"; |
| 1122 //var results = ["Xabcde"]; |
| 1123 //shouldBe('regex28.exec(input0);', 'results'); |
| 1124 //var input1 = "X\u1234"; |
| 1125 //var results = ["X\u1234"]; |
| 1126 //shouldBe('regex28.exec(input1);', 'results'); |
| 1127 //var input2 = "X\u1234YZ"; |
| 1128 //var results = ["X\u1234YZ"]; |
| 1129 //shouldBe('regex28.exec(input2);', 'results'); |
| 1130 //var input3 = "X\u1234\u0512"; |
| 1131 //var results = ["X\u1234\u0512"]; |
| 1132 //shouldBe('regex28.exec(input3);', 'results'); |
| 1133 //var input4 = "X\u1234\u0512YZ"; |
| 1134 //var results = ["X\u1234\u0512"]; |
| 1135 //shouldBe('regex28.exec(input4);', 'results'); |
| 1136 // |
| 1137 //var regex29 = /X\C{3,5}?/; |
| 1138 //var input0 = "Xabcdefg"; |
| 1139 //var results = ["Xabc"]; |
| 1140 //shouldBe('regex29.exec(input0);', 'results'); |
| 1141 //var input1 = "X\u1234"; |
| 1142 //var results = ["X\u1234"]; |
| 1143 //shouldBe('regex29.exec(input1);', 'results'); |
| 1144 //var input2 = "X\u1234YZ"; |
| 1145 //var results = ["X\u1234"]; |
| 1146 //shouldBe('regex29.exec(input2);', 'results'); |
| 1147 //var input3 = "X\u1234\u0512"; |
| 1148 //var results = ["X\u1234"]; |
| 1149 //shouldBe('regex29.exec(input3);', 'results'); |
| 1150 // |
| 1151 //var regex89 = /a\Cb/; |
| 1152 //var input0 = "aXb"; |
| 1153 //var results = ["aXb"]; |
| 1154 //shouldBe('regex89.exec(input0);', 'results'); |
| 1155 //var input1 = "a\nb"; |
| 1156 //var results = ["a\x0ab"]; |
| 1157 //shouldBe('regex89.exec(input1);', 'results'); |
| 1158 // |
| 1159 //var regex90 = /a\Cb/; |
| 1160 //var input0 = "aXb"; |
| 1161 //var results = ["aXb"]; |
| 1162 //shouldBe('regex90.exec(input0);', 'results'); |
| 1163 //var input1 = "a\nb"; |
| 1164 //var results = ["a\u000ab"]; |
| 1165 //shouldBe('regex90.exec(input1);', 'results'); |
| 1166 //// Failers |
| 1167 //var input2 = "a\u0100b"; |
| 1168 //var results = null; |
| 1169 //shouldBe('regex90.exec(input2);', 'results'); |
OLD | NEW |