michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: /* michael@0: * michael@0: * Date: 2002-07-07 michael@0: * SUMMARY: Testing JS RegExp engine against Perl 5 RegExp engine. michael@0: * Adjust cnLBOUND, cnUBOUND below to restrict which sections are tested. michael@0: * michael@0: * This test was created by running various patterns and strings through the michael@0: * Perl 5 RegExp engine. We saved the results below to test the JS engine. michael@0: * michael@0: * Each of the examples below is a negative test; that is, each produces a michael@0: * null match in Perl. Thus we set |expectedmatch| = |null| in each section. michael@0: * michael@0: * NOTE: ECMA/JS and Perl do differ on certain points. We have either commented michael@0: * out such sections altogether, or modified them to fit what we expect from JS. michael@0: * michael@0: * EXAMPLES: michael@0: * michael@0: * - ECMA does support (?: (?= and (?! operators, but doesn't support (?< etc. michael@0: * michael@0: * - ECMA doesn't support (?(condition) michael@0: * michael@0: */ michael@0: //----------------------------------------------------------------------------- michael@0: var i = 0; michael@0: var BUGNUMBER = 85721; michael@0: var summary = 'Testing regular expression edge cases'; michael@0: var cnSingleSpace = ' '; michael@0: var status = ''; michael@0: var statusmessages = new Array(); michael@0: var pattern = ''; michael@0: var patterns = new Array(); michael@0: var string = ''; michael@0: var strings = new Array(); michael@0: var actualmatch = ''; michael@0: var actualmatches = new Array(); michael@0: var expectedmatch = ''; michael@0: var expectedmatches = new Array(); michael@0: var cnLBOUND = 0; michael@0: var cnUBOUND = 1000; michael@0: michael@0: michael@0: status = inSection(1); michael@0: pattern = /abc/; michael@0: string = 'xbc'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(2); michael@0: pattern = /abc/; michael@0: string = 'axc'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(3); michael@0: pattern = /abc/; michael@0: string = 'abx'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(4); michael@0: pattern = /ab+bc/; michael@0: string = 'abc'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(5); michael@0: pattern = /ab+bc/; michael@0: string = 'abq'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(6); michael@0: pattern = /ab{1,}bc/; michael@0: string = 'abq'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(7); michael@0: pattern = /ab{4,5}bc/; michael@0: string = 'abbbbc'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(8); michael@0: pattern = /ab?bc/; michael@0: string = 'abbbbc'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(9); michael@0: pattern = /^abc$/; michael@0: string = 'abcc'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(10); michael@0: pattern = /^abc$/; michael@0: string = 'aabc'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(11); michael@0: pattern = /abc$/; michael@0: string = 'aabcd'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(12); michael@0: pattern = /a.*c/; michael@0: string = 'axyzd'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(13); michael@0: pattern = /a[bc]d/; michael@0: string = 'abc'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(14); michael@0: pattern = /a[b-d]e/; michael@0: string = 'abd'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(15); michael@0: pattern = /a[^bc]d/; michael@0: string = 'abd'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(16); michael@0: pattern = /a[^-b]c/; michael@0: string = 'a-c'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(17); michael@0: pattern = /a[^]b]c/; michael@0: string = 'a]c'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(18); michael@0: pattern = /\by\b/; michael@0: string = 'xy'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(19); michael@0: pattern = /\by\b/; michael@0: string = 'yz'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(20); michael@0: pattern = /\by\b/; michael@0: string = 'xyz'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(21); michael@0: pattern = /\Ba\B/; michael@0: string = 'a-'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(22); michael@0: pattern = /\Ba\B/; michael@0: string = '-a'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(23); michael@0: pattern = /\Ba\B/; michael@0: string = '-a-'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(24); michael@0: pattern = /\w/; michael@0: string = '-'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(25); michael@0: pattern = /\W/; michael@0: string = 'a'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(26); michael@0: pattern = /a\sb/; michael@0: string = 'a-b'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(27); michael@0: pattern = /\d/; michael@0: string = '-'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(28); michael@0: pattern = /\D/; michael@0: string = '1'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(29); michael@0: pattern = /[\w]/; michael@0: string = '-'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(30); michael@0: pattern = /[\W]/; michael@0: string = 'a'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(31); michael@0: pattern = /a[\s]b/; michael@0: string = 'a-b'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(32); michael@0: pattern = /[\d]/; michael@0: string = '-'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(33); michael@0: pattern = /[\D]/; michael@0: string = '1'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(34); michael@0: pattern = /$b/; michael@0: string = 'b'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(35); michael@0: pattern = /^(ab|cd)e/; michael@0: string = 'abcde'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(36); michael@0: pattern = /a[bcd]+dcdcde/; michael@0: string = 'adcdcde'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(37); michael@0: pattern = /(bc+d$|ef*g.|h?i(j|k))/; michael@0: string = 'effg'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(38); michael@0: pattern = /(bc+d$|ef*g.|h?i(j|k))/; michael@0: string = 'bcdd'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(39); michael@0: pattern = /[k]/; michael@0: string = 'ab'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: // MODIFIED - ECMA has different rules for paren contents. michael@0: status = inSection(40); michael@0: pattern = /(a)|\1/; michael@0: string = 'x'; michael@0: actualmatch = string.match(pattern); michael@0: //expectedmatch = null; michael@0: expectedmatch = Array("", undefined); michael@0: addThis(); michael@0: michael@0: // MODIFIED - ECMA has different rules for paren contents. michael@0: status = inSection(41); michael@0: pattern = /((\3|b)\2(a)x)+/; michael@0: string = 'aaxabxbaxbbx'; michael@0: actualmatch = string.match(pattern); michael@0: //expectedmatch = null; michael@0: expectedmatch = Array("ax", "ax", "", "a"); michael@0: addThis(); michael@0: michael@0: status = inSection(42); michael@0: pattern = /abc/i; michael@0: string = 'XBC'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(43); michael@0: pattern = /abc/i; michael@0: string = 'AXC'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(44); michael@0: pattern = /abc/i; michael@0: string = 'ABX'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(45); michael@0: pattern = /ab+bc/i; michael@0: string = 'ABC'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(46); michael@0: pattern = /ab+bc/i; michael@0: string = 'ABQ'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(47); michael@0: pattern = /ab{1,}bc/i; michael@0: string = 'ABQ'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(48); michael@0: pattern = /ab{4,5}?bc/i; michael@0: string = 'ABBBBC'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(49); michael@0: pattern = /ab??bc/i; michael@0: string = 'ABBBBC'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(50); michael@0: pattern = /^abc$/i; michael@0: string = 'ABCC'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(51); michael@0: pattern = /^abc$/i; michael@0: string = 'AABC'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(52); michael@0: pattern = /a.*c/i; michael@0: string = 'AXYZD'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(53); michael@0: pattern = /a[bc]d/i; michael@0: string = 'ABC'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(54); michael@0: pattern = /a[b-d]e/i; michael@0: string = 'ABD'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(55); michael@0: pattern = /a[^bc]d/i; michael@0: string = 'ABD'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(56); michael@0: pattern = /a[^-b]c/i; michael@0: string = 'A-C'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(57); michael@0: pattern = /a[^]b]c/i; michael@0: string = 'A]C'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(58); michael@0: pattern = /$b/i; michael@0: string = 'B'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(59); michael@0: pattern = /^(ab|cd)e/i; michael@0: string = 'ABCDE'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(60); michael@0: pattern = /a[bcd]+dcdcde/i; michael@0: string = 'ADCDCDE'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(61); michael@0: pattern = /(bc+d$|ef*g.|h?i(j|k))/i; michael@0: string = 'EFFG'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(62); michael@0: pattern = /(bc+d$|ef*g.|h?i(j|k))/i; michael@0: string = 'BCDD'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(63); michael@0: pattern = /[k]/i; michael@0: string = 'AB'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(64); michael@0: pattern = /^(a\1?){4}$/; michael@0: string = 'aaaaaaaaa'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(65); michael@0: pattern = /^(a\1?){4}$/; michael@0: string = 'aaaaaaaaaaa'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: /* ECMA doesn't support (?( michael@0: status = inSection(66); michael@0: pattern = /^(a(?(1)\1)){4}$/; michael@0: string = 'aaaaaaaaa'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(67); michael@0: pattern = /^(a(?(1)\1)){4}$/; michael@0: string = 'aaaaaaaaaaa'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: */ michael@0: michael@0: /* ECMA doesn't support (?< michael@0: status = inSection(68); michael@0: pattern = /(?<=a)b/; michael@0: string = 'cb'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(69); michael@0: pattern = /(?<=a)b/; michael@0: string = 'b'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(70); michael@0: pattern = /(?a+)ab/; michael@0: string = 'aaab'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(106); michael@0: pattern = /a\Z/; michael@0: string = 'a\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(107); michael@0: pattern = /a\z/; michael@0: string = 'a\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(108); michael@0: pattern = /a$/; michael@0: string = 'a\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(109); michael@0: pattern = /a\z/; michael@0: string = 'b\na\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(110); michael@0: pattern = /a\z/m; michael@0: string = 'a\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(111); michael@0: pattern = /a\z/m; michael@0: string = 'b\na\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(112); michael@0: pattern = /aa\Z/; michael@0: string = 'aa\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(113); michael@0: pattern = /aa\z/; michael@0: string = 'aa\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(114); michael@0: pattern = /aa$/; michael@0: string = 'aa\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(115); michael@0: pattern = /aa\z/; michael@0: string = 'b\naa\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(116); michael@0: pattern = /aa\z/m; michael@0: string = 'aa\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(117); michael@0: pattern = /aa\z/m; michael@0: string = 'b\naa\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(118); michael@0: pattern = /aa\Z/; michael@0: string = 'ac\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(119); michael@0: pattern = /aa\z/; michael@0: string = 'ac\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(120); michael@0: pattern = /aa$/; michael@0: string = 'ac\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(121); michael@0: pattern = /aa\Z/; michael@0: string = 'b\nac\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(122); michael@0: pattern = /aa\z/; michael@0: string = 'b\nac\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(123); michael@0: pattern = /aa$/; michael@0: string = 'b\nac\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(124); michael@0: pattern = /aa\Z/; michael@0: string = 'b\nac'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(125); michael@0: pattern = /aa\z/; michael@0: string = 'b\nac'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(126); michael@0: pattern = /aa$/; michael@0: string = 'b\nac'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(127); michael@0: pattern = /aa\Z/m; michael@0: string = 'ac\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(128); michael@0: pattern = /aa\z/m; michael@0: string = 'ac\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(129); michael@0: pattern = /aa$/m; michael@0: string = 'ac\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(130); michael@0: pattern = /aa\Z/m; michael@0: string = 'b\nac\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(131); michael@0: pattern = /aa\z/m; michael@0: string = 'b\nac\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(132); michael@0: pattern = /aa$/m; michael@0: string = 'b\nac\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(133); michael@0: pattern = /aa\Z/m; michael@0: string = 'b\nac'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(134); michael@0: pattern = /aa\z/m; michael@0: string = 'b\nac'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(135); michael@0: pattern = /aa$/m; michael@0: string = 'b\nac'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(136); michael@0: pattern = /aa\Z/; michael@0: string = 'ca\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(137); michael@0: pattern = /aa\z/; michael@0: string = 'ca\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(138); michael@0: pattern = /aa$/; michael@0: string = 'ca\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(139); michael@0: pattern = /aa\Z/; michael@0: string = 'b\nca\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(140); michael@0: pattern = /aa\z/; michael@0: string = 'b\nca\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(141); michael@0: pattern = /aa$/; michael@0: string = 'b\nca\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(142); michael@0: pattern = /aa\Z/; michael@0: string = 'b\nca'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(143); michael@0: pattern = /aa\z/; michael@0: string = 'b\nca'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(144); michael@0: pattern = /aa$/; michael@0: string = 'b\nca'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(145); michael@0: pattern = /aa\Z/m; michael@0: string = 'ca\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(146); michael@0: pattern = /aa\z/m; michael@0: string = 'ca\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(147); michael@0: pattern = /aa$/m; michael@0: string = 'ca\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(148); michael@0: pattern = /aa\Z/m; michael@0: string = 'b\nca\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(149); michael@0: pattern = /aa\z/m; michael@0: string = 'b\nca\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(150); michael@0: pattern = /aa$/m; michael@0: string = 'b\nca\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(151); michael@0: pattern = /aa\Z/m; michael@0: string = 'b\nca'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(152); michael@0: pattern = /aa\z/m; michael@0: string = 'b\nca'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(153); michael@0: pattern = /aa$/m; michael@0: string = 'b\nca'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(154); michael@0: pattern = /ab\Z/; michael@0: string = 'ab\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(155); michael@0: pattern = /ab\z/; michael@0: string = 'ab\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(156); michael@0: pattern = /ab$/; michael@0: string = 'ab\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(157); michael@0: pattern = /ab\z/; michael@0: string = 'b\nab\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(158); michael@0: pattern = /ab\z/m; michael@0: string = 'ab\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(159); michael@0: pattern = /ab\z/m; michael@0: string = 'b\nab\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(160); michael@0: pattern = /ab\Z/; michael@0: string = 'ac\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(161); michael@0: pattern = /ab\z/; michael@0: string = 'ac\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(162); michael@0: pattern = /ab$/; michael@0: string = 'ac\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(163); michael@0: pattern = /ab\Z/; michael@0: string = 'b\nac\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(164); michael@0: pattern = /ab\z/; michael@0: string = 'b\nac\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(165); michael@0: pattern = /ab$/; michael@0: string = 'b\nac\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(166); michael@0: pattern = /ab\Z/; michael@0: string = 'b\nac'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(167); michael@0: pattern = /ab\z/; michael@0: string = 'b\nac'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(168); michael@0: pattern = /ab$/; michael@0: string = 'b\nac'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(169); michael@0: pattern = /ab\Z/m; michael@0: string = 'ac\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(170); michael@0: pattern = /ab\z/m; michael@0: string = 'ac\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(171); michael@0: pattern = /ab$/m; michael@0: string = 'ac\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(172); michael@0: pattern = /ab\Z/m; michael@0: string = 'b\nac\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(173); michael@0: pattern = /ab\z/m; michael@0: string = 'b\nac\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(174); michael@0: pattern = /ab$/m; michael@0: string = 'b\nac\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(175); michael@0: pattern = /ab\Z/m; michael@0: string = 'b\nac'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(176); michael@0: pattern = /ab\z/m; michael@0: string = 'b\nac'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(177); michael@0: pattern = /ab$/m; michael@0: string = 'b\nac'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(178); michael@0: pattern = /ab\Z/; michael@0: string = 'ca\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(179); michael@0: pattern = /ab\z/; michael@0: string = 'ca\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(180); michael@0: pattern = /ab$/; michael@0: string = 'ca\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(181); michael@0: pattern = /ab\Z/; michael@0: string = 'b\nca\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(182); michael@0: pattern = /ab\z/; michael@0: string = 'b\nca\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(183); michael@0: pattern = /ab$/; michael@0: string = 'b\nca\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(184); michael@0: pattern = /ab\Z/; michael@0: string = 'b\nca'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(185); michael@0: pattern = /ab\z/; michael@0: string = 'b\nca'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(186); michael@0: pattern = /ab$/; michael@0: string = 'b\nca'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(187); michael@0: pattern = /ab\Z/m; michael@0: string = 'ca\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(188); michael@0: pattern = /ab\z/m; michael@0: string = 'ca\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(189); michael@0: pattern = /ab$/m; michael@0: string = 'ca\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(190); michael@0: pattern = /ab\Z/m; michael@0: string = 'b\nca\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(191); michael@0: pattern = /ab\z/m; michael@0: string = 'b\nca\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(192); michael@0: pattern = /ab$/m; michael@0: string = 'b\nca\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(193); michael@0: pattern = /ab\Z/m; michael@0: string = 'b\nca'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(194); michael@0: pattern = /ab\z/m; michael@0: string = 'b\nca'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(195); michael@0: pattern = /ab$/m; michael@0: string = 'b\nca'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(196); michael@0: pattern = /abb\Z/; michael@0: string = 'abb\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(197); michael@0: pattern = /abb\z/; michael@0: string = 'abb\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(198); michael@0: pattern = /abb$/; michael@0: string = 'abb\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(199); michael@0: pattern = /abb\z/; michael@0: string = 'b\nabb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(200); michael@0: pattern = /abb\z/m; michael@0: string = 'abb\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(201); michael@0: pattern = /abb\z/m; michael@0: string = 'b\nabb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(202); michael@0: pattern = /abb\Z/; michael@0: string = 'ac\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(203); michael@0: pattern = /abb\z/; michael@0: string = 'ac\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(204); michael@0: pattern = /abb$/; michael@0: string = 'ac\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(205); michael@0: pattern = /abb\Z/; michael@0: string = 'b\nac\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(206); michael@0: pattern = /abb\z/; michael@0: string = 'b\nac\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(207); michael@0: pattern = /abb$/; michael@0: string = 'b\nac\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(208); michael@0: pattern = /abb\Z/; michael@0: string = 'b\nac'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(209); michael@0: pattern = /abb\z/; michael@0: string = 'b\nac'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(210); michael@0: pattern = /abb$/; michael@0: string = 'b\nac'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(211); michael@0: pattern = /abb\Z/m; michael@0: string = 'ac\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(212); michael@0: pattern = /abb\z/m; michael@0: string = 'ac\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(213); michael@0: pattern = /abb$/m; michael@0: string = 'ac\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(214); michael@0: pattern = /abb\Z/m; michael@0: string = 'b\nac\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(215); michael@0: pattern = /abb\z/m; michael@0: string = 'b\nac\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(216); michael@0: pattern = /abb$/m; michael@0: string = 'b\nac\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(217); michael@0: pattern = /abb\Z/m; michael@0: string = 'b\nac'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(218); michael@0: pattern = /abb\z/m; michael@0: string = 'b\nac'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(219); michael@0: pattern = /abb$/m; michael@0: string = 'b\nac'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(220); michael@0: pattern = /abb\Z/; michael@0: string = 'ca\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(221); michael@0: pattern = /abb\z/; michael@0: string = 'ca\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(222); michael@0: pattern = /abb$/; michael@0: string = 'ca\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(223); michael@0: pattern = /abb\Z/; michael@0: string = 'b\nca\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(224); michael@0: pattern = /abb\z/; michael@0: string = 'b\nca\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(225); michael@0: pattern = /abb$/; michael@0: string = 'b\nca\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(226); michael@0: pattern = /abb\Z/; michael@0: string = 'b\nca'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(227); michael@0: pattern = /abb\z/; michael@0: string = 'b\nca'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(228); michael@0: pattern = /abb$/; michael@0: string = 'b\nca'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(229); michael@0: pattern = /abb\Z/m; michael@0: string = 'ca\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(230); michael@0: pattern = /abb\z/m; michael@0: string = 'ca\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(231); michael@0: pattern = /abb$/m; michael@0: string = 'ca\nb\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(232); michael@0: pattern = /abb\Z/m; michael@0: string = 'b\nca\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(233); michael@0: pattern = /abb\z/m; michael@0: string = 'b\nca\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(234); michael@0: pattern = /abb$/m; michael@0: string = 'b\nca\n'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(235); michael@0: pattern = /abb\Z/m; michael@0: string = 'b\nca'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(236); michael@0: pattern = /abb\z/m; michael@0: string = 'b\nca'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(237); michael@0: pattern = /abb$/m; michael@0: string = 'b\nca'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(238); michael@0: pattern = /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/; michael@0: string = 'x'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(239); michael@0: pattern = /\GX.*X/; michael@0: string = 'aaaXbX'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(240); michael@0: pattern = /\.c(pp|xx|c)?$/i; michael@0: string = 'Changes'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(241); michael@0: pattern = /^([a-z]:)/; michael@0: string = 'C:/'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: status = inSection(242); michael@0: pattern = /(\w)?(abc)\1b/; michael@0: string = 'abcab'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: michael@0: /* ECMA doesn't support (?( michael@0: status = inSection(243); michael@0: pattern = /^(a)?(?(1)a|b)+$/; michael@0: string = 'a'; michael@0: actualmatch = string.match(pattern); michael@0: expectedmatch = null; michael@0: addThis(); michael@0: */ michael@0: michael@0: michael@0: michael@0: //----------------------------------------------------------------------------- michael@0: test(); michael@0: //----------------------------------------------------------------------------- michael@0: michael@0: michael@0: michael@0: function addThis() michael@0: { michael@0: if(omitCurrentSection()) michael@0: return; michael@0: michael@0: statusmessages[i] = status; michael@0: patterns[i] = pattern; michael@0: strings[i] = string; michael@0: actualmatches[i] = actualmatch; michael@0: expectedmatches[i] = expectedmatch; michael@0: i++; michael@0: } michael@0: michael@0: michael@0: function omitCurrentSection() michael@0: { michael@0: try michael@0: { michael@0: // current section number is in global status variable michael@0: var n = status.match(/(\d+)/)[1]; michael@0: return ((n < cnLBOUND) || (n > cnUBOUND)); michael@0: } michael@0: catch(e) michael@0: { michael@0: return false; michael@0: } michael@0: } michael@0: michael@0: michael@0: function test() michael@0: { michael@0: enterFunc ('test'); michael@0: printBugNumber(BUGNUMBER); michael@0: printStatus (summary); michael@0: testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches); michael@0: exitFunc ('test'); michael@0: }