Best Python code snippet using lisa_python
perlstress-001.js
Source:perlstress-001.js
1/* ***** BEGIN LICENSE BLOCK *****2* Version: NPL 1.1/GPL 2.0/LGPL 2.13*4* The contents of this file are subject to the Netscape Public License5* Version 1.1 (the "License"); you may not use this file except in6* compliance with the License. You may obtain a copy of the License at7* http://www.mozilla.org/NPL/8*9* Software distributed under the License is distributed on an "AS IS" basis,10* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License11* for the specific language governing rights and limitations under the12* License.13*14* The Original Code is JavaScript Engine testing utilities.15*16* The Initial Developer of the Original Code is Netscape Communications Corp.17* Portions created by the Initial Developer are Copyright (C) 200218* the Initial Developer. All Rights Reserved.19*20* Contributor(s): pschwartau@netscape.com, rogerl@netscape.com21*22* Alternatively, the contents of this file may be used under the terms of23* either the GNU General Public License Version 2 or later (the "GPL"), or24* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),25* in which case the provisions of the GPL or the LGPL are applicable instead26* of those above. If you wish to allow use of your version of this file only27* under the terms of either the GPL or the LGPL, and not to allow others to28* use your version of this file under the terms of the NPL, indicate your29* decision by deleting the provisions above and replace them with the notice30* and other provisions required by the GPL or the LGPL. If you do not delete31* the provisions above, a recipient may use your version of this file under32* the terms of any one of the NPL, the GPL or the LGPL.33*34* ***** END LICENSE BLOCK *****35*36*37* Date: 2002-07-0738* SUMMARY: Testing JS RegExp engine against Perl 5 RegExp engine.39* Adjust cnLBOUND, cnUBOUND below to restrict which sections are tested.40*41* This test was created by running various patterns and strings through the42* Perl 5 RegExp engine. We saved the results below to test the JS engine.43*44* NOTE: ECMA/JS and Perl do differ on certain points. We have either commented45* out such sections altogether, or modified them to fit what we expect from JS.46*47* EXAMPLES:48*49* - In JS, regexp captures (/(a) etc./) must hold |undefined| if not used.50* See http://bugzilla.mozilla.org/show_bug.cgi?id=123437.51* By contrast, in Perl, unmatched captures hold the empty string.52* We have modified such sections accordingly. Example:53 pattern = /^([^a-z])|(\^)$/;54 string = '.';55 actualmatch = string.match(pattern);56 //expectedmatch = Array('.', '.', ''); <<<--- Perl57 expectedmatch = Array('.', '.', undefined); <<<--- JS58 addThis();59* - In JS, you can't refer to a capture before it's encountered & completed60*61* - Perl supports ] & ^] inside a [], ECMA does not62*63* - ECMA does support (?: (?= and (?! operators, but doesn't support (?< etc.64*65* - ECMA doesn't support (?imsx or (?-imsx66*67* - ECMA doesn't support (?(condition)68*69* - Perl has \Z has end-of-line, ECMA doesn't70*71* - In ECMA, ^ matches only the empty string before the first character72*73* - In ECMA, $ matches only the empty string at end of input (unless multiline)74*75* - ECMA spec says that each atom in a range must be a single character76*77* - ECMA doesn't support \A78*79* - ECMA doesn't have rules for [:80*81*/82//-----------------------------------------------------------------------------83var i = 0;84var bug = 85721;85var summary = 'Testing regular expression edge cases';86var cnSingleSpace = ' ';87var status = '';88var statusmessages = new Array();89var pattern = '';90var patterns = new Array();91var string = '';92var strings = new Array();93var actualmatch = '';94var actualmatches = new Array();95var expectedmatch = '';96var expectedmatches = new Array();97var cnLBOUND = 1;98var cnUBOUND = 1000;99status = inSection(1);100pattern = /abc/;101string = 'abc';102actualmatch = string.match(pattern);103expectedmatch = Array('abc');104addThis();105status = inSection(2);106pattern = /abc/;107string = 'xabcy';108actualmatch = string.match(pattern);109expectedmatch = Array('abc');110addThis();111status = inSection(3);112pattern = /abc/;113string = 'ababc';114actualmatch = string.match(pattern);115expectedmatch = Array('abc');116addThis();117status = inSection(4);118pattern = /ab*c/;119string = 'abc';120actualmatch = string.match(pattern);121expectedmatch = Array('abc');122addThis();123status = inSection(5);124pattern = /ab*bc/;125string = 'abc';126actualmatch = string.match(pattern);127expectedmatch = Array('abc');128addThis();129status = inSection(6);130pattern = /ab*bc/;131string = 'abbc';132actualmatch = string.match(pattern);133expectedmatch = Array('abbc');134addThis();135status = inSection(7);136pattern = /ab*bc/;137string = 'abbbbc';138actualmatch = string.match(pattern);139expectedmatch = Array('abbbbc');140addThis();141status = inSection(8);142pattern = /.{1}/;143string = 'abbbbc';144actualmatch = string.match(pattern);145expectedmatch = Array('a');146addThis();147status = inSection(9);148pattern = /.{3,4}/;149string = 'abbbbc';150actualmatch = string.match(pattern);151expectedmatch = Array('abbb');152addThis();153status = inSection(10);154pattern = /ab{0,}bc/;155string = 'abbbbc';156actualmatch = string.match(pattern);157expectedmatch = Array('abbbbc');158addThis();159status = inSection(11);160pattern = /ab+bc/;161string = 'abbc';162actualmatch = string.match(pattern);163expectedmatch = Array('abbc');164addThis();165status = inSection(12);166pattern = /ab+bc/;167string = 'abbbbc';168actualmatch = string.match(pattern);169expectedmatch = Array('abbbbc');170addThis();171status = inSection(13);172pattern = /ab{1,}bc/;173string = 'abbbbc';174actualmatch = string.match(pattern);175expectedmatch = Array('abbbbc');176addThis();177status = inSection(14);178pattern = /ab{1,3}bc/;179string = 'abbbbc';180actualmatch = string.match(pattern);181expectedmatch = Array('abbbbc');182addThis();183status = inSection(15);184pattern = /ab{3,4}bc/;185string = 'abbbbc';186actualmatch = string.match(pattern);187expectedmatch = Array('abbbbc');188addThis();189status = inSection(16);190pattern = /ab?bc/;191string = 'abbc';192actualmatch = string.match(pattern);193expectedmatch = Array('abbc');194addThis();195status = inSection(17);196pattern = /ab?bc/;197string = 'abc';198actualmatch = string.match(pattern);199expectedmatch = Array('abc');200addThis();201status = inSection(18);202pattern = /ab{0,1}bc/;203string = 'abc';204actualmatch = string.match(pattern);205expectedmatch = Array('abc');206addThis();207status = inSection(19);208pattern = /ab?c/;209string = 'abc';210actualmatch = string.match(pattern);211expectedmatch = Array('abc');212addThis();213status = inSection(20);214pattern = /ab{0,1}c/;215string = 'abc';216actualmatch = string.match(pattern);217expectedmatch = Array('abc');218addThis();219status = inSection(21);220pattern = /^abc$/;221string = 'abc';222actualmatch = string.match(pattern);223expectedmatch = Array('abc');224addThis();225status = inSection(22);226pattern = /^abc/;227string = 'abcc';228actualmatch = string.match(pattern);229expectedmatch = Array('abc');230addThis();231status = inSection(23);232pattern = /abc$/;233string = 'aabc';234actualmatch = string.match(pattern);235expectedmatch = Array('abc');236addThis();237status = inSection(24);238pattern = /^/;239string = 'abc';240actualmatch = string.match(pattern);241expectedmatch = Array('');242addThis();243status = inSection(25);244pattern = /$/;245string = 'abc';246actualmatch = string.match(pattern);247expectedmatch = Array('');248addThis();249status = inSection(26);250pattern = /a.c/;251string = 'abc';252actualmatch = string.match(pattern);253expectedmatch = Array('abc');254addThis();255status = inSection(27);256pattern = /a.c/;257string = 'axc';258actualmatch = string.match(pattern);259expectedmatch = Array('axc');260addThis();261status = inSection(28);262pattern = /a.*c/;263string = 'axyzc';264actualmatch = string.match(pattern);265expectedmatch = Array('axyzc');266addThis();267status = inSection(29);268pattern = /a[bc]d/;269string = 'abd';270actualmatch = string.match(pattern);271expectedmatch = Array('abd');272addThis();273status = inSection(30);274pattern = /a[b-d]e/;275string = 'ace';276actualmatch = string.match(pattern);277expectedmatch = Array('ace');278addThis();279status = inSection(31);280pattern = /a[b-d]/;281string = 'aac';282actualmatch = string.match(pattern);283expectedmatch = Array('ac');284addThis();285status = inSection(32);286pattern = /a[-b]/;287string = 'a-';288actualmatch = string.match(pattern);289expectedmatch = Array('a-');290addThis();291status = inSection(33);292pattern = /a[b-]/;293string = 'a-';294actualmatch = string.match(pattern);295expectedmatch = Array('a-');296addThis();297status = inSection(34);298pattern = /a]/;299string = 'a]';300actualmatch = string.match(pattern);301expectedmatch = Array('a]');302addThis();303/* Perl supports ] & ^] inside a [], ECMA does not304pattern = /a[]]b/;305status = inSection(35);306string = 'a]b';307actualmatch = string.match(pattern);308expectedmatch = Array('a]b');309addThis();310*/311status = inSection(36);312pattern = /a[^bc]d/;313string = 'aed';314actualmatch = string.match(pattern);315expectedmatch = Array('aed');316addThis();317status = inSection(37);318pattern = /a[^-b]c/;319string = 'adc';320actualmatch = string.match(pattern);321expectedmatch = Array('adc');322addThis();323/* Perl supports ] & ^] inside a [], ECMA does not324status = inSection(38);325pattern = /a[^]b]c/;326string = 'adc';327actualmatch = string.match(pattern);328expectedmatch = Array('adc');329addThis();330*/331status = inSection(39);332pattern = /\ba\b/;333string = 'a-';334actualmatch = string.match(pattern);335expectedmatch = Array('a');336addThis();337status = inSection(40);338pattern = /\ba\b/;339string = '-a';340actualmatch = string.match(pattern);341expectedmatch = Array('a');342addThis();343status = inSection(41);344pattern = /\ba\b/;345string = '-a-';346actualmatch = string.match(pattern);347expectedmatch = Array('a');348addThis();349status = inSection(42);350pattern = /\By\b/;351string = 'xy';352actualmatch = string.match(pattern);353expectedmatch = Array('y');354addThis();355status = inSection(43);356pattern = /\by\B/;357string = 'yz';358actualmatch = string.match(pattern);359expectedmatch = Array('y');360addThis();361status = inSection(44);362pattern = /\By\B/;363string = 'xyz';364actualmatch = string.match(pattern);365expectedmatch = Array('y');366addThis();367status = inSection(45);368pattern = /\w/;369string = 'a';370actualmatch = string.match(pattern);371expectedmatch = Array('a');372addThis();373status = inSection(46);374pattern = /\W/;375string = '-';376actualmatch = string.match(pattern);377expectedmatch = Array('-');378addThis();379status = inSection(47);380pattern = /a\Sb/;381string = 'a-b';382actualmatch = string.match(pattern);383expectedmatch = Array('a-b');384addThis();385status = inSection(48);386pattern = /\d/;387string = '1';388actualmatch = string.match(pattern);389expectedmatch = Array('1');390addThis();391status = inSection(49);392pattern = /\D/;393string = '-';394actualmatch = string.match(pattern);395expectedmatch = Array('-');396addThis();397status = inSection(50);398pattern = /[\w]/;399string = 'a';400actualmatch = string.match(pattern);401expectedmatch = Array('a');402addThis();403status = inSection(51);404pattern = /[\W]/;405string = '-';406actualmatch = string.match(pattern);407expectedmatch = Array('-');408addThis();409status = inSection(52);410pattern = /a[\S]b/;411string = 'a-b';412actualmatch = string.match(pattern);413expectedmatch = Array('a-b');414addThis();415status = inSection(53);416pattern = /[\d]/;417string = '1';418actualmatch = string.match(pattern);419expectedmatch = Array('1');420addThis();421status = inSection(54);422pattern = /[\D]/;423string = '-';424actualmatch = string.match(pattern);425expectedmatch = Array('-');426addThis();427status = inSection(55);428pattern = /ab|cd/;429string = 'abc';430actualmatch = string.match(pattern);431expectedmatch = Array('ab');432addThis();433status = inSection(56);434pattern = /ab|cd/;435string = 'abcd';436actualmatch = string.match(pattern);437expectedmatch = Array('ab');438addThis();439status = inSection(57);440pattern = /()ef/;441string = 'def';442actualmatch = string.match(pattern);443expectedmatch = Array('ef', '');444addThis();445status = inSection(58);446pattern = /a\(b/;447string = 'a(b';448actualmatch = string.match(pattern);449expectedmatch = Array('a(b');450addThis();451status = inSection(59);452pattern = /a\(*b/;453string = 'ab';454actualmatch = string.match(pattern);455expectedmatch = Array('ab');456addThis();457status = inSection(60);458pattern = /a\(*b/;459string = 'a((b';460actualmatch = string.match(pattern);461expectedmatch = Array('a((b');462addThis();463status = inSection(61);464pattern = /a\\b/;465string = 'a\\b';466actualmatch = string.match(pattern);467expectedmatch = Array('a\\b');468addThis();469status = inSection(62);470pattern = /((a))/;471string = 'abc';472actualmatch = string.match(pattern);473expectedmatch = Array('a', 'a', 'a');474addThis();475status = inSection(63);476pattern = /(a)b(c)/;477string = 'abc';478actualmatch = string.match(pattern);479expectedmatch = Array('abc', 'a', 'c');480addThis();481status = inSection(64);482pattern = /a+b+c/;483string = 'aabbabc';484actualmatch = string.match(pattern);485expectedmatch = Array('abc');486addThis();487status = inSection(65);488pattern = /a{1,}b{1,}c/;489string = 'aabbabc';490actualmatch = string.match(pattern);491expectedmatch = Array('abc');492addThis();493status = inSection(66);494pattern = /a.+?c/;495string = 'abcabc';496actualmatch = string.match(pattern);497expectedmatch = Array('abc');498addThis();499status = inSection(67);500pattern = /(a+|b)*/;501string = 'ab';502actualmatch = string.match(pattern);503expectedmatch = Array('ab', 'b');504addThis();505status = inSection(68);506pattern = /(a+|b){0,}/;507string = 'ab';508actualmatch = string.match(pattern);509expectedmatch = Array('ab', 'b');510addThis();511status = inSection(69);512pattern = /(a+|b)+/;513string = 'ab';514actualmatch = string.match(pattern);515expectedmatch = Array('ab', 'b');516addThis();517status = inSection(70);518pattern = /(a+|b){1,}/;519string = 'ab';520actualmatch = string.match(pattern);521expectedmatch = Array('ab', 'b');522addThis();523status = inSection(71);524pattern = /(a+|b)?/;525string = 'ab';526actualmatch = string.match(pattern);527expectedmatch = Array('a', 'a');528addThis();529status = inSection(72);530pattern = /(a+|b){0,1}/;531string = 'ab';532actualmatch = string.match(pattern);533expectedmatch = Array('a', 'a');534addThis();535status = inSection(73);536pattern = /[^ab]*/;537string = 'cde';538actualmatch = string.match(pattern);539expectedmatch = Array('cde');540addThis();541status = inSection(74);542pattern = /([abc])*d/;543string = 'abbbcd';544actualmatch = string.match(pattern);545expectedmatch = Array('abbbcd', 'c');546addThis();547status = inSection(75);548pattern = /([abc])*bcd/;549string = 'abcd';550actualmatch = string.match(pattern);551expectedmatch = Array('abcd', 'a');552addThis();553status = inSection(76);554pattern = /a|b|c|d|e/;555string = 'e';556actualmatch = string.match(pattern);557expectedmatch = Array('e');558addThis();559status = inSection(77);560pattern = /(a|b|c|d|e)f/;561string = 'ef';562actualmatch = string.match(pattern);563expectedmatch = Array('ef', 'e');564addThis();565status = inSection(78);566pattern = /abcd*efg/;567string = 'abcdefg';568actualmatch = string.match(pattern);569expectedmatch = Array('abcdefg');570addThis();571status = inSection(79);572pattern = /ab*/;573string = 'xabyabbbz';574actualmatch = string.match(pattern);575expectedmatch = Array('ab');576addThis();577status = inSection(80);578pattern = /ab*/;579string = 'xayabbbz';580actualmatch = string.match(pattern);581expectedmatch = Array('a');582addThis();583status = inSection(81);584pattern = /(ab|cd)e/;585string = 'abcde';586actualmatch = string.match(pattern);587expectedmatch = Array('cde', 'cd');588addThis();589status = inSection(82);590pattern = /[abhgefdc]ij/;591string = 'hij';592actualmatch = string.match(pattern);593expectedmatch = Array('hij');594addThis();595status = inSection(83);596pattern = /(abc|)ef/;597string = 'abcdef';598actualmatch = string.match(pattern);599expectedmatch = Array('ef', '');600addThis();601status = inSection(84);602pattern = /(a|b)c*d/;603string = 'abcd';604actualmatch = string.match(pattern);605expectedmatch = Array('bcd', 'b');606addThis();607status = inSection(85);608pattern = /(ab|ab*)bc/;609string = 'abc';610actualmatch = string.match(pattern);611expectedmatch = Array('abc', 'a');612addThis();613status = inSection(86);614pattern = /a([bc]*)c*/;615string = 'abc';616actualmatch = string.match(pattern);617expectedmatch = Array('abc', 'bc');618addThis();619status = inSection(87);620pattern = /a([bc]*)(c*d)/;621string = 'abcd';622actualmatch = string.match(pattern);623expectedmatch = Array('abcd', 'bc', 'd');624addThis();625status = inSection(88);626pattern = /a([bc]+)(c*d)/;627string = 'abcd';628actualmatch = string.match(pattern);629expectedmatch = Array('abcd', 'bc', 'd');630addThis();631status = inSection(89);632pattern = /a([bc]*)(c+d)/;633string = 'abcd';634actualmatch = string.match(pattern);635expectedmatch = Array('abcd', 'b', 'cd');636addThis();637status = inSection(90);638pattern = /a[bcd]*dcdcde/;639string = 'adcdcde';640actualmatch = string.match(pattern);641expectedmatch = Array('adcdcde');642addThis();643status = inSection(91);644pattern = /(ab|a)b*c/;645string = 'abc';646actualmatch = string.match(pattern);647expectedmatch = Array('abc', 'ab');648addThis();649status = inSection(92);650pattern = /((a)(b)c)(d)/;651string = 'abcd';652actualmatch = string.match(pattern);653expectedmatch = Array('abcd', 'abc', 'a', 'b', 'd');654addThis();655status = inSection(93);656pattern = /[a-zA-Z_][a-zA-Z0-9_]*/;657string = 'alpha';658actualmatch = string.match(pattern);659expectedmatch = Array('alpha');660addThis();661status = inSection(94);662pattern = /^a(bc+|b[eh])g|.h$/;663string = 'abh';664actualmatch = string.match(pattern);665expectedmatch = Array('bh', undefined);666addThis();667status = inSection(95);668pattern = /(bc+d$|ef*g.|h?i(j|k))/;669string = 'effgz';670actualmatch = string.match(pattern);671expectedmatch = Array('effgz', 'effgz', undefined);672addThis();673status = inSection(96);674pattern = /(bc+d$|ef*g.|h?i(j|k))/;675string = 'ij';676actualmatch = string.match(pattern);677expectedmatch = Array('ij', 'ij', 'j');678addThis();679status = inSection(97);680pattern = /(bc+d$|ef*g.|h?i(j|k))/;681string = 'reffgz';682actualmatch = string.match(pattern);683expectedmatch = Array('effgz', 'effgz', undefined);684addThis();685status = inSection(98);686pattern = /((((((((((a))))))))))/;687string = 'a';688actualmatch = string.match(pattern);689expectedmatch = Array('a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a');690addThis();691status = inSection(99);692pattern = /((((((((((a))))))))))\10/;693string = 'aa';694actualmatch = string.match(pattern);695expectedmatch = Array('aa', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a');696addThis();697status = inSection(100);698pattern = /((((((((((a))))))))))/;699string = 'a!';700actualmatch = string.match(pattern);701expectedmatch = Array('a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a');702addThis();703status = inSection(101);704pattern = /(((((((((a)))))))))/;705string = 'a';706actualmatch = string.match(pattern);707expectedmatch = Array('a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a');708addThis();709status = inSection(102);710pattern = /(.*)c(.*)/;711string = 'abcde';712actualmatch = string.match(pattern);713expectedmatch = Array('abcde', 'ab', 'de');714addThis();715status = inSection(103);716pattern = /abcd/;717string = 'abcd';718actualmatch = string.match(pattern);719expectedmatch = Array('abcd');720addThis();721status = inSection(104);722pattern = /a(bc)d/;723string = 'abcd';724actualmatch = string.match(pattern);725expectedmatch = Array('abcd', 'bc');726addThis();727status = inSection(105);728pattern = /a[-]?c/;729string = 'ac';730actualmatch = string.match(pattern);731expectedmatch = Array('ac');732addThis();733status = inSection(106);734pattern = /(abc)\1/;735string = 'abcabc';736actualmatch = string.match(pattern);737expectedmatch = Array('abcabc', 'abc');738addThis();739status = inSection(107);740pattern = /([a-c]*)\1/;741string = 'abcabc';742actualmatch = string.match(pattern);743expectedmatch = Array('abcabc', 'abc');744addThis();745status = inSection(108);746pattern = /(a)|\1/;747string = 'a';748actualmatch = string.match(pattern);749expectedmatch = Array('a', 'a');750addThis();751status = inSection(109);752pattern = /(([a-c])b*?\2)*/;753string = 'ababbbcbc';754actualmatch = string.match(pattern);755expectedmatch = Array('ababb', 'bb', 'b');756addThis();757status = inSection(110);758pattern = /(([a-c])b*?\2){3}/;759string = 'ababbbcbc';760actualmatch = string.match(pattern);761expectedmatch = Array('ababbbcbc', 'cbc', 'c');762addThis();763/* Can't refer to a capture before it's encountered & completed764status = inSection(111);765pattern = /((\3|b)\2(a)x)+/;766string = 'aaaxabaxbaaxbbax';767actualmatch = string.match(pattern);768expectedmatch = Array('bbax', 'bbax', 'b', 'a');769addThis();770status = inSection(112);771pattern = /((\3|b)\2(a)){2,}/;772string = 'bbaababbabaaaaabbaaaabba';773actualmatch = string.match(pattern);774expectedmatch = Array('bbaaaabba', 'bba', 'b', 'a');775addThis();776*/777status = inSection(113);778pattern = /abc/i;779string = 'ABC';780actualmatch = string.match(pattern);781expectedmatch = Array('ABC');782addThis();783status = inSection(114);784pattern = /abc/i;785string = 'XABCY';786actualmatch = string.match(pattern);787expectedmatch = Array('ABC');788addThis();789status = inSection(115);790pattern = /abc/i;791string = 'ABABC';792actualmatch = string.match(pattern);793expectedmatch = Array('ABC');794addThis();795status = inSection(116);796pattern = /ab*c/i;797string = 'ABC';798actualmatch = string.match(pattern);799expectedmatch = Array('ABC');800addThis();801status = inSection(117);802pattern = /ab*bc/i;803string = 'ABC';804actualmatch = string.match(pattern);805expectedmatch = Array('ABC');806addThis();807status = inSection(118);808pattern = /ab*bc/i;809string = 'ABBC';810actualmatch = string.match(pattern);811expectedmatch = Array('ABBC');812addThis();813status = inSection(119);814pattern = /ab*?bc/i;815string = 'ABBBBC';816actualmatch = string.match(pattern);817expectedmatch = Array('ABBBBC');818addThis();819status = inSection(120);820pattern = /ab{0,}?bc/i;821string = 'ABBBBC';822actualmatch = string.match(pattern);823expectedmatch = Array('ABBBBC');824addThis();825status = inSection(121);826pattern = /ab+?bc/i;827string = 'ABBC';828actualmatch = string.match(pattern);829expectedmatch = Array('ABBC');830addThis();831status = inSection(122);832pattern = /ab+bc/i;833string = 'ABBBBC';834actualmatch = string.match(pattern);835expectedmatch = Array('ABBBBC');836addThis();837status = inSection(123);838pattern = /ab{1,}?bc/i;839string = 'ABBBBC';840actualmatch = string.match(pattern);841expectedmatch = Array('ABBBBC');842addThis();843status = inSection(124);844pattern = /ab{1,3}?bc/i;845string = 'ABBBBC';846actualmatch = string.match(pattern);847expectedmatch = Array('ABBBBC');848addThis();849status = inSection(125);850pattern = /ab{3,4}?bc/i;851string = 'ABBBBC';852actualmatch = string.match(pattern);853expectedmatch = Array('ABBBBC');854addThis();855status = inSection(126);856pattern = /ab??bc/i;857string = 'ABBC';858actualmatch = string.match(pattern);859expectedmatch = Array('ABBC');860addThis();861status = inSection(127);862pattern = /ab??bc/i;863string = 'ABC';864actualmatch = string.match(pattern);865expectedmatch = Array('ABC');866addThis();867status = inSection(128);868pattern = /ab{0,1}?bc/i;869string = 'ABC';870actualmatch = string.match(pattern);871expectedmatch = Array('ABC');872addThis();873status = inSection(129);874pattern = /ab??c/i;875string = 'ABC';876actualmatch = string.match(pattern);877expectedmatch = Array('ABC');878addThis();879status = inSection(130);880pattern = /ab{0,1}?c/i;881string = 'ABC';882actualmatch = string.match(pattern);883expectedmatch = Array('ABC');884addThis();885status = inSection(131);886pattern = /^abc$/i;887string = 'ABC';888actualmatch = string.match(pattern);889expectedmatch = Array('ABC');890addThis();891status = inSection(132);892pattern = /^abc/i;893string = 'ABCC';894actualmatch = string.match(pattern);895expectedmatch = Array('ABC');896addThis();897status = inSection(133);898pattern = /abc$/i;899string = 'AABC';900actualmatch = string.match(pattern);901expectedmatch = Array('ABC');902addThis();903status = inSection(134);904pattern = /^/i;905string = 'ABC';906actualmatch = string.match(pattern);907expectedmatch = Array('');908addThis();909status = inSection(135);910pattern = /$/i;911string = 'ABC';912actualmatch = string.match(pattern);913expectedmatch = Array('');914addThis();915status = inSection(136);916pattern = /a.c/i;917string = 'ABC';918actualmatch = string.match(pattern);919expectedmatch = Array('ABC');920addThis();921status = inSection(137);922pattern = /a.c/i;923string = 'AXC';924actualmatch = string.match(pattern);925expectedmatch = Array('AXC');926addThis();927status = inSection(138);928pattern = /a.*?c/i;929string = 'AXYZC';930actualmatch = string.match(pattern);931expectedmatch = Array('AXYZC');932addThis();933status = inSection(139);934pattern = /a[bc]d/i;935string = 'ABD';936actualmatch = string.match(pattern);937expectedmatch = Array('ABD');938addThis();939status = inSection(140);940pattern = /a[b-d]e/i;941string = 'ACE';942actualmatch = string.match(pattern);943expectedmatch = Array('ACE');944addThis();945status = inSection(141);946pattern = /a[b-d]/i;947string = 'AAC';948actualmatch = string.match(pattern);949expectedmatch = Array('AC');950addThis();951status = inSection(142);952pattern = /a[-b]/i;953string = 'A-';954actualmatch = string.match(pattern);955expectedmatch = Array('A-');956addThis();957status = inSection(143);958pattern = /a[b-]/i;959string = 'A-';960actualmatch = string.match(pattern);961expectedmatch = Array('A-');962addThis();963status = inSection(144);964pattern = /a]/i;965string = 'A]';966actualmatch = string.match(pattern);967expectedmatch = Array('A]');968addThis();969/* Perl supports ] & ^] inside a [], ECMA does not970status = inSection(145);971pattern = /a[]]b/i;972string = 'A]B';973actualmatch = string.match(pattern);974expectedmatch = Array('A]B');975addThis();976*/977status = inSection(146);978pattern = /a[^bc]d/i;979string = 'AED';980actualmatch = string.match(pattern);981expectedmatch = Array('AED');982addThis();983status = inSection(147);984pattern = /a[^-b]c/i;985string = 'ADC';986actualmatch = string.match(pattern);987expectedmatch = Array('ADC');988addThis();989/* Perl supports ] & ^] inside a [], ECMA does not990status = inSection(148);991pattern = /a[^]b]c/i;992string = 'ADC';993actualmatch = string.match(pattern);994expectedmatch = Array('ADC');995addThis();996*/997status = inSection(149);998pattern = /ab|cd/i;999string = 'ABC';1000actualmatch = string.match(pattern);1001expectedmatch = Array('AB');1002addThis();1003status = inSection(150);1004pattern = /ab|cd/i;1005string = 'ABCD';1006actualmatch = string.match(pattern);1007expectedmatch = Array('AB');1008addThis();1009status = inSection(151);1010pattern = /()ef/i;1011string = 'DEF';1012actualmatch = string.match(pattern);1013expectedmatch = Array('EF', '');1014addThis();1015status = inSection(152);1016pattern = /a\(b/i;1017string = 'A(B';1018actualmatch = string.match(pattern);1019expectedmatch = Array('A(B');1020addThis();1021status = inSection(153);1022pattern = /a\(*b/i;1023string = 'AB';1024actualmatch = string.match(pattern);1025expectedmatch = Array('AB');1026addThis();1027status = inSection(154);1028pattern = /a\(*b/i;1029string = 'A((B';1030actualmatch = string.match(pattern);1031expectedmatch = Array('A((B');1032addThis();1033status = inSection(155);1034pattern = /a\\b/i;1035string = 'A\\B';1036actualmatch = string.match(pattern);1037expectedmatch = Array('A\\B');1038addThis();1039status = inSection(156);1040pattern = /((a))/i;1041string = 'ABC';1042actualmatch = string.match(pattern);1043expectedmatch = Array('A', 'A', 'A');1044addThis();1045status = inSection(157);1046pattern = /(a)b(c)/i;1047string = 'ABC';1048actualmatch = string.match(pattern);1049expectedmatch = Array('ABC', 'A', 'C');1050addThis();1051status = inSection(158);1052pattern = /a+b+c/i;1053string = 'AABBABC';1054actualmatch = string.match(pattern);1055expectedmatch = Array('ABC');1056addThis();1057status = inSection(159);1058pattern = /a{1,}b{1,}c/i;1059string = 'AABBABC';1060actualmatch = string.match(pattern);1061expectedmatch = Array('ABC');1062addThis();1063status = inSection(160);1064pattern = /a.+?c/i;1065string = 'ABCABC';1066actualmatch = string.match(pattern);1067expectedmatch = Array('ABC');1068addThis();1069status = inSection(161);1070pattern = /a.*?c/i;1071string = 'ABCABC';1072actualmatch = string.match(pattern);1073expectedmatch = Array('ABC');1074addThis();1075status = inSection(162);1076pattern = /a.{0,5}?c/i;1077string = 'ABCABC';1078actualmatch = string.match(pattern);1079expectedmatch = Array('ABC');1080addThis();1081status = inSection(163);1082pattern = /(a+|b)*/i;1083string = 'AB';1084actualmatch = string.match(pattern);1085expectedmatch = Array('AB', 'B');1086addThis();1087status = inSection(164);1088pattern = /(a+|b){0,}/i;1089string = 'AB';1090actualmatch = string.match(pattern);1091expectedmatch = Array('AB', 'B');1092addThis();1093status = inSection(165);1094pattern = /(a+|b)+/i;1095string = 'AB';1096actualmatch = string.match(pattern);1097expectedmatch = Array('AB', 'B');1098addThis();1099status = inSection(166);1100pattern = /(a+|b){1,}/i;1101string = 'AB';1102actualmatch = string.match(pattern);1103expectedmatch = Array('AB', 'B');1104addThis();1105status = inSection(167);1106pattern = /(a+|b)?/i;1107string = 'AB';1108actualmatch = string.match(pattern);1109expectedmatch = Array('A', 'A');1110addThis();1111status = inSection(168);1112pattern = /(a+|b){0,1}/i;1113string = 'AB';1114actualmatch = string.match(pattern);1115expectedmatch = Array('A', 'A');1116addThis();1117status = inSection(169);1118pattern = /(a+|b){0,1}?/i;1119string = 'AB';1120actualmatch = string.match(pattern);1121expectedmatch = Array('', undefined);1122addThis();1123status = inSection(170);1124pattern = /[^ab]*/i;1125string = 'CDE';1126actualmatch = string.match(pattern);1127expectedmatch = Array('CDE');1128addThis();1129status = inSection(171);1130pattern = /([abc])*d/i;1131string = 'ABBBCD';1132actualmatch = string.match(pattern);1133expectedmatch = Array('ABBBCD', 'C');1134addThis();1135status = inSection(172);1136pattern = /([abc])*bcd/i;1137string = 'ABCD';1138actualmatch = string.match(pattern);1139expectedmatch = Array('ABCD', 'A');1140addThis();1141status = inSection(173);1142pattern = /a|b|c|d|e/i;1143string = 'E';1144actualmatch = string.match(pattern);1145expectedmatch = Array('E');1146addThis();1147status = inSection(174);1148pattern = /(a|b|c|d|e)f/i;1149string = 'EF';1150actualmatch = string.match(pattern);1151expectedmatch = Array('EF', 'E');1152addThis();1153status = inSection(175);1154pattern = /abcd*efg/i;1155string = 'ABCDEFG';1156actualmatch = string.match(pattern);1157expectedmatch = Array('ABCDEFG');1158addThis();1159status = inSection(176);1160pattern = /ab*/i;1161string = 'XABYABBBZ';1162actualmatch = string.match(pattern);1163expectedmatch = Array('AB');1164addThis();1165status = inSection(177);1166pattern = /ab*/i;1167string = 'XAYABBBZ';1168actualmatch = string.match(pattern);1169expectedmatch = Array('A');1170addThis();1171status = inSection(178);1172pattern = /(ab|cd)e/i;1173string = 'ABCDE';1174actualmatch = string.match(pattern);1175expectedmatch = Array('CDE', 'CD');1176addThis();1177status = inSection(179);1178pattern = /[abhgefdc]ij/i;1179string = 'HIJ';1180actualmatch = string.match(pattern);1181expectedmatch = Array('HIJ');1182addThis();1183status = inSection(180);1184pattern = /(abc|)ef/i;1185string = 'ABCDEF';1186actualmatch = string.match(pattern);1187expectedmatch = Array('EF', '');1188addThis();1189status = inSection(181);1190pattern = /(a|b)c*d/i;1191string = 'ABCD';1192actualmatch = string.match(pattern);1193expectedmatch = Array('BCD', 'B');1194addThis();1195status = inSection(182);1196pattern = /(ab|ab*)bc/i;1197string = 'ABC';1198actualmatch = string.match(pattern);1199expectedmatch = Array('ABC', 'A');1200addThis();1201status = inSection(183);1202pattern = /a([bc]*)c*/i;1203string = 'ABC';1204actualmatch = string.match(pattern);1205expectedmatch = Array('ABC', 'BC');1206addThis();1207status = inSection(184);1208pattern = /a([bc]*)(c*d)/i;1209string = 'ABCD';1210actualmatch = string.match(pattern);1211expectedmatch = Array('ABCD', 'BC', 'D');1212addThis();1213status = inSection(185);1214pattern = /a([bc]+)(c*d)/i;1215string = 'ABCD';1216actualmatch = string.match(pattern);1217expectedmatch = Array('ABCD', 'BC', 'D');1218addThis();1219status = inSection(186);1220pattern = /a([bc]*)(c+d)/i;1221string = 'ABCD';1222actualmatch = string.match(pattern);1223expectedmatch = Array('ABCD', 'B', 'CD');1224addThis();1225status = inSection(187);1226pattern = /a[bcd]*dcdcde/i;1227string = 'ADCDCDE';1228actualmatch = string.match(pattern);1229expectedmatch = Array('ADCDCDE');1230addThis();1231status = inSection(188);1232pattern = /(ab|a)b*c/i;1233string = 'ABC';1234actualmatch = string.match(pattern);1235expectedmatch = Array('ABC', 'AB');1236addThis();1237status = inSection(189);1238pattern = /((a)(b)c)(d)/i;1239string = 'ABCD';1240actualmatch = string.match(pattern);1241expectedmatch = Array('ABCD', 'ABC', 'A', 'B', 'D');1242addThis();1243status = inSection(190);1244pattern = /[a-zA-Z_][a-zA-Z0-9_]*/i;1245string = 'ALPHA';1246actualmatch = string.match(pattern);1247expectedmatch = Array('ALPHA');1248addThis();1249status = inSection(191);1250pattern = /^a(bc+|b[eh])g|.h$/i;1251string = 'ABH';1252actualmatch = string.match(pattern);1253expectedmatch = Array('BH', undefined);1254addThis();1255status = inSection(192);1256pattern = /(bc+d$|ef*g.|h?i(j|k))/i;1257string = 'EFFGZ';1258actualmatch = string.match(pattern);1259expectedmatch = Array('EFFGZ', 'EFFGZ', undefined);1260addThis();1261status = inSection(193);1262pattern = /(bc+d$|ef*g.|h?i(j|k))/i;1263string = 'IJ';1264actualmatch = string.match(pattern);1265expectedmatch = Array('IJ', 'IJ', 'J');1266addThis();1267status = inSection(194);1268pattern = /(bc+d$|ef*g.|h?i(j|k))/i;1269string = 'REFFGZ';1270actualmatch = string.match(pattern);1271expectedmatch = Array('EFFGZ', 'EFFGZ', undefined);1272addThis();1273status = inSection(195);1274pattern = /((((((((((a))))))))))/i;1275string = 'A';1276actualmatch = string.match(pattern);1277expectedmatch = Array('A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A');1278addThis();1279status = inSection(196);1280pattern = /((((((((((a))))))))))\10/i;1281string = 'AA';1282actualmatch = string.match(pattern);1283expectedmatch = Array('AA', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A');1284addThis();1285status = inSection(197);1286pattern = /((((((((((a))))))))))/i;1287string = 'A!';1288actualmatch = string.match(pattern);1289expectedmatch = Array('A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A');1290addThis();1291status = inSection(198);1292pattern = /(((((((((a)))))))))/i;1293string = 'A';1294actualmatch = string.match(pattern);1295expectedmatch = Array('A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A');1296addThis();1297status = inSection(199);1298pattern = /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i;1299string = 'A';1300actualmatch = string.match(pattern);1301expectedmatch = Array('A', 'A');1302addThis();1303status = inSection(200);1304pattern = /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i;1305string = 'C';1306actualmatch = string.match(pattern);1307expectedmatch = Array('C', 'C');1308addThis();1309status = inSection(201);1310pattern = /(.*)c(.*)/i;1311string = 'ABCDE';1312actualmatch = string.match(pattern);1313expectedmatch = Array('ABCDE', 'AB', 'DE');1314addThis();1315status = inSection(202);1316pattern = /abcd/i;1317string = 'ABCD';1318actualmatch = string.match(pattern);1319expectedmatch = Array('ABCD');1320addThis();1321status = inSection(203);1322pattern = /a(bc)d/i;1323string = 'ABCD';1324actualmatch = string.match(pattern);1325expectedmatch = Array('ABCD', 'BC');1326addThis();1327status = inSection(204);1328pattern = /a[-]?c/i;1329string = 'AC';1330actualmatch = string.match(pattern);1331expectedmatch = Array('AC');1332addThis();1333status = inSection(205);1334pattern = /(abc)\1/i;1335string = 'ABCABC';1336actualmatch = string.match(pattern);1337expectedmatch = Array('ABCABC', 'ABC');1338addThis();1339status = inSection(206);1340pattern = /([a-c]*)\1/i;1341string = 'ABCABC';1342actualmatch = string.match(pattern);1343expectedmatch = Array('ABCABC', 'ABC');1344addThis();1345status = inSection(207);1346pattern = /a(?!b)./;1347string = 'abad';1348actualmatch = string.match(pattern);1349expectedmatch = Array('ad');1350addThis();1351status = inSection(208);1352pattern = /a(?=d)./;1353string = 'abad';1354actualmatch = string.match(pattern);1355expectedmatch = Array('ad');1356addThis();1357status = inSection(209);1358pattern = /a(?=c|d)./;1359string = 'abad';1360actualmatch = string.match(pattern);1361expectedmatch = Array('ad');1362addThis();1363status = inSection(210);1364pattern = /a(?:b|c|d)(.)/;1365string = 'ace';1366actualmatch = string.match(pattern);1367expectedmatch = Array('ace', 'e');1368addThis();1369status = inSection(211);1370pattern = /a(?:b|c|d)*(.)/;1371string = 'ace';1372actualmatch = string.match(pattern);1373expectedmatch = Array('ace', 'e');1374addThis();1375status = inSection(212);1376pattern = /a(?:b|c|d)+?(.)/;1377string = 'ace';1378actualmatch = string.match(pattern);1379expectedmatch = Array('ace', 'e');1380addThis();1381status = inSection(213);1382pattern = /a(?:b|c|d)+?(.)/;1383string = 'acdbcdbe';1384actualmatch = string.match(pattern);1385expectedmatch = Array('acd', 'd');1386addThis();1387status = inSection(214);1388pattern = /a(?:b|c|d)+(.)/;1389string = 'acdbcdbe';1390actualmatch = string.match(pattern);1391expectedmatch = Array('acdbcdbe', 'e');1392addThis();1393status = inSection(215);1394pattern = /a(?:b|c|d){2}(.)/;1395string = 'acdbcdbe';1396actualmatch = string.match(pattern);1397expectedmatch = Array('acdb', 'b');1398addThis();1399status = inSection(216);1400pattern = /a(?:b|c|d){4,5}(.)/;1401string = 'acdbcdbe';1402actualmatch = string.match(pattern);1403expectedmatch = Array('acdbcdb', 'b');1404addThis();1405status = inSection(217);1406pattern = /a(?:b|c|d){4,5}?(.)/;1407string = 'acdbcdbe';1408actualmatch = string.match(pattern);1409expectedmatch = Array('acdbcd', 'd');1410addThis();1411// MODIFIED - ECMA has different rules for paren contents1412status = inSection(218);1413pattern = /((foo)|(bar))*/;1414string = 'foobar';1415actualmatch = string.match(pattern);1416//expectedmatch = Array('foobar', 'bar', 'foo', 'bar');1417expectedmatch = Array('foobar', 'bar', undefined, 'bar');1418addThis();1419status = inSection(219);1420pattern = /a(?:b|c|d){6,7}(.)/;1421string = 'acdbcdbe';1422actualmatch = string.match(pattern);1423expectedmatch = Array('acdbcdbe', 'e');1424addThis();1425status = inSection(220);1426pattern = /a(?:b|c|d){6,7}?(.)/;1427string = 'acdbcdbe';1428actualmatch = string.match(pattern);1429expectedmatch = Array('acdbcdbe', 'e');1430addThis();1431status = inSection(221);1432pattern = /a(?:b|c|d){5,6}(.)/;1433string = 'acdbcdbe';1434actualmatch = string.match(pattern);1435expectedmatch = Array('acdbcdbe', 'e');1436addThis();1437status = inSection(222);1438pattern = /a(?:b|c|d){5,6}?(.)/;1439string = 'acdbcdbe';1440actualmatch = string.match(pattern);1441expectedmatch = Array('acdbcdb', 'b');1442addThis();1443status = inSection(223);1444pattern = /a(?:b|c|d){5,7}(.)/;1445string = 'acdbcdbe';1446actualmatch = string.match(pattern);1447expectedmatch = Array('acdbcdbe', 'e');1448addThis();1449status = inSection(224);1450pattern = /a(?:b|c|d){5,7}?(.)/;1451string = 'acdbcdbe';1452actualmatch = string.match(pattern);1453expectedmatch = Array('acdbcdb', 'b');1454addThis();1455status = inSection(225);1456pattern = /a(?:b|(c|e){1,2}?|d)+?(.)/;1457string = 'ace';1458actualmatch = string.match(pattern);1459expectedmatch = Array('ace', 'c', 'e');1460addThis();1461status = inSection(226);1462pattern = /^(.+)?B/;1463string = 'AB';1464actualmatch = string.match(pattern);1465expectedmatch = Array('AB', 'A');1466addThis();1467/* MODIFIED - ECMA has different rules for paren contents */1468status = inSection(227);1469pattern = /^([^a-z])|(\^)$/;1470string = '.';1471actualmatch = string.match(pattern);1472//expectedmatch = Array('.', '.', '');1473expectedmatch = Array('.', '.', undefined);1474addThis();1475status = inSection(228);1476pattern = /^[<>]&/;1477string = '<&OUT';1478actualmatch = string.match(pattern);1479expectedmatch = Array('<&');1480addThis();1481/* Can't refer to a capture before it's encountered & completed1482status = inSection(229);1483pattern = /^(a\1?){4}$/;1484string = 'aaaaaaaaaa';1485actualmatch = string.match(pattern);1486expectedmatch = Array('aaaaaaaaaa', 'aaaa');1487addThis();1488status = inSection(230);1489pattern = /^(a(?(1)\1)){4}$/;1490string = 'aaaaaaaaaa';1491actualmatch = string.match(pattern);1492expectedmatch = Array('aaaaaaaaaa', 'aaaa');1493addThis();1494*/1495status = inSection(231);1496pattern = /((a{4})+)/;1497string = 'aaaaaaaaa';1498actualmatch = string.match(pattern);1499expectedmatch = Array('aaaaaaaa', 'aaaaaaaa', 'aaaa');1500addThis();1501status = inSection(232);1502pattern = /(((aa){2})+)/;1503string = 'aaaaaaaaaa';1504actualmatch = string.match(pattern);1505expectedmatch = Array('aaaaaaaa', 'aaaaaaaa', 'aaaa', 'aa');1506addThis();1507status = inSection(233);1508pattern = /(((a{2}){2})+)/;1509string = 'aaaaaaaaaa';1510actualmatch = string.match(pattern);1511expectedmatch = Array('aaaaaaaa', 'aaaaaaaa', 'aaaa', 'aa');1512addThis();1513status = inSection(234);1514pattern = /(?:(f)(o)(o)|(b)(a)(r))*/;1515string = 'foobar';1516actualmatch = string.match(pattern);1517//expectedmatch = Array('foobar', 'f', 'o', 'o', 'b', 'a', 'r');1518expectedmatch = Array('foobar', undefined, undefined, undefined, 'b', 'a', 'r');1519addThis();1520/* ECMA supports (?: (?= and (?! but doesn't support (?< etc.1521status = inSection(235);1522pattern = /(?<=a)b/;1523string = 'ab';1524actualmatch = string.match(pattern);1525expectedmatch = Array('b');1526addThis();1527status = inSection(236);1528pattern = /(?<!c)b/;1529string = 'ab';1530actualmatch = string.match(pattern);1531expectedmatch = Array('b');1532addThis();1533status = inSection(237);1534pattern = /(?<!c)b/;1535string = 'b';1536actualmatch = string.match(pattern);1537expectedmatch = Array('b');1538addThis();1539status = inSection(238);1540pattern = /(?<!c)b/;1541string = 'b';1542actualmatch = string.match(pattern);1543expectedmatch = Array('b');1544addThis();1545*/1546status = inSection(239);1547pattern = /(?:..)*a/;1548string = 'aba';1549actualmatch = string.match(pattern);1550expectedmatch = Array('aba');1551addThis();1552status = inSection(240);1553pattern = /(?:..)*?a/;1554string = 'aba';1555actualmatch = string.match(pattern);1556expectedmatch = Array('a');1557addThis();1558/*1559 * MODIFIED - ECMA has different rules for paren contents. Note1560 * this regexp has two non-capturing parens, and one capturing1561 *1562 * The issue: shouldn't the match be ['ab', undefined]? Because the1563 * '\1' matches the undefined value of the second iteration of the '*'1564 * (in which the 'b' part of the '|' matches). But Perl wants ['ab','b'].1565 *1566 * Answer: waldemar@netscape.com:1567 *1568 * The correct answer is ['ab', undefined]. Perl doesn't match1569 * ECMAScript here, and I'd say that Perl is wrong in this case.1570 */1571status = inSection(241);1572pattern = /^(?:b|a(?=(.)))*\1/;1573string = 'abc';1574actualmatch = string.match(pattern);1575//expectedmatch = Array('ab', 'b');1576expectedmatch = Array('ab', undefined);1577addThis();1578status = inSection(242);1579pattern = /^(){3,5}/;1580string = 'abc';1581actualmatch = string.match(pattern);1582expectedmatch = Array('', '');1583addThis();1584status = inSection(243);1585pattern = /^(a+)*ax/;1586string = 'aax';1587actualmatch = string.match(pattern);1588expectedmatch = Array('aax', 'a');1589addThis();1590status = inSection(244);1591pattern = /^((a|b)+)*ax/;1592string = 'aax';1593actualmatch = string.match(pattern);1594expectedmatch = Array('aax', 'a', 'a');1595addThis();1596status = inSection(245);1597pattern = /^((a|bc)+)*ax/;1598string = 'aax';1599actualmatch = string.match(pattern);1600expectedmatch = Array('aax', 'a', 'a');1601addThis();1602/* MODIFIED - ECMA has different rules for paren contents */1603status = inSection(246);1604pattern = /(a|x)*ab/;1605string = 'cab';1606actualmatch = string.match(pattern);1607//expectedmatch = Array('ab', '');1608expectedmatch = Array('ab', undefined);1609addThis();1610status = inSection(247);1611pattern = /(a)*ab/;1612string = 'cab';1613actualmatch = string.match(pattern);1614expectedmatch = Array('ab', undefined);1615addThis();1616/* ECMA doesn't support (?imsx or (?-imsx1617status = inSection(248);1618pattern = /(?:(?i)a)b/;1619string = 'ab';1620actualmatch = string.match(pattern);1621expectedmatch = Array('ab');1622addThis();1623status = inSection(249);1624pattern = /((?i)a)b/;1625string = 'ab';1626actualmatch = string.match(pattern);1627expectedmatch = Array('ab', 'a');1628addThis();1629status = inSection(250);1630pattern = /(?:(?i)a)b/;1631string = 'Ab';1632actualmatch = string.match(pattern);1633expectedmatch = Array('Ab');1634addThis();1635status = inSection(251);1636pattern = /((?i)a)b/;1637string = 'Ab';1638actualmatch = string.match(pattern);1639expectedmatch = Array('Ab', 'A');1640addThis();1641status = inSection(252);1642pattern = /(?i:a)b/;1643string = 'ab';1644actualmatch = string.match(pattern);1645expectedmatch = Array('ab');1646addThis();1647status = inSection(253);1648pattern = /((?i:a))b/;1649string = 'ab';1650actualmatch = string.match(pattern);1651expectedmatch = Array('ab', 'a');1652addThis();1653status = inSection(254);1654pattern = /(?i:a)b/;1655string = 'Ab';1656actualmatch = string.match(pattern);1657expectedmatch = Array('Ab');1658addThis();1659status = inSection(255);1660pattern = /((?i:a))b/;1661string = 'Ab';1662actualmatch = string.match(pattern);1663expectedmatch = Array('Ab', 'A');1664addThis();1665status = inSection(256);1666pattern = /(?:(?-i)a)b/i;1667string = 'ab';1668actualmatch = string.match(pattern);1669expectedmatch = Array('ab');1670addThis();1671status = inSection(257);1672pattern = /((?-i)a)b/i;1673string = 'ab';1674actualmatch = string.match(pattern);1675expectedmatch = Array('ab', 'a');1676addThis();1677status = inSection(258);1678pattern = /(?:(?-i)a)b/i;1679string = 'aB';1680actualmatch = string.match(pattern);1681expectedmatch = Array('aB');1682addThis();1683status = inSection(259);1684pattern = /((?-i)a)b/i;1685string = 'aB';1686actualmatch = string.match(pattern);1687expectedmatch = Array('aB', 'a');1688addThis();1689status = inSection(260);1690pattern = /(?:(?-i)a)b/i;1691string = 'aB';1692actualmatch = string.match(pattern);1693expectedmatch = Array('aB');1694addThis();1695status = inSection(261);1696pattern = /((?-i)a)b/i;1697string = 'aB';1698actualmatch = string.match(pattern);1699expectedmatch = Array('aB', 'a');1700addThis();1701status = inSection(262);1702pattern = /(?-i:a)b/i;1703string = 'ab';1704actualmatch = string.match(pattern);1705expectedmatch = Array('ab');1706addThis();1707status = inSection(263);1708pattern = /((?-i:a))b/i;1709string = 'ab';1710actualmatch = string.match(pattern);1711expectedmatch = Array('ab', 'a');1712addThis();1713status = inSection(264);1714pattern = /(?-i:a)b/i;1715string = 'aB';1716actualmatch = string.match(pattern);1717expectedmatch = Array('aB');1718addThis();1719status = inSection(265);1720pattern = /((?-i:a))b/i;1721string = 'aB';1722actualmatch = string.match(pattern);1723expectedmatch = Array('aB', 'a');1724addThis();1725status = inSection(266);1726pattern = /(?-i:a)b/i;1727string = 'aB';1728actualmatch = string.match(pattern);1729expectedmatch = Array('aB');1730addThis();1731status = inSection(267);1732pattern = /((?-i:a))b/i;1733string = 'aB';1734actualmatch = string.match(pattern);1735expectedmatch = Array('aB', 'a');1736addThis();1737status = inSection(268);1738pattern = /((?s-i:a.))b/i;1739string = 'a\nB';1740actualmatch = string.match(pattern);1741expectedmatch = Array('a\nB', 'a\n');1742addThis();1743*/1744status = inSection(269);1745pattern = /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/;1746string = 'cabbbb';1747actualmatch = string.match(pattern);1748expectedmatch = Array('cabbbb');1749addThis();1750status = inSection(270);1751pattern = /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/;1752string = 'caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb';1753actualmatch = string.match(pattern);1754expectedmatch = Array('caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb');1755addThis();1756status = inSection(271);1757pattern = /(ab)\d\1/i;1758string = 'Ab4ab';1759actualmatch = string.match(pattern);1760expectedmatch = Array('Ab4ab', 'Ab');1761addThis();1762status = inSection(272);1763pattern = /(ab)\d\1/i;1764string = 'ab4Ab';1765actualmatch = string.match(pattern);1766expectedmatch = Array('ab4Ab', 'ab');1767addThis();1768status = inSection(273);1769pattern = /foo\w*\d{4}baz/;1770string = 'foobar1234baz';1771actualmatch = string.match(pattern);1772expectedmatch = Array('foobar1234baz');1773addThis();1774status = inSection(274);1775pattern = /x(~~)*(?:(?:F)?)?/;1776string = 'x~~';1777actualmatch = string.match(pattern);1778expectedmatch = Array('x~~', '~~');1779addThis();1780/* Perl supports (?# but JS doesn't1781status = inSection(275);1782pattern = /^a(?#xxx){3}c/;1783string = 'aaac';1784actualmatch = string.match(pattern);1785expectedmatch = Array('aaac');1786addThis();1787*/1788/* ECMA doesn't support (?< etc1789status = inSection(276);1790pattern = /(?<![cd])[ab]/;1791string = 'dbaacb';1792actualmatch = string.match(pattern);1793expectedmatch = Array('a');1794addThis();1795status = inSection(277);1796pattern = /(?<!(c|d))[ab]/;1797string = 'dbaacb';1798actualmatch = string.match(pattern);1799expectedmatch = Array('a');1800addThis();1801status = inSection(278);1802pattern = /(?<!cd)[ab]/;1803string = 'cdaccb';1804actualmatch = string.match(pattern);1805expectedmatch = Array('b');1806addThis();1807status = inSection(279);1808pattern = /((?s)^a(.))((?m)^b$)/;1809string = 'a\nb\nc\n';1810actualmatch = string.match(pattern);1811expectedmatch = Array('a\nb', 'a\n', '\n', 'b');1812addThis();1813status = inSection(280);1814pattern = /((?m)^b$)/;1815string = 'a\nb\nc\n';1816actualmatch = string.match(pattern);1817expectedmatch = Array('b', 'b');1818addThis();1819status = inSection(281);1820pattern = /(?m)^b/;1821string = 'a\nb\n';1822actualmatch = string.match(pattern);1823expectedmatch = Array('b');1824addThis();1825status = inSection(282);1826pattern = /(?m)^(b)/;1827string = 'a\nb\n';1828actualmatch = string.match(pattern);1829expectedmatch = Array('b', 'b');1830addThis();1831status = inSection(283);1832pattern = /((?m)^b)/;1833string = 'a\nb\n';1834actualmatch = string.match(pattern);1835expectedmatch = Array('b', 'b');1836addThis();1837status = inSection(284);1838pattern = /\n((?m)^b)/;1839string = 'a\nb\n';1840actualmatch = string.match(pattern);1841expectedmatch = Array('\nb', 'b');1842addThis();1843status = inSection(285);1844pattern = /((?s).)c(?!.)/;1845string = 'a\nb\nc\n';1846actualmatch = string.match(pattern);1847expectedmatch = Array('\nc', '\n');1848addThis();1849status = inSection(286);1850pattern = /((?s).)c(?!.)/;1851string = 'a\nb\nc\n';1852actualmatch = string.match(pattern);1853expectedmatch = Array('\nc', '\n');1854addThis();1855status = inSection(287);1856pattern = /((?s)b.)c(?!.)/;1857string = 'a\nb\nc\n';1858actualmatch = string.match(pattern);1859expectedmatch = Array('b\nc', 'b\n');1860addThis();1861status = inSection(288);1862pattern = /((?s)b.)c(?!.)/;1863string = 'a\nb\nc\n';1864actualmatch = string.match(pattern);1865expectedmatch = Array('b\nc', 'b\n');1866addThis();1867status = inSection(289);1868pattern = /((?m)^b)/;1869string = 'a\nb\nc\n';1870actualmatch = string.match(pattern);1871expectedmatch = Array('b', 'b');1872addThis();1873*/1874/* ECMA doesn't support (?(condition)1875status = inSection(290);1876pattern = /(?(1)b|a)/;1877string = 'a';1878actualmatch = string.match(pattern);1879expectedmatch = Array('a');1880addThis();1881status = inSection(291);1882pattern = /(x)?(?(1)b|a)/;1883string = 'a';1884actualmatch = string.match(pattern);1885expectedmatch = Array('a');1886addThis();1887status = inSection(292);1888pattern = /()?(?(1)b|a)/;1889string = 'a';1890actualmatch = string.match(pattern);1891expectedmatch = Array('a');1892addThis();1893status = inSection(293);1894pattern = /()?(?(1)a|b)/;1895string = 'a';1896actualmatch = string.match(pattern);1897expectedmatch = Array('a');1898addThis();1899status = inSection(294);1900pattern = /^(\()?blah(?(1)(\)))$/;1901string = '(blah)';1902actualmatch = string.match(pattern);1903expectedmatch = Array('(blah)', '(', ')');1904addThis();1905status = inSection(295);1906pattern = /^(\()?blah(?(1)(\)))$/;1907string = 'blah';1908actualmatch = string.match(pattern);1909expectedmatch = Array('blah');1910addThis();1911status = inSection(296);1912pattern = /^(\(+)?blah(?(1)(\)))$/;1913string = '(blah)';1914actualmatch = string.match(pattern);1915expectedmatch = Array('(blah)', '(', ')');1916addThis();1917status = inSection(297);1918pattern = /^(\(+)?blah(?(1)(\)))$/;1919string = 'blah';1920actualmatch = string.match(pattern);1921expectedmatch = Array('blah');1922addThis();1923status = inSection(298);1924pattern = /(?(?!a)b|a)/;1925string = 'a';1926actualmatch = string.match(pattern);1927expectedmatch = Array('a');1928addThis();1929status = inSection(299);1930pattern = /(?(?=a)a|b)/;1931string = 'a';1932actualmatch = string.match(pattern);1933expectedmatch = Array('a');1934addThis();1935*/1936status = inSection(300);1937pattern = /(?=(a+?))(\1ab)/;1938string = 'aaab';1939actualmatch = string.match(pattern);1940expectedmatch = Array('aab', 'a', 'aab');1941addThis();1942status = inSection(301);1943pattern = /(\w+:)+/;1944string = 'one:';1945actualmatch = string.match(pattern);1946expectedmatch = Array('one:', 'one:');1947addThis();1948/* ECMA doesn't support (?< etc1949status = inSection(302);1950pattern = /$(?<=^(a))/;1951string = 'a';1952actualmatch = string.match(pattern);1953expectedmatch = Array('', 'a');1954addThis();1955*/1956status = inSection(303);1957pattern = /(?=(a+?))(\1ab)/;1958string = 'aaab';1959actualmatch = string.match(pattern);1960expectedmatch = Array('aab', 'a', 'aab');1961addThis();1962/* MODIFIED - ECMA has different rules for paren contents */1963status = inSection(304);1964pattern = /([\w:]+::)?(\w+)$/;1965string = 'abcd';1966actualmatch = string.match(pattern);1967//expectedmatch = Array('abcd', '', 'abcd');1968expectedmatch = Array('abcd', undefined, 'abcd');1969addThis();1970status = inSection(305);1971pattern = /([\w:]+::)?(\w+)$/;1972string = 'xy:z:::abcd';1973actualmatch = string.match(pattern);1974expectedmatch = Array('xy:z:::abcd', 'xy:z:::', 'abcd');1975addThis();1976status = inSection(306);1977pattern = /^[^bcd]*(c+)/;1978string = 'aexycd';1979actualmatch = string.match(pattern);1980expectedmatch = Array('aexyc', 'c');1981addThis();1982status = inSection(307);1983pattern = /(a*)b+/;1984string = 'caab';1985actualmatch = string.match(pattern);1986expectedmatch = Array('aab', 'aa');1987addThis();1988/* MODIFIED - ECMA has different rules for paren contents */1989status = inSection(308);1990pattern = /([\w:]+::)?(\w+)$/;1991string = 'abcd';1992actualmatch = string.match(pattern);1993//expectedmatch = Array('abcd', '', 'abcd');1994expectedmatch = Array('abcd', undefined, 'abcd');1995addThis();1996status = inSection(309);1997pattern = /([\w:]+::)?(\w+)$/;1998string = 'xy:z:::abcd';1999actualmatch = string.match(pattern);2000expectedmatch = Array('xy:z:::abcd', 'xy:z:::', 'abcd');2001addThis();2002status = inSection(310);2003pattern = /^[^bcd]*(c+)/;2004string = 'aexycd';2005actualmatch = string.match(pattern);2006expectedmatch = Array('aexyc', 'c');2007addThis();2008/* ECMA doesn't support (?>2009status = inSection(311);2010pattern = /(?>a+)b/;2011string = 'aaab';2012actualmatch = string.match(pattern);2013expectedmatch = Array('aaab');2014addThis();2015*/2016status = inSection(312);2017pattern = /([[:]+)/;2018string = 'a:[b]:';2019actualmatch = string.match(pattern);2020expectedmatch = Array(':[', ':[');2021addThis();2022status = inSection(313);2023pattern = /([[=]+)/;2024string = 'a=[b]=';2025actualmatch = string.match(pattern);2026expectedmatch = Array('=[', '=[');2027addThis();2028status = inSection(314);2029pattern = /([[.]+)/;2030string = 'a.[b].';2031actualmatch = string.match(pattern);2032expectedmatch = Array('.[', '.[');2033addThis();2034/* ECMA doesn't have rules for [:2035status = inSection(315);2036pattern = /[a[:]b[:c]/;2037string = 'abc';2038actualmatch = string.match(pattern);2039expectedmatch = Array('abc');2040addThis();2041*/2042/* ECMA doesn't support (?>2043status = inSection(316);2044pattern = /((?>a+)b)/;2045string = 'aaab';2046actualmatch = string.match(pattern);2047expectedmatch = Array('aaab', 'aaab');2048addThis();2049status = inSection(317);2050pattern = /(?>(a+))b/;2051string = 'aaab';2052actualmatch = string.match(pattern);2053expectedmatch = Array('aaab', 'aaa');2054addThis();2055status = inSection(318);2056pattern = /((?>[^()]+)|\([^()]*\))+/;2057string = '((abc(ade)ufh()()x';2058actualmatch = string.match(pattern);2059expectedmatch = Array('abc(ade)ufh()()x', 'x');2060addThis();2061*/2062/* Perl has \Z has end-of-line, ECMA doesn't2063status = inSection(319);2064pattern = /\Z/;2065string = 'a\nb\n';2066actualmatch = string.match(pattern);2067expectedmatch = Array('');2068addThis();2069status = inSection(320);2070pattern = /\z/;2071string = 'a\nb\n';2072actualmatch = string.match(pattern);2073expectedmatch = Array('');2074addThis();2075*/2076status = inSection(321);2077pattern = /$/;2078string = 'a\nb\n';2079actualmatch = string.match(pattern);2080expectedmatch = Array('');2081addThis();2082/* Perl has \Z has end-of-line, ECMA doesn't2083status = inSection(322);2084pattern = /\Z/;2085string = 'b\na\n';2086actualmatch = string.match(pattern);2087expectedmatch = Array('');2088addThis();2089status = inSection(323);2090pattern = /\z/;2091string = 'b\na\n';2092actualmatch = string.match(pattern);2093expectedmatch = Array('');2094addThis();2095*/2096status = inSection(324);2097pattern = /$/;2098string = 'b\na\n';2099actualmatch = string.match(pattern);2100expectedmatch = Array('');2101addThis();2102/* Perl has \Z has end-of-line, ECMA doesn't2103status = inSection(325);2104pattern = /\Z/;2105string = 'b\na';2106actualmatch = string.match(pattern);2107expectedmatch = Array('');2108addThis();2109status = inSection(326);2110pattern = /\z/;2111string = 'b\na';2112actualmatch = string.match(pattern);2113expectedmatch = Array('');2114addThis();2115*/2116status = inSection(327);2117pattern = /$/;2118string = 'b\na';2119actualmatch = string.match(pattern);2120expectedmatch = Array('');2121addThis();2122/* Perl has \Z has end-of-line, ECMA doesn't2123status = inSection(328);2124pattern = /\Z/m;2125string = 'a\nb\n';2126actualmatch = string.match(pattern);2127expectedmatch = Array('');2128addThis();2129status = inSection(329);2130pattern = /\z/m;2131string = 'a\nb\n';2132actualmatch = string.match(pattern);2133expectedmatch = Array('');2134addThis();2135*/2136status = inSection(330);2137pattern = /$/m;2138string = 'a\nb\n';2139actualmatch = string.match(pattern);2140expectedmatch = Array('');2141addThis();2142/* Perl has \Z has end-of-line, ECMA doesn't2143status = inSection(331);2144pattern = /\Z/m;2145string = 'b\na\n';2146actualmatch = string.match(pattern);2147expectedmatch = Array('');2148addThis();2149status = inSection(332);2150pattern = /\z/m;2151string = 'b\na\n';2152actualmatch = string.match(pattern);2153expectedmatch = Array('');2154addThis();2155*/2156status = inSection(333);2157pattern = /$/m;2158string = 'b\na\n';2159actualmatch = string.match(pattern);2160expectedmatch = Array('');2161addThis();2162/* Perl has \Z has end-of-line, ECMA doesn't2163status = inSection(334);2164pattern = /\Z/m;2165string = 'b\na';2166actualmatch = string.match(pattern);2167expectedmatch = Array('');2168addThis();2169status = inSection(335);2170pattern = /\z/m;2171string = 'b\na';2172actualmatch = string.match(pattern);2173expectedmatch = Array('');2174addThis();2175*/2176status = inSection(336);2177pattern = /$/m;2178string = 'b\na';2179actualmatch = string.match(pattern);2180expectedmatch = Array('');2181addThis();2182/* Perl has \Z has end-of-line, ECMA doesn't2183status = inSection(337);2184pattern = /a\Z/;2185string = 'b\na\n';2186actualmatch = string.match(pattern);2187expectedmatch = Array('a');2188addThis();2189*/2190/* $ only matches end of input unless multiline2191status = inSection(338);2192pattern = /a$/;2193string = 'b\na\n';2194actualmatch = string.match(pattern);2195expectedmatch = Array('a');2196addThis();2197*/2198/* Perl has \Z has end-of-line, ECMA doesn't2199status = inSection(339);2200pattern = /a\Z/;2201string = 'b\na';2202actualmatch = string.match(pattern);2203expectedmatch = Array('a');2204addThis();2205status = inSection(340);2206pattern = /a\z/;2207string = 'b\na';2208actualmatch = string.match(pattern);2209expectedmatch = Array('a');2210addThis();2211*/2212status = inSection(341);2213pattern = /a$/;2214string = 'b\na';2215actualmatch = string.match(pattern);2216expectedmatch = Array('a');2217addThis();2218status = inSection(342);2219pattern = /a$/m;2220string = 'a\nb\n';2221actualmatch = string.match(pattern);2222expectedmatch = Array('a');2223addThis();2224/* Perl has \Z has end-of-line, ECMA doesn't2225status = inSection(343);2226pattern = /a\Z/m;2227string = 'b\na\n';2228actualmatch = string.match(pattern);2229expectedmatch = Array('a');2230addThis();2231*/2232status = inSection(344);2233pattern = /a$/m;2234string = 'b\na\n';2235actualmatch = string.match(pattern);2236expectedmatch = Array('a');2237addThis();2238/* Perl has \Z has end-of-line, ECMA doesn't2239status = inSection(345);2240pattern = /a\Z/m;2241string = 'b\na';2242actualmatch = string.match(pattern);2243expectedmatch = Array('a');2244addThis();2245status = inSection(346);2246pattern = /a\z/m;2247string = 'b\na';2248actualmatch = string.match(pattern);2249expectedmatch = Array('a');2250addThis();2251*/2252status = inSection(347);2253pattern = /a$/m;2254string = 'b\na';2255actualmatch = string.match(pattern);2256expectedmatch = Array('a');2257addThis();2258/* Perl has \Z has end-of-line, ECMA doesn't2259status = inSection(348);2260pattern = /aa\Z/;2261string = 'b\naa\n';2262actualmatch = string.match(pattern);2263expectedmatch = Array('aa');2264addThis();2265*/2266/* $ only matches end of input unless multiline2267status = inSection(349);2268pattern = /aa$/;2269string = 'b\naa\n';2270actualmatch = string.match(pattern);2271expectedmatch = Array('aa');2272addThis();2273*/2274/* Perl has \Z has end-of-line, ECMA doesn't2275status = inSection(350);2276pattern = /aa\Z/;2277string = 'b\naa';2278actualmatch = string.match(pattern);2279expectedmatch = Array('aa');2280addThis();2281status = inSection(351);2282pattern = /aa\z/;2283string = 'b\naa';2284actualmatch = string.match(pattern);2285expectedmatch = Array('aa');2286addThis();2287*/2288status = inSection(352);2289pattern = /aa$/;2290string = 'b\naa';2291actualmatch = string.match(pattern);2292expectedmatch = Array('aa');2293addThis();2294status = inSection(353);2295pattern = /aa$/m;2296string = 'aa\nb\n';2297actualmatch = string.match(pattern);2298expectedmatch = Array('aa');2299addThis();2300/* Perl has \Z has end-of-line, ECMA doesn't2301status = inSection(354);2302pattern = /aa\Z/m;2303string = 'b\naa\n';2304actualmatch = string.match(pattern);2305expectedmatch = Array('aa');2306addThis();2307*/2308status = inSection(355);2309pattern = /aa$/m;2310string = 'b\naa\n';2311actualmatch = string.match(pattern);2312expectedmatch = Array('aa');2313addThis();2314/* Perl has \Z has end-of-line, ECMA doesn't2315status = inSection(356);2316pattern = /aa\Z/m;2317string = 'b\naa';2318actualmatch = string.match(pattern);2319expectedmatch = Array('aa');2320addThis();2321status = inSection(357);2322pattern = /aa\z/m;2323string = 'b\naa';2324actualmatch = string.match(pattern);2325expectedmatch = Array('aa');2326addThis();2327*/2328status = inSection(358);2329pattern = /aa$/m;2330string = 'b\naa';2331actualmatch = string.match(pattern);2332expectedmatch = Array('aa');2333addThis();2334/* Perl has \Z has end-of-line, ECMA doesn't2335status = inSection(359);2336pattern = /ab\Z/;2337string = 'b\nab\n';2338actualmatch = string.match(pattern);2339expectedmatch = Array('ab');2340addThis();2341*/2342/* $ only matches end of input unless multiline2343status = inSection(360);2344pattern = /ab$/;2345string = 'b\nab\n';2346actualmatch = string.match(pattern);2347expectedmatch = Array('ab');2348addThis();2349*/2350/* Perl has \Z has end-of-line, ECMA doesn't2351status = inSection(361);2352pattern = /ab\Z/;2353string = 'b\nab';2354actualmatch = string.match(pattern);2355expectedmatch = Array('ab');2356addThis();2357status = inSection(362);2358pattern = /ab\z/;2359string = 'b\nab';2360actualmatch = string.match(pattern);2361expectedmatch = Array('ab');2362addThis();2363*/2364status = inSection(363);2365pattern = /ab$/;2366string = 'b\nab';2367actualmatch = string.match(pattern);2368expectedmatch = Array('ab');2369addThis();2370status = inSection(364);2371pattern = /ab$/m;2372string = 'ab\nb\n';2373actualmatch = string.match(pattern);2374expectedmatch = Array('ab');2375addThis();2376/* Perl has \Z has end-of-line, ECMA doesn't2377status = inSection(365);2378pattern = /ab\Z/m;2379string = 'b\nab\n';2380actualmatch = string.match(pattern);2381expectedmatch = Array('ab');2382addThis();2383*/2384status = inSection(366);2385pattern = /ab$/m;2386string = 'b\nab\n';2387actualmatch = string.match(pattern);2388expectedmatch = Array('ab');2389addThis();2390/* Perl has \Z has end-of-line, ECMA doesn't2391status = inSection(367);2392pattern = /ab\Z/m;2393string = 'b\nab';2394actualmatch = string.match(pattern);2395expectedmatch = Array('ab');2396addThis();2397status = inSection(368);2398pattern = /ab\z/m;2399string = 'b\nab';2400actualmatch = string.match(pattern);2401expectedmatch = Array('ab');2402addThis();2403*/2404status = inSection(369);2405pattern = /ab$/m;2406string = 'b\nab';2407actualmatch = string.match(pattern);2408expectedmatch = Array('ab');2409addThis();2410/* Perl has \Z has end-of-line, ECMA doesn't2411status = inSection(370);2412pattern = /abb\Z/;2413string = 'b\nabb\n';2414actualmatch = string.match(pattern);2415expectedmatch = Array('abb');2416addThis();2417*/2418/* $ only matches end of input unless multiline2419status = inSection(371);2420pattern = /abb$/;2421string = 'b\nabb\n';2422actualmatch = string.match(pattern);2423expectedmatch = Array('abb');2424addThis();2425*/2426/* Perl has \Z has end-of-line, ECMA doesn't2427status = inSection(372);2428pattern = /abb\Z/;2429string = 'b\nabb';2430actualmatch = string.match(pattern);2431expectedmatch = Array('abb');2432addThis();2433status = inSection(373);2434pattern = /abb\z/;2435string = 'b\nabb';2436actualmatch = string.match(pattern);2437expectedmatch = Array('abb');2438addThis();2439*/2440status = inSection(374);2441pattern = /abb$/;2442string = 'b\nabb';2443actualmatch = string.match(pattern);2444expectedmatch = Array('abb');2445addThis();2446status = inSection(375);2447pattern = /abb$/m;2448string = 'abb\nb\n';2449actualmatch = string.match(pattern);2450expectedmatch = Array('abb');2451addThis();2452/* Perl has \Z has end-of-line, ECMA doesn't2453status = inSection(376);2454pattern = /abb\Z/m;2455string = 'b\nabb\n';2456actualmatch = string.match(pattern);2457expectedmatch = Array('abb');2458addThis();2459*/2460status = inSection(377);2461pattern = /abb$/m;2462string = 'b\nabb\n';2463actualmatch = string.match(pattern);2464expectedmatch = Array('abb');2465addThis();2466/* Perl has \Z has end-of-line, ECMA doesn't2467status = inSection(378);2468pattern = /abb\Z/m;2469string = 'b\nabb';2470actualmatch = string.match(pattern);2471expectedmatch = Array('abb');2472addThis();2473status = inSection(379);2474pattern = /abb\z/m;2475string = 'b\nabb';2476actualmatch = string.match(pattern);2477expectedmatch = Array('abb');2478addThis();2479*/2480status = inSection(380);2481pattern = /abb$/m;2482string = 'b\nabb';2483actualmatch = string.match(pattern);2484expectedmatch = Array('abb');2485addThis();2486status = inSection(381);2487pattern = /(^|x)(c)/;2488string = 'ca';2489actualmatch = string.match(pattern);2490expectedmatch = Array('c', '', 'c');2491addThis();2492status = inSection(382);2493pattern = /foo.bart/;2494string = 'foo.bart';2495actualmatch = string.match(pattern);2496expectedmatch = Array('foo.bart');2497addThis();2498status = inSection(383);2499pattern = /^d[x][x][x]/m;2500string = 'abcd\ndxxx';2501actualmatch = string.match(pattern);2502expectedmatch = Array('dxxx');2503addThis();2504status = inSection(384);2505pattern = /tt+$/;2506string = 'xxxtt';2507actualmatch = string.match(pattern);2508expectedmatch = Array('tt');2509addThis();2510/* ECMA spec says that each atom in a range must be a single character2511status = inSection(385);2512pattern = /([a-\d]+)/;2513string = 'za-9z';2514actualmatch = string.match(pattern);2515expectedmatch = Array('9', '9');2516addThis();2517status = inSection(386);2518pattern = /([\d-z]+)/;2519string = 'a0-za';2520actualmatch = string.match(pattern);2521expectedmatch = Array('0-z', '0-z');2522addThis();2523*/2524/* ECMA doesn't support [:2525status = inSection(387);2526pattern = /([a-[:digit:]]+)/;2527string = 'za-9z';2528actualmatch = string.match(pattern);2529expectedmatch = Array('a-9', 'a-9');2530addThis();2531status = inSection(388);2532pattern = /([[:digit:]-z]+)/;2533string = '=0-z=';2534actualmatch = string.match(pattern);2535expectedmatch = Array('0-z', '0-z');2536addThis();2537status = inSection(389);2538pattern = /([[:digit:]-[:alpha:]]+)/;2539string = '=0-z=';2540actualmatch = string.match(pattern);2541expectedmatch = Array('0-z', '0-z');2542addThis();2543*/2544status = inSection(390);2545pattern = /(\d+\.\d+)/;2546string = '3.1415926';2547actualmatch = string.match(pattern);2548expectedmatch = Array('3.1415926', '3.1415926');2549addThis();2550status = inSection(391);2551pattern = /\.c(pp|xx|c)?$/i;2552string = 'IO.c';2553actualmatch = string.match(pattern);2554expectedmatch = Array('.c', undefined);2555addThis();2556status = inSection(392);2557pattern = /(\.c(pp|xx|c)?$)/i;2558string = 'IO.c';2559actualmatch = string.match(pattern);2560expectedmatch = Array('.c', '.c', undefined);2561addThis();2562status = inSection(393);2563pattern = /(^|a)b/;2564string = 'ab';2565actualmatch = string.match(pattern);2566expectedmatch = Array('ab', 'a');2567addThis();2568status = inSection(394);2569pattern = /^([ab]*?)(b)?(c)$/;2570string = 'abac';2571actualmatch = string.match(pattern);2572expectedmatch = Array('abac', 'aba', undefined, 'c');2573addThis();2574status = inSection(395);2575pattern = /^(?:.,){2}c/i;2576string = 'a,b,c';2577actualmatch = string.match(pattern);2578expectedmatch = Array('a,b,c');2579addThis();2580status = inSection(396);2581pattern = /^(.,){2}c/i;2582string = 'a,b,c';2583actualmatch = string.match(pattern);2584expectedmatch = Array('a,b,c', 'b,');2585addThis();2586status = inSection(397);2587pattern = /^(?:[^,]*,){2}c/;2588string = 'a,b,c';2589actualmatch = string.match(pattern);2590expectedmatch = Array('a,b,c');2591addThis();2592status = inSection(398);2593pattern = /^([^,]*,){2}c/;2594string = 'a,b,c';2595actualmatch = string.match(pattern);2596expectedmatch = Array('a,b,c', 'b,');2597addThis();2598status = inSection(399);2599pattern = /^([^,]*,){3}d/;2600string = 'aaa,b,c,d';2601actualmatch = string.match(pattern);2602expectedmatch = Array('aaa,b,c,d', 'c,');2603addThis();2604status = inSection(400);2605pattern = /^([^,]*,){3,}d/;2606string = 'aaa,b,c,d';2607actualmatch = string.match(pattern);2608expectedmatch = Array('aaa,b,c,d', 'c,');2609addThis();2610status = inSection(401);2611pattern = /^([^,]*,){0,3}d/;2612string = 'aaa,b,c,d';2613actualmatch = string.match(pattern);2614expectedmatch = Array('aaa,b,c,d', 'c,');2615addThis();2616status = inSection(402);2617pattern = /^([^,]{1,3},){3}d/i;2618string = 'aaa,b,c,d';2619actualmatch = string.match(pattern);2620expectedmatch = Array('aaa,b,c,d', 'c,');2621addThis();2622status = inSection(403);2623pattern = /^([^,]{1,3},){3,}d/;2624string = 'aaa,b,c,d';2625actualmatch = string.match(pattern);2626expectedmatch = Array('aaa,b,c,d', 'c,');2627addThis();2628status = inSection(404);2629pattern = /^([^,]{1,3},){0,3}d/;2630string = 'aaa,b,c,d';2631actualmatch = string.match(pattern);2632expectedmatch = Array('aaa,b,c,d', 'c,');2633addThis();2634status = inSection(405);2635pattern = /^([^,]{1,},){3}d/;2636string = 'aaa,b,c,d';2637actualmatch = string.match(pattern);2638expectedmatch = Array('aaa,b,c,d', 'c,');2639addThis();2640status = inSection(406);2641pattern = /^([^,]{1,},){3,}d/;2642string = 'aaa,b,c,d';2643actualmatch = string.match(pattern);2644expectedmatch = Array('aaa,b,c,d', 'c,');2645addThis();2646status = inSection(407);2647pattern = /^([^,]{1,},){0,3}d/;2648string = 'aaa,b,c,d';2649actualmatch = string.match(pattern);2650expectedmatch = Array('aaa,b,c,d', 'c,');2651addThis();2652status = inSection(408);2653pattern = /^([^,]{0,3},){3}d/i;2654string = 'aaa,b,c,d';2655actualmatch = string.match(pattern);2656expectedmatch = Array('aaa,b,c,d', 'c,');2657addThis();2658status = inSection(409);2659pattern = /^([^,]{0,3},){3,}d/;2660string = 'aaa,b,c,d';2661actualmatch = string.match(pattern);2662expectedmatch = Array('aaa,b,c,d', 'c,');2663addThis();2664status = inSection(410);2665pattern = /^([^,]{0,3},){0,3}d/;2666string = 'aaa,b,c,d';2667actualmatch = string.match(pattern);2668expectedmatch = Array('aaa,b,c,d', 'c,');2669addThis();2670/* ECMA doesn't support \A2671status = inSection(411);2672pattern = /(?!\A)x/m;2673string = 'a\nxb\n';2674actualmatch = string.match(pattern);2675expectedmatch = Array('\n');2676addThis();2677*/2678status = inSection(412);2679pattern = /^(a(b)?)+$/;2680string = 'aba';2681actualmatch = string.match(pattern);2682expectedmatch = Array('aba', 'a', undefined);2683addThis();2684status = inSection(413);2685pattern = /^(aa(bb)?)+$/;2686string = 'aabbaa';2687actualmatch = string.match(pattern);2688expectedmatch = Array('aabbaa', 'aa', undefined);2689addThis();2690status = inSection(414);2691pattern = /^.{9}abc.*\n/m;2692string = '123\nabcabcabcabc\n';2693actualmatch = string.match(pattern);2694expectedmatch = Array('abcabcabcabc\n');2695addThis();2696status = inSection(415);2697pattern = /^(a)?a$/;2698string = 'a';2699actualmatch = string.match(pattern);2700expectedmatch = Array('a', undefined);2701addThis();2702status = inSection(416);2703pattern = /^(a\1?)(a\1?)(a\2?)(a\3?)$/;2704string = 'aaaaaa';2705actualmatch = string.match(pattern);2706expectedmatch = Array('aaaaaa', 'a', 'aa', 'a', 'aa');2707addThis();2708/* Can't refer to a capture before it's encountered & completed2709status = inSection(417);2710pattern = /^(a\1?){4}$/;2711string = 'aaaaaa';2712actualmatch = string.match(pattern);2713expectedmatch = Array('aaaaaa', 'aaa');2714addThis();2715*/2716status = inSection(418);2717pattern = /^(0+)?(?:x(1))?/;2718string = 'x1';2719actualmatch = string.match(pattern);2720expectedmatch = Array('x1', undefined, '1');2721addThis();2722status = inSection(419);2723pattern = /^([0-9a-fA-F]+)(?:x([0-9a-fA-F]+)?)(?:x([0-9a-fA-F]+))?/;2724string = '012cxx0190';2725actualmatch = string.match(pattern);2726expectedmatch = Array('012cxx0190', '012c', undefined, '0190');2727addThis();2728status = inSection(420);2729pattern = /^(b+?|a){1,2}c/;2730string = 'bbbac';2731actualmatch = string.match(pattern);2732expectedmatch = Array('bbbac', 'a');2733addThis();2734status = inSection(421);2735pattern = /^(b+?|a){1,2}c/;2736string = 'bbbbac';2737actualmatch = string.match(pattern);2738expectedmatch = Array('bbbbac', 'a');2739addThis();2740status = inSection(422);2741pattern = /((?:aaaa|bbbb)cccc)?/;2742string = 'aaaacccc';2743actualmatch = string.match(pattern);2744expectedmatch = Array('aaaacccc', 'aaaacccc');2745addThis();2746status = inSection(423);2747pattern = /((?:aaaa|bbbb)cccc)?/;2748string = 'bbbbcccc';2749actualmatch = string.match(pattern);2750expectedmatch = Array('bbbbcccc', 'bbbbcccc');2751addThis();2752//-----------------------------------------------------------------------------2753test();2754//-----------------------------------------------------------------------------2755function addThis()2756{2757 if(omitCurrentSection())2758 return;2759 statusmessages[i] = status;2760 patterns[i] = pattern;2761 strings[i] = string;2762 actualmatches[i] = actualmatch;2763 expectedmatches[i] = expectedmatch;2764 i++;2765}2766function omitCurrentSection()2767{2768 try2769 {2770 // current section number is in global status variable2771 var n = status.match(/(\d+)/)[1];2772 return ((n < cnLBOUND) || (n > cnUBOUND));2773 }2774 catch(e)2775 {2776 return false;2777 }2778}2779function test()2780{2781 enterFunc ('test');2782 printBugNumber (bug);2783 printStatus (summary);2784 testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches);2785 exitFunc ('test');...
perlstress-002.js
Source:perlstress-002.js
1/* ***** BEGIN LICENSE BLOCK *****2* Version: NPL 1.1/GPL 2.0/LGPL 2.13*4* The contents of this file are subject to the Netscape Public License5* Version 1.1 (the "License"); you may not use this file except in6* compliance with the License. You may obtain a copy of the License at7* http://www.mozilla.org/NPL/8*9* Software distributed under the License is distributed on an "AS IS" basis,10* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License11* for the specific language governing rights and limitations under the12* License.13*14* The Original Code is JavaScript Engine testing utilities.15*16* The Initial Developer of the Original Code is Netscape Communications Corp.17* Portions created by the Initial Developer are Copyright (C) 200218* the Initial Developer. All Rights Reserved.19*20* Contributor(s): pschwartau@netscape.com, rogerl@netscape.com21*22* Alternatively, the contents of this file may be used under the terms of23* either the GNU General Public License Version 2 or later (the "GPL"), or24* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),25* in which case the provisions of the GPL or the LGPL are applicable instead26* of those above. If you wish to allow use of your version of this file only27* under the terms of either the GPL or the LGPL, and not to allow others to28* use your version of this file under the terms of the NPL, indicate your29* decision by deleting the provisions above and replace them with the notice30* and other provisions required by the GPL or the LGPL. If you do not delete31* the provisions above, a recipient may use your version of this file under32* the terms of any one of the NPL, the GPL or the LGPL.33*34* ***** END LICENSE BLOCK *****35*36*37* Date: 2002-07-0738* SUMMARY: Testing JS RegExp engine against Perl 5 RegExp engine.39* Adjust cnLBOUND, cnUBOUND below to restrict which sections are tested.40*41* This test was created by running various patterns and strings through the42* Perl 5 RegExp engine. We saved the results below to test the JS engine.43*44* Each of the examples below is a negative test; that is, each produces a45* null match in Perl. Thus we set |expectedmatch| = |null| in each section.46*47* NOTE: ECMA/JS and Perl do differ on certain points. We have either commented48* out such sections altogether, or modified them to fit what we expect from JS.49*50* EXAMPLES:51*52* - ECMA does support (?: (?= and (?! operators, but doesn't support (?< etc.53*54* - ECMA doesn't support (?(condition)55*56*/57//-----------------------------------------------------------------------------58var i = 0;59var bug = 85721;60var summary = 'Testing regular expression edge cases';61var cnSingleSpace = ' ';62var status = '';63var statusmessages = new Array();64var pattern = '';65var patterns = new Array();66var string = '';67var strings = new Array();68var actualmatch = '';69var actualmatches = new Array();70var expectedmatch = '';71var expectedmatches = new Array();72var cnLBOUND = 0;73var cnUBOUND = 1000;74status = inSection(1);75pattern = /abc/;76string = 'xbc';77actualmatch = string.match(pattern);78expectedmatch = null;79addThis();80status = inSection(2);81pattern = /abc/;82string = 'axc';83actualmatch = string.match(pattern);84expectedmatch = null;85addThis();86status = inSection(3);87pattern = /abc/;88string = 'abx';89actualmatch = string.match(pattern);90expectedmatch = null;91addThis();92status = inSection(4);93pattern = /ab+bc/;94string = 'abc';95actualmatch = string.match(pattern);96expectedmatch = null;97addThis();98status = inSection(5);99pattern = /ab+bc/;100string = 'abq';101actualmatch = string.match(pattern);102expectedmatch = null;103addThis();104status = inSection(6);105pattern = /ab{1,}bc/;106string = 'abq';107actualmatch = string.match(pattern);108expectedmatch = null;109addThis();110status = inSection(7);111pattern = /ab{4,5}bc/;112string = 'abbbbc';113actualmatch = string.match(pattern);114expectedmatch = null;115addThis();116status = inSection(8);117pattern = /ab?bc/;118string = 'abbbbc';119actualmatch = string.match(pattern);120expectedmatch = null;121addThis();122status = inSection(9);123pattern = /^abc$/;124string = 'abcc';125actualmatch = string.match(pattern);126expectedmatch = null;127addThis();128status = inSection(10);129pattern = /^abc$/;130string = 'aabc';131actualmatch = string.match(pattern);132expectedmatch = null;133addThis();134status = inSection(11);135pattern = /abc$/;136string = 'aabcd';137actualmatch = string.match(pattern);138expectedmatch = null;139addThis();140status = inSection(12);141pattern = /a.*c/;142string = 'axyzd';143actualmatch = string.match(pattern);144expectedmatch = null;145addThis();146status = inSection(13);147pattern = /a[bc]d/;148string = 'abc';149actualmatch = string.match(pattern);150expectedmatch = null;151addThis();152status = inSection(14);153pattern = /a[b-d]e/;154string = 'abd';155actualmatch = string.match(pattern);156expectedmatch = null;157addThis();158status = inSection(15);159pattern = /a[^bc]d/;160string = 'abd';161actualmatch = string.match(pattern);162expectedmatch = null;163addThis();164status = inSection(16);165pattern = /a[^-b]c/;166string = 'a-c';167actualmatch = string.match(pattern);168expectedmatch = null;169addThis();170status = inSection(17);171pattern = /a[^]b]c/;172string = 'a]c';173actualmatch = string.match(pattern);174expectedmatch = null;175addThis();176status = inSection(18);177pattern = /\by\b/;178string = 'xy';179actualmatch = string.match(pattern);180expectedmatch = null;181addThis();182status = inSection(19);183pattern = /\by\b/;184string = 'yz';185actualmatch = string.match(pattern);186expectedmatch = null;187addThis();188status = inSection(20);189pattern = /\by\b/;190string = 'xyz';191actualmatch = string.match(pattern);192expectedmatch = null;193addThis();194status = inSection(21);195pattern = /\Ba\B/;196string = 'a-';197actualmatch = string.match(pattern);198expectedmatch = null;199addThis();200status = inSection(22);201pattern = /\Ba\B/;202string = '-a';203actualmatch = string.match(pattern);204expectedmatch = null;205addThis();206status = inSection(23);207pattern = /\Ba\B/;208string = '-a-';209actualmatch = string.match(pattern);210expectedmatch = null;211addThis();212status = inSection(24);213pattern = /\w/;214string = '-';215actualmatch = string.match(pattern);216expectedmatch = null;217addThis();218status = inSection(25);219pattern = /\W/;220string = 'a';221actualmatch = string.match(pattern);222expectedmatch = null;223addThis();224status = inSection(26);225pattern = /a\sb/;226string = 'a-b';227actualmatch = string.match(pattern);228expectedmatch = null;229addThis();230status = inSection(27);231pattern = /\d/;232string = '-';233actualmatch = string.match(pattern);234expectedmatch = null;235addThis();236status = inSection(28);237pattern = /\D/;238string = '1';239actualmatch = string.match(pattern);240expectedmatch = null;241addThis();242status = inSection(29);243pattern = /[\w]/;244string = '-';245actualmatch = string.match(pattern);246expectedmatch = null;247addThis();248status = inSection(30);249pattern = /[\W]/;250string = 'a';251actualmatch = string.match(pattern);252expectedmatch = null;253addThis();254status = inSection(31);255pattern = /a[\s]b/;256string = 'a-b';257actualmatch = string.match(pattern);258expectedmatch = null;259addThis();260status = inSection(32);261pattern = /[\d]/;262string = '-';263actualmatch = string.match(pattern);264expectedmatch = null;265addThis();266status = inSection(33);267pattern = /[\D]/;268string = '1';269actualmatch = string.match(pattern);270expectedmatch = null;271addThis();272status = inSection(34);273pattern = /$b/;274string = 'b';275actualmatch = string.match(pattern);276expectedmatch = null;277addThis();278status = inSection(35);279pattern = /^(ab|cd)e/;280string = 'abcde';281actualmatch = string.match(pattern);282expectedmatch = null;283addThis();284status = inSection(36);285pattern = /a[bcd]+dcdcde/;286string = 'adcdcde';287actualmatch = string.match(pattern);288expectedmatch = null;289addThis();290status = inSection(37);291pattern = /(bc+d$|ef*g.|h?i(j|k))/;292string = 'effg';293actualmatch = string.match(pattern);294expectedmatch = null;295addThis();296status = inSection(38);297pattern = /(bc+d$|ef*g.|h?i(j|k))/;298string = 'bcdd';299actualmatch = string.match(pattern);300expectedmatch = null;301addThis();302status = inSection(39);303pattern = /[k]/;304string = 'ab';305actualmatch = string.match(pattern);306expectedmatch = null;307addThis();308// MODIFIED - ECMA has different rules for paren contents.309status = inSection(40);310pattern = /(a)|\1/;311string = 'x';312actualmatch = string.match(pattern);313//expectedmatch = null;314expectedmatch = Array("", undefined);315addThis();316// MODIFIED - ECMA has different rules for paren contents.317status = inSection(41);318pattern = /((\3|b)\2(a)x)+/;319string = 'aaxabxbaxbbx';320actualmatch = string.match(pattern);321//expectedmatch = null;322expectedmatch = Array("ax", "ax", "", "a");323addThis();324status = inSection(42);325pattern = /abc/i;326string = 'XBC';327actualmatch = string.match(pattern);328expectedmatch = null;329addThis();330status = inSection(43);331pattern = /abc/i;332string = 'AXC';333actualmatch = string.match(pattern);334expectedmatch = null;335addThis();336status = inSection(44);337pattern = /abc/i;338string = 'ABX';339actualmatch = string.match(pattern);340expectedmatch = null;341addThis();342status = inSection(45);343pattern = /ab+bc/i;344string = 'ABC';345actualmatch = string.match(pattern);346expectedmatch = null;347addThis();348status = inSection(46);349pattern = /ab+bc/i;350string = 'ABQ';351actualmatch = string.match(pattern);352expectedmatch = null;353addThis();354status = inSection(47);355pattern = /ab{1,}bc/i;356string = 'ABQ';357actualmatch = string.match(pattern);358expectedmatch = null;359addThis();360status = inSection(48);361pattern = /ab{4,5}?bc/i;362string = 'ABBBBC';363actualmatch = string.match(pattern);364expectedmatch = null;365addThis();366status = inSection(49);367pattern = /ab??bc/i;368string = 'ABBBBC';369actualmatch = string.match(pattern);370expectedmatch = null;371addThis();372status = inSection(50);373pattern = /^abc$/i;374string = 'ABCC';375actualmatch = string.match(pattern);376expectedmatch = null;377addThis();378status = inSection(51);379pattern = /^abc$/i;380string = 'AABC';381actualmatch = string.match(pattern);382expectedmatch = null;383addThis();384status = inSection(52);385pattern = /a.*c/i;386string = 'AXYZD';387actualmatch = string.match(pattern);388expectedmatch = null;389addThis();390status = inSection(53);391pattern = /a[bc]d/i;392string = 'ABC';393actualmatch = string.match(pattern);394expectedmatch = null;395addThis();396status = inSection(54);397pattern = /a[b-d]e/i;398string = 'ABD';399actualmatch = string.match(pattern);400expectedmatch = null;401addThis();402status = inSection(55);403pattern = /a[^bc]d/i;404string = 'ABD';405actualmatch = string.match(pattern);406expectedmatch = null;407addThis();408status = inSection(56);409pattern = /a[^-b]c/i;410string = 'A-C';411actualmatch = string.match(pattern);412expectedmatch = null;413addThis();414status = inSection(57);415pattern = /a[^]b]c/i;416string = 'A]C';417actualmatch = string.match(pattern);418expectedmatch = null;419addThis();420status = inSection(58);421pattern = /$b/i;422string = 'B';423actualmatch = string.match(pattern);424expectedmatch = null;425addThis();426status = inSection(59);427pattern = /^(ab|cd)e/i;428string = 'ABCDE';429actualmatch = string.match(pattern);430expectedmatch = null;431addThis();432status = inSection(60);433pattern = /a[bcd]+dcdcde/i;434string = 'ADCDCDE';435actualmatch = string.match(pattern);436expectedmatch = null;437addThis();438status = inSection(61);439pattern = /(bc+d$|ef*g.|h?i(j|k))/i;440string = 'EFFG';441actualmatch = string.match(pattern);442expectedmatch = null;443addThis();444status = inSection(62);445pattern = /(bc+d$|ef*g.|h?i(j|k))/i;446string = 'BCDD';447actualmatch = string.match(pattern);448expectedmatch = null;449addThis();450status = inSection(63);451pattern = /[k]/i;452string = 'AB';453actualmatch = string.match(pattern);454expectedmatch = null;455addThis();456status = inSection(64);457pattern = /^(a\1?){4}$/;458string = 'aaaaaaaaa';459actualmatch = string.match(pattern);460expectedmatch = null;461addThis();462status = inSection(65);463pattern = /^(a\1?){4}$/;464string = 'aaaaaaaaaaa';465actualmatch = string.match(pattern);466expectedmatch = null;467addThis();468/* ECMA doesn't support (?(469status = inSection(66);470pattern = /^(a(?(1)\1)){4}$/;471string = 'aaaaaaaaa';472actualmatch = string.match(pattern);473expectedmatch = null;474addThis();475status = inSection(67);476pattern = /^(a(?(1)\1)){4}$/;477string = 'aaaaaaaaaaa';478actualmatch = string.match(pattern);479expectedmatch = null;480addThis();481*/482/* ECMA doesn't support (?<483status = inSection(68);484pattern = /(?<=a)b/;485string = 'cb';486actualmatch = string.match(pattern);487expectedmatch = null;488addThis();489status = inSection(69);490pattern = /(?<=a)b/;491string = 'b';492actualmatch = string.match(pattern);493expectedmatch = null;494addThis();495status = inSection(70);496pattern = /(?<!c)b/;497string = 'cb';498actualmatch = string.match(pattern);499expectedmatch = null;500addThis();501*/502/* ECMA doesn't support (?(condition)503status = inSection(71);504pattern = /(?:(?i)a)b/;505string = 'aB';506actualmatch = string.match(pattern);507expectedmatch = null;508addThis();509status = inSection(72);510pattern = /((?i)a)b/;511string = 'aB';512actualmatch = string.match(pattern);513expectedmatch = null;514addThis();515status = inSection(73);516pattern = /(?i:a)b/;517string = 'aB';518actualmatch = string.match(pattern);519expectedmatch = null;520addThis();521status = inSection(74);522pattern = /((?i:a))b/;523string = 'aB';524actualmatch = string.match(pattern);525expectedmatch = null;526addThis();527status = inSection(75);528pattern = /(?:(?-i)a)b/i;529string = 'Ab';530actualmatch = string.match(pattern);531expectedmatch = null;532addThis();533status = inSection(76);534pattern = /((?-i)a)b/i;535string = 'Ab';536actualmatch = string.match(pattern);537expectedmatch = null;538addThis();539status = inSection(77);540pattern = /(?:(?-i)a)b/i;541string = 'AB';542actualmatch = string.match(pattern);543expectedmatch = null;544addThis();545status = inSection(78);546pattern = /((?-i)a)b/i;547string = 'AB';548actualmatch = string.match(pattern);549expectedmatch = null;550addThis();551status = inSection(79);552pattern = /(?-i:a)b/i;553string = 'Ab';554actualmatch = string.match(pattern);555expectedmatch = null;556addThis();557status = inSection(80);558pattern = /((?-i:a))b/i;559string = 'Ab';560actualmatch = string.match(pattern);561expectedmatch = null;562addThis();563status = inSection(81);564pattern = /(?-i:a)b/i;565string = 'AB';566actualmatch = string.match(pattern);567expectedmatch = null;568addThis();569status = inSection(82);570pattern = /((?-i:a))b/i;571string = 'AB';572actualmatch = string.match(pattern);573expectedmatch = null;574addThis();575status = inSection(83);576pattern = /((?-i:a.))b/i;577string = 'a\nB';578actualmatch = string.match(pattern);579expectedmatch = null;580addThis();581status = inSection(84);582pattern = /((?s-i:a.))b/i;583string = 'B\nB';584actualmatch = string.match(pattern);585expectedmatch = null;586addThis();587*/588/* ECMA doesn't support (?<589status = inSection(85);590pattern = /(?<![cd])b/;591string = 'dbcb';592actualmatch = string.match(pattern);593expectedmatch = null;594addThis();595status = inSection(86);596pattern = /(?<!(c|d))b/;597string = 'dbcb';598actualmatch = string.match(pattern);599expectedmatch = null;600addThis();601*/602status = inSection(87);603pattern = /^(?:a?b?)*$/;604string = 'a--';605actualmatch = string.match(pattern);606expectedmatch = null;607addThis();608status = inSection(88);609pattern = /^b/;610string = 'a\nb\nc\n';611actualmatch = string.match(pattern);612expectedmatch = null;613addThis();614status = inSection(89);615pattern = /()^b/;616string = 'a\nb\nc\n';617actualmatch = string.match(pattern);618expectedmatch = null;619addThis();620/* ECMA doesn't support (?(621status = inSection(90);622pattern = /(?(1)a|b)/;623string = 'a';624actualmatch = string.match(pattern);625expectedmatch = null;626addThis();627status = inSection(91);628pattern = /(x)?(?(1)a|b)/;629string = 'a';630actualmatch = string.match(pattern);631expectedmatch = null;632addThis();633status = inSection(92);634pattern = /()(?(1)b|a)/;635string = 'a';636actualmatch = string.match(pattern);637expectedmatch = null;638addThis();639status = inSection(93);640pattern = /^(\()?blah(?(1)(\)))$/;641string = 'blah)';642actualmatch = string.match(pattern);643expectedmatch = null;644addThis();645status = inSection(94);646pattern = /^(\()?blah(?(1)(\)))$/;647string = '(blah';648actualmatch = string.match(pattern);649expectedmatch = null;650addThis();651status = inSection(95);652pattern = /^(\(+)?blah(?(1)(\)))$/;653string = 'blah)';654actualmatch = string.match(pattern);655expectedmatch = null;656addThis();657status = inSection(96);658pattern = /^(\(+)?blah(?(1)(\)))$/;659string = '(blah';660actualmatch = string.match(pattern);661expectedmatch = null;662addThis();663status = inSection(97);664pattern = /(?(?{0})a|b)/;665string = 'a';666actualmatch = string.match(pattern);667expectedmatch = null;668addThis();669status = inSection(98);670pattern = /(?(?{1})b|a)/;671string = 'a';672actualmatch = string.match(pattern);673expectedmatch = null;674addThis();675status = inSection(99);676pattern = /(?(?!a)a|b)/;677string = 'a';678actualmatch = string.match(pattern);679expectedmatch = null;680addThis();681status = inSection(100);682pattern = /(?(?=a)b|a)/;683string = 'a';684actualmatch = string.match(pattern);685expectedmatch = null;686addThis();687*/688status = inSection(101);689pattern = /^(?=(a+?))\1ab/;690string = 'aaab';691actualmatch = string.match(pattern);692expectedmatch = null;693addThis();694status = inSection(102);695pattern = /^(?=(a+?))\1ab/;696string = 'aaab';697actualmatch = string.match(pattern);698expectedmatch = null;699addThis();700status = inSection(103);701pattern = /([\w:]+::)?(\w+)$/;702string = 'abcd:';703actualmatch = string.match(pattern);704expectedmatch = null;705addThis();706status = inSection(104);707pattern = /([\w:]+::)?(\w+)$/;708string = 'abcd:';709actualmatch = string.match(pattern);710expectedmatch = null;711addThis();712status = inSection(105);713pattern = /(>a+)ab/;714string = 'aaab';715actualmatch = string.match(pattern);716expectedmatch = null;717addThis();718status = inSection(106);719pattern = /a\Z/;720string = 'a\nb\n';721actualmatch = string.match(pattern);722expectedmatch = null;723addThis();724status = inSection(107);725pattern = /a\z/;726string = 'a\nb\n';727actualmatch = string.match(pattern);728expectedmatch = null;729addThis();730status = inSection(108);731pattern = /a$/;732string = 'a\nb\n';733actualmatch = string.match(pattern);734expectedmatch = null;735addThis();736status = inSection(109);737pattern = /a\z/;738string = 'b\na\n';739actualmatch = string.match(pattern);740expectedmatch = null;741addThis();742status = inSection(110);743pattern = /a\z/m;744string = 'a\nb\n';745actualmatch = string.match(pattern);746expectedmatch = null;747addThis();748status = inSection(111);749pattern = /a\z/m;750string = 'b\na\n';751actualmatch = string.match(pattern);752expectedmatch = null;753addThis();754status = inSection(112);755pattern = /aa\Z/;756string = 'aa\nb\n';757actualmatch = string.match(pattern);758expectedmatch = null;759addThis();760status = inSection(113);761pattern = /aa\z/;762string = 'aa\nb\n';763actualmatch = string.match(pattern);764expectedmatch = null;765addThis();766status = inSection(114);767pattern = /aa$/;768string = 'aa\nb\n';769actualmatch = string.match(pattern);770expectedmatch = null;771addThis();772status = inSection(115);773pattern = /aa\z/;774string = 'b\naa\n';775actualmatch = string.match(pattern);776expectedmatch = null;777addThis();778status = inSection(116);779pattern = /aa\z/m;780string = 'aa\nb\n';781actualmatch = string.match(pattern);782expectedmatch = null;783addThis();784status = inSection(117);785pattern = /aa\z/m;786string = 'b\naa\n';787actualmatch = string.match(pattern);788expectedmatch = null;789addThis();790status = inSection(118);791pattern = /aa\Z/;792string = 'ac\nb\n';793actualmatch = string.match(pattern);794expectedmatch = null;795addThis();796status = inSection(119);797pattern = /aa\z/;798string = 'ac\nb\n';799actualmatch = string.match(pattern);800expectedmatch = null;801addThis();802status = inSection(120);803pattern = /aa$/;804string = 'ac\nb\n';805actualmatch = string.match(pattern);806expectedmatch = null;807addThis();808status = inSection(121);809pattern = /aa\Z/;810string = 'b\nac\n';811actualmatch = string.match(pattern);812expectedmatch = null;813addThis();814status = inSection(122);815pattern = /aa\z/;816string = 'b\nac\n';817actualmatch = string.match(pattern);818expectedmatch = null;819addThis();820status = inSection(123);821pattern = /aa$/;822string = 'b\nac\n';823actualmatch = string.match(pattern);824expectedmatch = null;825addThis();826status = inSection(124);827pattern = /aa\Z/;828string = 'b\nac';829actualmatch = string.match(pattern);830expectedmatch = null;831addThis();832status = inSection(125);833pattern = /aa\z/;834string = 'b\nac';835actualmatch = string.match(pattern);836expectedmatch = null;837addThis();838status = inSection(126);839pattern = /aa$/;840string = 'b\nac';841actualmatch = string.match(pattern);842expectedmatch = null;843addThis();844status = inSection(127);845pattern = /aa\Z/m;846string = 'ac\nb\n';847actualmatch = string.match(pattern);848expectedmatch = null;849addThis();850status = inSection(128);851pattern = /aa\z/m;852string = 'ac\nb\n';853actualmatch = string.match(pattern);854expectedmatch = null;855addThis();856status = inSection(129);857pattern = /aa$/m;858string = 'ac\nb\n';859actualmatch = string.match(pattern);860expectedmatch = null;861addThis();862status = inSection(130);863pattern = /aa\Z/m;864string = 'b\nac\n';865actualmatch = string.match(pattern);866expectedmatch = null;867addThis();868status = inSection(131);869pattern = /aa\z/m;870string = 'b\nac\n';871actualmatch = string.match(pattern);872expectedmatch = null;873addThis();874status = inSection(132);875pattern = /aa$/m;876string = 'b\nac\n';877actualmatch = string.match(pattern);878expectedmatch = null;879addThis();880status = inSection(133);881pattern = /aa\Z/m;882string = 'b\nac';883actualmatch = string.match(pattern);884expectedmatch = null;885addThis();886status = inSection(134);887pattern = /aa\z/m;888string = 'b\nac';889actualmatch = string.match(pattern);890expectedmatch = null;891addThis();892status = inSection(135);893pattern = /aa$/m;894string = 'b\nac';895actualmatch = string.match(pattern);896expectedmatch = null;897addThis();898status = inSection(136);899pattern = /aa\Z/;900string = 'ca\nb\n';901actualmatch = string.match(pattern);902expectedmatch = null;903addThis();904status = inSection(137);905pattern = /aa\z/;906string = 'ca\nb\n';907actualmatch = string.match(pattern);908expectedmatch = null;909addThis();910status = inSection(138);911pattern = /aa$/;912string = 'ca\nb\n';913actualmatch = string.match(pattern);914expectedmatch = null;915addThis();916status = inSection(139);917pattern = /aa\Z/;918string = 'b\nca\n';919actualmatch = string.match(pattern);920expectedmatch = null;921addThis();922status = inSection(140);923pattern = /aa\z/;924string = 'b\nca\n';925actualmatch = string.match(pattern);926expectedmatch = null;927addThis();928status = inSection(141);929pattern = /aa$/;930string = 'b\nca\n';931actualmatch = string.match(pattern);932expectedmatch = null;933addThis();934status = inSection(142);935pattern = /aa\Z/;936string = 'b\nca';937actualmatch = string.match(pattern);938expectedmatch = null;939addThis();940status = inSection(143);941pattern = /aa\z/;942string = 'b\nca';943actualmatch = string.match(pattern);944expectedmatch = null;945addThis();946status = inSection(144);947pattern = /aa$/;948string = 'b\nca';949actualmatch = string.match(pattern);950expectedmatch = null;951addThis();952status = inSection(145);953pattern = /aa\Z/m;954string = 'ca\nb\n';955actualmatch = string.match(pattern);956expectedmatch = null;957addThis();958status = inSection(146);959pattern = /aa\z/m;960string = 'ca\nb\n';961actualmatch = string.match(pattern);962expectedmatch = null;963addThis();964status = inSection(147);965pattern = /aa$/m;966string = 'ca\nb\n';967actualmatch = string.match(pattern);968expectedmatch = null;969addThis();970status = inSection(148);971pattern = /aa\Z/m;972string = 'b\nca\n';973actualmatch = string.match(pattern);974expectedmatch = null;975addThis();976status = inSection(149);977pattern = /aa\z/m;978string = 'b\nca\n';979actualmatch = string.match(pattern);980expectedmatch = null;981addThis();982status = inSection(150);983pattern = /aa$/m;984string = 'b\nca\n';985actualmatch = string.match(pattern);986expectedmatch = null;987addThis();988status = inSection(151);989pattern = /aa\Z/m;990string = 'b\nca';991actualmatch = string.match(pattern);992expectedmatch = null;993addThis();994status = inSection(152);995pattern = /aa\z/m;996string = 'b\nca';997actualmatch = string.match(pattern);998expectedmatch = null;999addThis();1000status = inSection(153);1001pattern = /aa$/m;1002string = 'b\nca';1003actualmatch = string.match(pattern);1004expectedmatch = null;1005addThis();1006status = inSection(154);1007pattern = /ab\Z/;1008string = 'ab\nb\n';1009actualmatch = string.match(pattern);1010expectedmatch = null;1011addThis();1012status = inSection(155);1013pattern = /ab\z/;1014string = 'ab\nb\n';1015actualmatch = string.match(pattern);1016expectedmatch = null;1017addThis();1018status = inSection(156);1019pattern = /ab$/;1020string = 'ab\nb\n';1021actualmatch = string.match(pattern);1022expectedmatch = null;1023addThis();1024status = inSection(157);1025pattern = /ab\z/;1026string = 'b\nab\n';1027actualmatch = string.match(pattern);1028expectedmatch = null;1029addThis();1030status = inSection(158);1031pattern = /ab\z/m;1032string = 'ab\nb\n';1033actualmatch = string.match(pattern);1034expectedmatch = null;1035addThis();1036status = inSection(159);1037pattern = /ab\z/m;1038string = 'b\nab\n';1039actualmatch = string.match(pattern);1040expectedmatch = null;1041addThis();1042status = inSection(160);1043pattern = /ab\Z/;1044string = 'ac\nb\n';1045actualmatch = string.match(pattern);1046expectedmatch = null;1047addThis();1048status = inSection(161);1049pattern = /ab\z/;1050string = 'ac\nb\n';1051actualmatch = string.match(pattern);1052expectedmatch = null;1053addThis();1054status = inSection(162);1055pattern = /ab$/;1056string = 'ac\nb\n';1057actualmatch = string.match(pattern);1058expectedmatch = null;1059addThis();1060status = inSection(163);1061pattern = /ab\Z/;1062string = 'b\nac\n';1063actualmatch = string.match(pattern);1064expectedmatch = null;1065addThis();1066status = inSection(164);1067pattern = /ab\z/;1068string = 'b\nac\n';1069actualmatch = string.match(pattern);1070expectedmatch = null;1071addThis();1072status = inSection(165);1073pattern = /ab$/;1074string = 'b\nac\n';1075actualmatch = string.match(pattern);1076expectedmatch = null;1077addThis();1078status = inSection(166);1079pattern = /ab\Z/;1080string = 'b\nac';1081actualmatch = string.match(pattern);1082expectedmatch = null;1083addThis();1084status = inSection(167);1085pattern = /ab\z/;1086string = 'b\nac';1087actualmatch = string.match(pattern);1088expectedmatch = null;1089addThis();1090status = inSection(168);1091pattern = /ab$/;1092string = 'b\nac';1093actualmatch = string.match(pattern);1094expectedmatch = null;1095addThis();1096status = inSection(169);1097pattern = /ab\Z/m;1098string = 'ac\nb\n';1099actualmatch = string.match(pattern);1100expectedmatch = null;1101addThis();1102status = inSection(170);1103pattern = /ab\z/m;1104string = 'ac\nb\n';1105actualmatch = string.match(pattern);1106expectedmatch = null;1107addThis();1108status = inSection(171);1109pattern = /ab$/m;1110string = 'ac\nb\n';1111actualmatch = string.match(pattern);1112expectedmatch = null;1113addThis();1114status = inSection(172);1115pattern = /ab\Z/m;1116string = 'b\nac\n';1117actualmatch = string.match(pattern);1118expectedmatch = null;1119addThis();1120status = inSection(173);1121pattern = /ab\z/m;1122string = 'b\nac\n';1123actualmatch = string.match(pattern);1124expectedmatch = null;1125addThis();1126status = inSection(174);1127pattern = /ab$/m;1128string = 'b\nac\n';1129actualmatch = string.match(pattern);1130expectedmatch = null;1131addThis();1132status = inSection(175);1133pattern = /ab\Z/m;1134string = 'b\nac';1135actualmatch = string.match(pattern);1136expectedmatch = null;1137addThis();1138status = inSection(176);1139pattern = /ab\z/m;1140string = 'b\nac';1141actualmatch = string.match(pattern);1142expectedmatch = null;1143addThis();1144status = inSection(177);1145pattern = /ab$/m;1146string = 'b\nac';1147actualmatch = string.match(pattern);1148expectedmatch = null;1149addThis();1150status = inSection(178);1151pattern = /ab\Z/;1152string = 'ca\nb\n';1153actualmatch = string.match(pattern);1154expectedmatch = null;1155addThis();1156status = inSection(179);1157pattern = /ab\z/;1158string = 'ca\nb\n';1159actualmatch = string.match(pattern);1160expectedmatch = null;1161addThis();1162status = inSection(180);1163pattern = /ab$/;1164string = 'ca\nb\n';1165actualmatch = string.match(pattern);1166expectedmatch = null;1167addThis();1168status = inSection(181);1169pattern = /ab\Z/;1170string = 'b\nca\n';1171actualmatch = string.match(pattern);1172expectedmatch = null;1173addThis();1174status = inSection(182);1175pattern = /ab\z/;1176string = 'b\nca\n';1177actualmatch = string.match(pattern);1178expectedmatch = null;1179addThis();1180status = inSection(183);1181pattern = /ab$/;1182string = 'b\nca\n';1183actualmatch = string.match(pattern);1184expectedmatch = null;1185addThis();1186status = inSection(184);1187pattern = /ab\Z/;1188string = 'b\nca';1189actualmatch = string.match(pattern);1190expectedmatch = null;1191addThis();1192status = inSection(185);1193pattern = /ab\z/;1194string = 'b\nca';1195actualmatch = string.match(pattern);1196expectedmatch = null;1197addThis();1198status = inSection(186);1199pattern = /ab$/;1200string = 'b\nca';1201actualmatch = string.match(pattern);1202expectedmatch = null;1203addThis();1204status = inSection(187);1205pattern = /ab\Z/m;1206string = 'ca\nb\n';1207actualmatch = string.match(pattern);1208expectedmatch = null;1209addThis();1210status = inSection(188);1211pattern = /ab\z/m;1212string = 'ca\nb\n';1213actualmatch = string.match(pattern);1214expectedmatch = null;1215addThis();1216status = inSection(189);1217pattern = /ab$/m;1218string = 'ca\nb\n';1219actualmatch = string.match(pattern);1220expectedmatch = null;1221addThis();1222status = inSection(190);1223pattern = /ab\Z/m;1224string = 'b\nca\n';1225actualmatch = string.match(pattern);1226expectedmatch = null;1227addThis();1228status = inSection(191);1229pattern = /ab\z/m;1230string = 'b\nca\n';1231actualmatch = string.match(pattern);1232expectedmatch = null;1233addThis();1234status = inSection(192);1235pattern = /ab$/m;1236string = 'b\nca\n';1237actualmatch = string.match(pattern);1238expectedmatch = null;1239addThis();1240status = inSection(193);1241pattern = /ab\Z/m;1242string = 'b\nca';1243actualmatch = string.match(pattern);1244expectedmatch = null;1245addThis();1246status = inSection(194);1247pattern = /ab\z/m;1248string = 'b\nca';1249actualmatch = string.match(pattern);1250expectedmatch = null;1251addThis();1252status = inSection(195);1253pattern = /ab$/m;1254string = 'b\nca';1255actualmatch = string.match(pattern);1256expectedmatch = null;1257addThis();1258status = inSection(196);1259pattern = /abb\Z/;1260string = 'abb\nb\n';1261actualmatch = string.match(pattern);1262expectedmatch = null;1263addThis();1264status = inSection(197);1265pattern = /abb\z/;1266string = 'abb\nb\n';1267actualmatch = string.match(pattern);1268expectedmatch = null;1269addThis();1270status = inSection(198);1271pattern = /abb$/;1272string = 'abb\nb\n';1273actualmatch = string.match(pattern);1274expectedmatch = null;1275addThis();1276status = inSection(199);1277pattern = /abb\z/;1278string = 'b\nabb\n';1279actualmatch = string.match(pattern);1280expectedmatch = null;1281addThis();1282status = inSection(200);1283pattern = /abb\z/m;1284string = 'abb\nb\n';1285actualmatch = string.match(pattern);1286expectedmatch = null;1287addThis();1288status = inSection(201);1289pattern = /abb\z/m;1290string = 'b\nabb\n';1291actualmatch = string.match(pattern);1292expectedmatch = null;1293addThis();1294status = inSection(202);1295pattern = /abb\Z/;1296string = 'ac\nb\n';1297actualmatch = string.match(pattern);1298expectedmatch = null;1299addThis();1300status = inSection(203);1301pattern = /abb\z/;1302string = 'ac\nb\n';1303actualmatch = string.match(pattern);1304expectedmatch = null;1305addThis();1306status = inSection(204);1307pattern = /abb$/;1308string = 'ac\nb\n';1309actualmatch = string.match(pattern);1310expectedmatch = null;1311addThis();1312status = inSection(205);1313pattern = /abb\Z/;1314string = 'b\nac\n';1315actualmatch = string.match(pattern);1316expectedmatch = null;1317addThis();1318status = inSection(206);1319pattern = /abb\z/;1320string = 'b\nac\n';1321actualmatch = string.match(pattern);1322expectedmatch = null;1323addThis();1324status = inSection(207);1325pattern = /abb$/;1326string = 'b\nac\n';1327actualmatch = string.match(pattern);1328expectedmatch = null;1329addThis();1330status = inSection(208);1331pattern = /abb\Z/;1332string = 'b\nac';1333actualmatch = string.match(pattern);1334expectedmatch = null;1335addThis();1336status = inSection(209);1337pattern = /abb\z/;1338string = 'b\nac';1339actualmatch = string.match(pattern);1340expectedmatch = null;1341addThis();1342status = inSection(210);1343pattern = /abb$/;1344string = 'b\nac';1345actualmatch = string.match(pattern);1346expectedmatch = null;1347addThis();1348status = inSection(211);1349pattern = /abb\Z/m;1350string = 'ac\nb\n';1351actualmatch = string.match(pattern);1352expectedmatch = null;1353addThis();1354status = inSection(212);1355pattern = /abb\z/m;1356string = 'ac\nb\n';1357actualmatch = string.match(pattern);1358expectedmatch = null;1359addThis();1360status = inSection(213);1361pattern = /abb$/m;1362string = 'ac\nb\n';1363actualmatch = string.match(pattern);1364expectedmatch = null;1365addThis();1366status = inSection(214);1367pattern = /abb\Z/m;1368string = 'b\nac\n';1369actualmatch = string.match(pattern);1370expectedmatch = null;1371addThis();1372status = inSection(215);1373pattern = /abb\z/m;1374string = 'b\nac\n';1375actualmatch = string.match(pattern);1376expectedmatch = null;1377addThis();1378status = inSection(216);1379pattern = /abb$/m;1380string = 'b\nac\n';1381actualmatch = string.match(pattern);1382expectedmatch = null;1383addThis();1384status = inSection(217);1385pattern = /abb\Z/m;1386string = 'b\nac';1387actualmatch = string.match(pattern);1388expectedmatch = null;1389addThis();1390status = inSection(218);1391pattern = /abb\z/m;1392string = 'b\nac';1393actualmatch = string.match(pattern);1394expectedmatch = null;1395addThis();1396status = inSection(219);1397pattern = /abb$/m;1398string = 'b\nac';1399actualmatch = string.match(pattern);1400expectedmatch = null;1401addThis();1402status = inSection(220);1403pattern = /abb\Z/;1404string = 'ca\nb\n';1405actualmatch = string.match(pattern);1406expectedmatch = null;1407addThis();1408status = inSection(221);1409pattern = /abb\z/;1410string = 'ca\nb\n';1411actualmatch = string.match(pattern);1412expectedmatch = null;1413addThis();1414status = inSection(222);1415pattern = /abb$/;1416string = 'ca\nb\n';1417actualmatch = string.match(pattern);1418expectedmatch = null;1419addThis();1420status = inSection(223);1421pattern = /abb\Z/;1422string = 'b\nca\n';1423actualmatch = string.match(pattern);1424expectedmatch = null;1425addThis();1426status = inSection(224);1427pattern = /abb\z/;1428string = 'b\nca\n';1429actualmatch = string.match(pattern);1430expectedmatch = null;1431addThis();1432status = inSection(225);1433pattern = /abb$/;1434string = 'b\nca\n';1435actualmatch = string.match(pattern);1436expectedmatch = null;1437addThis();1438status = inSection(226);1439pattern = /abb\Z/;1440string = 'b\nca';1441actualmatch = string.match(pattern);1442expectedmatch = null;1443addThis();1444status = inSection(227);1445pattern = /abb\z/;1446string = 'b\nca';1447actualmatch = string.match(pattern);1448expectedmatch = null;1449addThis();1450status = inSection(228);1451pattern = /abb$/;1452string = 'b\nca';1453actualmatch = string.match(pattern);1454expectedmatch = null;1455addThis();1456status = inSection(229);1457pattern = /abb\Z/m;1458string = 'ca\nb\n';1459actualmatch = string.match(pattern);1460expectedmatch = null;1461addThis();1462status = inSection(230);1463pattern = /abb\z/m;1464string = 'ca\nb\n';1465actualmatch = string.match(pattern);1466expectedmatch = null;1467addThis();1468status = inSection(231);1469pattern = /abb$/m;1470string = 'ca\nb\n';1471actualmatch = string.match(pattern);1472expectedmatch = null;1473addThis();1474status = inSection(232);1475pattern = /abb\Z/m;1476string = 'b\nca\n';1477actualmatch = string.match(pattern);1478expectedmatch = null;1479addThis();1480status = inSection(233);1481pattern = /abb\z/m;1482string = 'b\nca\n';1483actualmatch = string.match(pattern);1484expectedmatch = null;1485addThis();1486status = inSection(234);1487pattern = /abb$/m;1488string = 'b\nca\n';1489actualmatch = string.match(pattern);1490expectedmatch = null;1491addThis();1492status = inSection(235);1493pattern = /abb\Z/m;1494string = 'b\nca';1495actualmatch = string.match(pattern);1496expectedmatch = null;1497addThis();1498status = inSection(236);1499pattern = /abb\z/m;1500string = 'b\nca';1501actualmatch = string.match(pattern);1502expectedmatch = null;1503addThis();1504status = inSection(237);1505pattern = /abb$/m;1506string = 'b\nca';1507actualmatch = string.match(pattern);1508expectedmatch = null;1509addThis();1510status = inSection(238);1511pattern = /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/;1512string = 'x';1513actualmatch = string.match(pattern);1514expectedmatch = null;1515addThis();1516status = inSection(239);1517pattern = /\GX.*X/;1518string = 'aaaXbX';1519actualmatch = string.match(pattern);1520expectedmatch = null;1521addThis();1522status = inSection(240);1523pattern = /\.c(pp|xx|c)?$/i;1524string = 'Changes';1525actualmatch = string.match(pattern);1526expectedmatch = null;1527addThis();1528status = inSection(241);1529pattern = /^([a-z]:)/;1530string = 'C:/';1531actualmatch = string.match(pattern);1532expectedmatch = null;1533addThis();1534status = inSection(242);1535pattern = /(\w)?(abc)\1b/;1536string = 'abcab';1537actualmatch = string.match(pattern);1538expectedmatch = null;1539addThis();1540/* ECMA doesn't support (?(1541status = inSection(243);1542pattern = /^(a)?(?(1)a|b)+$/;1543string = 'a';1544actualmatch = string.match(pattern);1545expectedmatch = null;1546addThis();1547*/1548//-----------------------------------------------------------------------------1549test();1550//-----------------------------------------------------------------------------1551function addThis()1552{1553 if(omitCurrentSection())1554 return;1555 statusmessages[i] = status;1556 patterns[i] = pattern;1557 strings[i] = string;1558 actualmatches[i] = actualmatch;1559 expectedmatches[i] = expectedmatch;1560 i++;1561}1562function omitCurrentSection()1563{1564 try1565 {1566 // current section number is in global status variable1567 var n = status.match(/(\d+)/)[1];1568 return ((n < cnLBOUND) || (n > cnUBOUND));1569 }1570 catch(e)1571 {1572 return false;1573 }1574}1575function test()1576{1577 enterFunc ('test');1578 printBugNumber (bug);1579 printStatus (summary);1580 testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches);1581 exitFunc ('test');...
user.controller.js
Source:user.controller.js
...24 }25});26const Op = Sequelize.Op;27exports.allAccess = (req, res) => {28 res.status(200).send("Public Content.");29 };30exports.userBoard = (req, res) => {31 res.status(200).send("User Content.");32};33exports.adminBoard = (req, res) => {34 res.status(200).send("Admin Content.");35};36exports.moderatorBoard = (req, res) => {37 res.status(200).send("Moderator Content.");38};39exports.userAll = (req, res) => {40 User.findAll({41 where: {42 admin: '0'43 }44 })45 .then(users => {46 res.status(200).send(users)47 })48 .catch(err => {49 res.status(500).send([])50 });51}52exports.adminAll = (req, res) => {53 User.findAll({54 where: {55 admin: '1'56 }57 })58 .then(users => {59 res.status(200).send(users)60 })61 .catch(err => {62 res.status(500).send([])63 });64}65exports.userActiveAll = (req, res) => {66 User.findAll({67 where: {68 admin: '0',69 active: 'YES'70 }71 })72 .then(users => {73 res.status(200).send(users)74 })75 .catch(err => {76 res.status(500).send([])77 });78}79exports.userDeactiveAll = (req, res) => {80 User.findAll({81 where: {82 admin: '0',83 active: 'NO'84 }85 })86 .then(users => {87 res.status(200).send(users)88 })89 .catch(err => {90 res.status(500).send([])91 });92}93exports.userOne = (req, res) => {94 User.findOne({95 where: {96 id: req.body.id97 }98 })99 .then(user => {100 res.status(200).send(user)101 })102 .catch(err => {103 res.status(500).send({})104 });105}106exports.update = (req, res) => {107 let user = req.body;108 let id = req.body.id;109 delete user.id;110 delete user.updatedAt;111 if(user.password)112 user.password = bcrypt.hashSync(user.password, 8);113 User.update(114 user,115 {where: {id: id}}116 )117 .then(user => {118 return res.status(200).send({ status:'success', message: "Ação realizada com sucesso!" });119 })120 .catch(err => {121 return res.status(500).send({ status:'fail', message: err.message });122 });123}124exports.updatePassword = (req, res) => {125 User.findOne({126 where: {127 id: req.body.id128 }129 }).then(user => {130 if (!user) {131 return res.status(404).send({ message: "Usuário não encontrado." });132 }133 var passwordIsValid = bcrypt.compareSync(134 req.body.current_password,135 user.password136 );137 console.log(passwordIsValid);138 if (!passwordIsValid) {139 return res.status(401).send({ status:'fail', message: "Senha inválida!" });140 }141 User.update(142 {password: bcrypt.hashSync(req.body.password, 8)},143 {where: {id: req.body.id}}144 )145 .then(user => {146 return res.status(200).send({ status:'success', message: "Ação realizada com sucesso!" });147 })148 .catch(err => {149 return res.status(500).send({ status:'fail', message: err.message });150 });151 })152 .catch(err => {153 res.status(500).send({ message: err.message });154 });155}156exports.delete = (req, res) => {157 console.log(req.body)158 User.destroy(159 {where: {id: req.body.id}}160 )161 .then(user => {162 Deposit.destroy(163 {where: {user_id: req.body.id}}164 )165 Withdraw.destroy(166 {where: {user_id: req.body.id}}167 )168 Contract_history.destroy(169 {where: {user_id: req.body.id}}170 )171 Contract.destroy(172 {where: {user_id: req.body.id}}173 )174 Case.destroy(175 {where: {user_id: req.body.id}}176 )177 Contract_pdf.destroy(178 {where: {user_id: req.body.id}}179 )180 Case_deposit.destroy(181 {where: {user_id: req.body.id}}182 )183 return res.status(200).send({ status:'success', message: "Ação realizada com sucesso!" });184 })185 .catch(err => {186 return res.status(500).send({ status:'fail', message: err.message });187 });188}189exports.setActive = (req, res) => {190 let upload = multer({ storage: storage,limits:{fileSize:'10mb'}, fileFilter: multerHelper.pdfFilter}).single('admin_pdf');191 upload(req, res, function(err) {192 if (req.fileValidationError) {193 return res.status(200).send({ status:'fail', message: req.fileValidationError });194 }195 else if (!req.file) {196 User.update(197 {198 active: req.body.active,199 },200 {where: {id: req.body.userId}}201 )202 .then(user => {203 let now = moment();204 Contract.create(205 {206 user_id: req.body.userId,207 open_value: req.body.investment,208 invest_type: req.body.investment_type,209 start_date: now.format("YYYY-MM-DD"),210 status: 'processando',211 percent: req.body.investment_type === 'FLEXIVEL' ? constant_config.FLEX_DEFAULT_PERCENT: constant_config.CRESC_DEFAULT_PERCENT,212 end_date: req.body.investment_type === 'FLEXIVEL' ? moment(now.format("YYYY-MM-DD")).add(1, 'M') : moment(now.format("YYYY-MM-DD")).add(8, 'M')213 }214 )215 .then(res_data => {216 Contract_history.create(217 {218 user_id: res_data.user_id,219 value: res_data.open_value,220 contract_id: res_data.id,221 action_type: 0,222 invest_type: res_data.invest_type223 }224 )225 let contract_pdf_create = {226 user_id: req.body.userId,227 invest_type: req.body.investment_type,228 }229 if (req.body.investment_type === 'FLEXIVEL') {230 Contract_pdf.create(contract_pdf_create)231 } else if (req.body.investment_type === 'CRESCIMENTO') {232 Contract_percent.create({233 contract_id: res_data.id,234 percent: constant_config.CRESC_DEFAULT_PERCENT235 })236 contract_pdf_create = {237 user_id: req.body.userId,238 invest_type: req.body.investment_type,239 contract_id: res_data.id240 }241 Contract_pdf.create(contract_pdf_create)242 }243 Case.count({244 where: {user_id: req.body.userId}}).then(count => {245 if( count === 0 ) {246 Case.create({user_id: req.body.userId, balance: 0}).then(create_case => {247 console.log(create_case)248 })249 }250 })251 return res.status(200).send({ status:'success', message: "Ação realizada com sucesso!" });252 })253 .catch(err => {254 return res.status(200).send({ status:'fail', message: err.message });255 });256 })257 .catch(err => {258 return res.status(200).send({ status:'fail', message: err.message });259 });260 return res.status(200).send({ status:'success', message: "Ação realizada com sucesso!" });261 }262 else if (err instanceof multer.MulterError) {263 return res.status(200).send({ status:'fail', message: err });264 }265 else if (err) {266 return res.status(200).send({ status:'fail', message: err });267 }else if (req.file) {268 User.update(269 {270 active: req.body.active,271 },272 { where: { id: req.body.userId } }273 )274 .then(user => {275 let now = moment();276 Contract.create(277 {278 user_id: req.body.userId,279 open_value: req.body.investment,280 invest_type: req.body.investment_type,281 start_date: now.format("YYYY-MM-DD"),282 status: 'processando',283 percent: req.body.investment_type === 'FLEXIVEL' ? constant_config.FLEX_DEFAULT_PERCENT: constant_config.CRESC_DEFAULT_PERCENT,284 end_date: req.body.investment_type == 'FLEXIVEL' ? moment(now.format("YYYY-MM-DD")).add(1, 'M') : moment(now.format("YYYY-MM-DD")).add(8, 'M')285 }286 )287 .then(res_data => {288 Contract_history.create(289 {290 user_id: res_data.user_id,291 value: res_data.open_value,292 contract_id: res_data.id,293 action_type: 0,294 invest_type: res_data.invest_type295 }296 )297 let contract_pdf_create = {298 user_id: req.body.userId,299 admin_pdf: req.file.path,300 invest_type: req.body.investment_type,301 }302 if (req.body.investment_type === 'FLEXIVEL') {303 contract_pdf_create = {304 user_id: req.body.userId,305 admin_pdf: req.file.path,306 invest_type: req.body.investment_type,307 }308 } else if (req.body.investment_type === 'CRESCIMENTO') {309 Contract_percent.create({310 contract_id: res_data.id,311 percent: constant_config.CRESC_DEFAULT_PERCENT312 })313 contract_pdf_create = {314 user_id: req.body.userId,315 admin_pdf2: req.file.path,316 invest_type: req.body.investment_type,317 contract_id: res_data.id318 }319 }320 Contract_pdf.create(contract_pdf_create)321 Case.count({322 where: { user_id: req.body.userId }323 }).then(count => {324 if (count == 0) {325 Case.create({ user_id: req.body.userId, balance: 0 }).then(create_case => {326 console.log(create_case)327 })328 }329 })330 return res.status(200).send({ status: 'success', message: "Ação realizada com sucesso!" });331 })332 .catch(err => {333 return res.status(200).send({ status: 'fail', message: err.message });334 });335 })336 .catch(err => {337 return res.status(200).send({ status: 'fail', message: err.message });338 });339 }340 })341}342exports.userBank = (req, res) => {343 Bank.findOne({344 include: [{345 model: Bank_list, User346 }],347 where: {348 user_id: req.body.user_id349 }350 })351 .then(bank => {352 res.status(200).send(bank)353 })354 .catch(err => {355 res.status(500).send({})356 });357}358exports.bankUpdate = (req, res) => {359 let bank = req.body;360 Bank.findOne({361 where: {362 user_id: req.body.user_id363 }364 })365 .then(res_data => {366 if(!res_data) {367 Bank.create(368 bank369 )370 .then(res_data => {371 return res.status(200).send({ status:'success', message: "Ação realizada com sucesso!" });372 })373 .catch(err => {374 return res.status(500).send({ status:'fail', message: err.message });375 });376 } else {377 let user_id = req.body.user_id;378 delete bank.user_id;379 delete bank.updatedAt;380 Bank.update(381 bank,382 {where: {user_id: user_id}}383 )384 .then(res_data => {385 return res.status(200).send({ status:'success', message: "Ação realizada com sucesso!" });386 })387 .catch(err => {388 return res.status(500).send({ status:'fail', message: err.message });389 });390 }391 }).catch(err => {392 return res.status(500).send({ status:'fail', message: err.message });393 });394}395exports.getBalance = (req, res) => {396 let now = moment();397 console.log('-----------get balance-------------')398 if(moment().isBetween(now.date(2).format("YYYY-MM-DD"), now.endOf('month').format("YYYY-MM-DD"))) {399 console.log('-----------get balance-------------')400 Case.findOne({401 include: [{402 model: User,403 }],404 where: {405 user_id: req.body.user_id406 }407 })408 .then(data => {409 console.log('-----------get balance-------------')410 console.log(data)411 res.status(200).send(data)412 })413 .catch(err => {414 res.status(200).send({status: 'fail', message: "Você não tem saldo suficiente"})415 });416 }else {417 console.log('-----------get balance-------------')418 res.status(200).send({status: 'fail', title: 'Saque', message: 'O saque ficará disponÃvel entre os dias 25 e 30 de cada mês.'})419 }420}421exports.contract_all = (req, res) => {422 Contract_pdf.findAll({423 include: [424 {425 model: User,426 attributes: ['id', 'cpf', 'email', 'full_name'],427 },428 {429 model: Contract430 }431 ],432 where: req.body433 })434 .then(users => {435 res.status(200).send(users)436 })437 .catch(err => {438 res.status(500).send([])439 });440}441exports.contract_by_user = (req, res) => {442 Contract_pdf.findOne({443 where: {444 user_id: req.body.user_id445 }446 })447 .then(data => {448 res.status(200).send(data)449 })450 .catch(err => {451 res.status(500).send(null)452 });453}454exports.download_contract = (req, res) => {455 const filepath = req.body.pdf_path;456 res.download(filepath, "contract.pdf")457}458exports.admin_upload_contract = (req, res) => {459 let upload = multer({ storage: storage,limits:{fileSize:'10mb'}, fileFilter: multerHelper.pdfFilter}).single('admin_pdf');460 upload(req, res, function(err) {461 if (req.fileValidationError) {462 return res.status(200).send({ status:'fail', message: req.fileValidationError });463 }464 else if (!req.file) {465 return res.status(200).send({ status:'fail', message: 'please select file' });466 }467 else if (err instanceof multer.MulterError) {468 return res.status(200).send({ status:'fail', message: err });469 }470 else if (err) {471 return res.status(200).send({ status:'fail', message: err });472 }473 let update_data = {474 user_id: req.body.userId,475 admin_pdf: req.file.path476 }477 if(req.body.pdf_field == "admin_pdf") {478 update_data = {479 user_id: req.body.userId,480 admin_pdf: req.file.path481 }482 }else if(req.body.pdf_field == 'admin_pdf2'){483 update_data = {484 user_id: req.body.userId,485 admin_pdf2: req.file.path486 }487 }488 Contract_pdf.update(489 update_data,490 {where: {contract_id: req.body.id}}491 )492 .then(res_data => {493 return res.status(200).send({ status:'success', message: "upload success" });494 })495 .catch(err => {496 return res.status(200).send({ status:'fail', message: "upload fail" });497 });498 })499}500exports.user_upload_contract = (req, res) => {501 let upload = multer({ storage: storage,limits:{fileSize:'10mb'}, fileFilter: multerHelper.pdfFilter}).single('user_pdf');502 upload(req, res, function(err) {503 if (req.fileValidationError) {504 return res.status(200).send({ status:'fail', message: req.fileValidationError });505 }506 else if (!req.file) {507 return res.status(200).send({ status:'fail', message: 'please select file' });508 }509 else if (err instanceof multer.MulterError) {510 return res.status(200).send({ status:'fail', message: err });511 }512 else if (err) {513 return res.status(200).send({ status:'fail', message: err });514 }515 let update_data = {516 user_pdf: req.file.path517 }518 let where_con = {user_id: req.userId}519 if(req.body.pdf_field == "user_pdf") {520 update_data = {521 user_pdf: req.file.path522 }523 }else if(req.body.pdf_field == 'user_pdf2'){524 update_data = {525 user_pdf2: req.file.path526 }527 where_con = {user_id: req.userId, contract_id: req.body.contract_id}528 }529 Contract_pdf.update(530 update_data,531 {where: where_con}532 )533 .then(res_data => {534 return res.status(200).send({ status:'success', message: "upload success" });535 })536 .catch(err => {537 return res.status(200).send({ status:'fail', message: "upload fail" });538 });539 })540}541exports.download_user_contract = (req, res) => {542 Contract_pdf.findOne({where: {user_id: req.userId}}).then(data => {543 let filepath = data.admin_pdf544 if(req.body.invest_type == 'CRESCIMENTO') {545 filepath = data.admin_pdf2546 }else if(req.body.invest_type == 'FLEXIVEL') {547 filepath = data.admin_pdf548 }549 res.download(filepath, "contract.pdf")550 })551}552exports.download_user_contract_by_cp = (req, res) => {553 Contract_pdf.findOne({where: {id: req.body.contract_pdf_id}}).then(data => {554 const filepath = data.admin_pdf2555 res.download(filepath, "contract.pdf")556 })557}558exports.check_cpf_user = (req, res) => {559 User.findOne({where: {cpf: req.body.cpf, active: 'YES'}}).then(data => {560 return res.status(200).send({cpf_user: data})561 }).catch(err => {562 return res.status(200).send({cpf_user: null});563 });564}565exports.bank_all = (req, res) => {566 Bank_list.findAll()567 .then(datas => {568 res.status(200).send(datas)569 })570 .catch(err => {571 res.status(500).send([])572 });573}574exports.all_case_deposit = (req, res) => {575 Case_deposit.findAll({include: [User]})576 .then(datas => {577 res.status(200).send(datas)578 })579 .catch(err => {580 res.status(500).send([])581 });582}583exports.add_fund = (req, res) => {584 let now = moment();585 Case_deposit.create(586 {587 admin_id: req.userId,588 user_id: req.body.user_id,589 amount: req.body.amount,590 }591 )592 .then(res_data => {593 Case.count({where: {user_id: req.body.user_id}}).then(count => {594 if(count == 0 ) {595 Case.create({user_id: req.body.user_id, balance: req.body.amount}).then(create_case => {596 })597 }else if(count > 0) {598 Case.increment(599 {balance: req.body.amount},600 {where: {user_id: req.body.user_id}}601 )602 }603 })604 return res.status(200).send({ status:'success', message: "Ação realizada com sucesso!" });605 })606 .catch(err => {607 return res.status(500).send({ status:'fail', message: err.message });608 });609}610exports.setProfit = (req, res) => {611 User.update(612 {profit_percent: req.body.profit_percent},613 {where: {id: req.body.user_id}}614 )615 .then(user => {616 return res.status(200).send({ status:'success', message: "Ação realizada com sucesso!" });617 })618 .catch(err => {619 return res.status(500).send({ status:'fail', message: err.message });620 });621}622exports.getPlanSum = (req, res) => {623 let param = { where: { invest_type: req.body.invest_type, status: 'processando' } };624 if(req.body.invest_type == '' || req.body.invest_type == null) {625 param = {where: {status: 'processando'}};626 }627 Contract.sum('open_value', param).then(sum => {628 return res.status(200).send({ status:'success', sum: sum })629 }).catch(err => {630 return res.status(200).send({ status:'fail', message: err.message })631 })632}633exports.getPlanSumByUser = (req, res) => {634 let param = { where: { invest_type: req.body.invest_type, user_id: req.userId, status: 'processando' } };635 if(req.body.invest_type == '' || req.body.invest_type == null) {636 param = { where: { user_id: req.userId, status: 'processando' } };637 }638 Contract.sum('open_value', param).then(sum => {639 Contract.max('end_date', param).then(max => {640 return res.status(200).send({ status:'success', sum: sum, max: max })641 }).catch(err => {642 return res.status(200).send({ status:'fail', message: err.message })643 })644 }).catch(err => {645 return res.status(200).send({ status:'fail', message: err.message })646 })647}648exports.getPlanExpDateByUser = (req, res) => {649 let param = { where: { invest_type: req.body.invest_type, user_id: req.userId } };650 if(req.body.invest_type == '' || req.body.invest_type == null) {651 param = {};652 }653 Contract.max('end_date', param).then(max => {654 return res.status(200).send({ status:'success', max: max })655 }).catch(err => {656 return res.status(200).send({ status:'fail', message: err.message })657 })658}659exports.withdraw_sum_pending = (req, res) => {660 Withdraw.sum('value', {where: {status: 'pendente'}}).then(sum => {661 return res.status(200).send({ status:'success', sum: sum })662 }).catch(err => {663 return res.status(200).send({ status:'fail', message: err.message })664 })665}666exports.withdraw_sum_paid = (req, res) => {667 Withdraw.sum(668 'value',669 { where:670 {671 status: 'concluÃdo',672 updatedAt: {673 [Op.gt]: moment(moment().format("YYYY-MM-DD")).subtract(1,'months').startOf('month').format('YYYY-MM-DD'),674 [Op.lte]: moment(moment().format("YYYY-MM-DD")).subtract(1,'months').endOf('month').format('YYYY-MM-DD')675 }676 }677 }678 )679 .then(sum => {680 return res.status(200).send({ status:'success', sum: sum })681 }).catch(err => {682 return res.status(200).send({ status:'fail', message: err.message })683 })684}685exports.active_users_count = (req, res) => {686 User.count({where: {active: 'YES', admin: '0'}}).then(count => {687 return res.status(200).send({ status:'success', sum: count })688 }).catch(err => {689 return res.status(200).send({ status:'fail', message: err.message })690 })691}692exports.getExpiredProfitSumByUser = (req, res) => {693 Contract.findAll(694 {695 where: { status: 'concluÃdo', user_id: req.userId },696 raw: true697 }698 ).then((expired_datas) => {699 var total_sum = 0;700 var flexible_total_sum = 0;701 var item_total_sum = 0;702 if (expired_datas.length > 0) {703 expired_datas.forEach(function(item, index) {704 if(item.invest_type === 'CRESCIMENTO') {705 item_total_sum = Number(item.open_value)706 for(let i = 1; i <= 8; i++){707 item_total_sum = item_total_sum*item.percent/100 + item_total_sum708 }709 total_sum = total_sum + item_total_sum710 }else {711 item_total_sum = Number(item.open_value)712 item_total_sum = item_total_sum*item.percent/100 + item_total_sum713 flexible_total_sum = flexible_total_sum + item_total_sum714 }715 });716 return res.status(200).send({ status: 'success', sum: total_sum + flexible_total_sum });717 }else {718 return res.status(200).send({ status:'fail', sum: 0 })719 }720 }).catch(err => {721 return res.status(200).send({ status:'fail', message: err.message })722 });723}724exports.plan_numbers_this_month = (req, res) => {725 Contract.count(726 {727 where: {728 invest_type: 'CRESCIMENTO',729 status: 'processando',730 start_date: {731 [Op.gte]: moment(moment().format('YYYY-MM-DD')).subtract(0, 'months').startOf('month').format('YYYY-MM-DD'),732 [Op.lte]: moment(moment().format('YYYY-MM-DD')).subtract(0, 'months').endOf('month').format('YYYY-MM-DD')733 }734 }735 }736 ).then(count => {737 return res.status(200).send({ status: 'success', sum: count });738 }).catch(err => {739 return res.status(200).send({ status: 'fail', message: err.message });740 });741};742exports.cresc_plan_total = (req, res) => {743/* Contract.findAll({744 attributes: [745 [Sequelize.literal('SUM(open_value + 8 * open_value * percent / 100)'), 'totalsum']746 ],747 where: {748 invest_type: 'CRESCIMENTO',749 status: 'processando'750 }751 }).then(result => {752 return res.status(200).send({ status:'success', sum: result })753 }).catch(err => {754 return res.status(200).send({ status:'fail', message: err.message })755 })756 Contract.sum('open_value', { where: { invest_type: 'CRESCIMENTO' } }).then(sum => {757 return res.status(200).send({ status:'success', sum: sum })758 }).catch(err => {759 return res.status(200).send({ status:'fail', message: err.message })760 })*/761 Contract.findAll(762 {763 where: { status: 'processando', invest_type: 'CRESCIMENTO' },764 raw: true765 }766 ).then((expired_datas) => {767 var total_sum = 0;768 if (expired_datas.length > 0) {769 expired_datas.forEach(function(item, index) {770 var item_total_sum = Number(item.open_value)771 for(let i = 1; i <= 8; i++){772 item_total_sum = item_total_sum*item.percent/100 + item_total_sum773 }774 total_sum = total_sum + item_total_sum775 });776 return res.status(200).send({ status:'success', sum: total_sum})777 }else {778 return res.status(200).send({ status:'success', sum: 0 })779 }780 }).catch(err => {781 return res.status(200).send({ status:'fail', message: err.message })782 });783}784exports.admin_deposit_to_user = (req, res) => {785 let params = req.body;786 let now = moment();787 console.log(params.percent)788 Deposit.create(789 {790 admin_value: params.open_value,791 invest_type: params.invest_type,792 percent: params.percent,793 user_id: params.user_id,794 status: 'concluÃdo',795 admin_id: req.userId,796 type: 1797 }798 );799 if(params.invest_type === 'FLEXIVEL') {800 Contract.findAll(801 {802 where: { invest_type: 'FLEXIVEL', user_id: params.user_id },803 raw: true804 }805 ).then((flexible_datas) => {806 if (flexible_datas.length == 0) {807 Contract.create(808 {809 user_id: params.user_id,810 open_value: params.open_value,811 invest_type: 'FLEXIVEL',812 // start_date: now.format("YYYY-MM-DD"),813 // end_date: moment(now.format("YYYY-MM-DD")).add(1, 'M'),814 end_date: moment(moment(params.start_date).format("YYYY-MM-DD")).add(1, 'M'),815 start_date: moment(params.start_date).format("YYYY-MM-DD"),816 status: 'processando',817 // percent: constant_config.FLEX_DEFAULT_PERCENT,818 percent: params.percent819 }820 ).then(res_data => {821 Contract_history.create(822 {823 user_id: res_data.user_id,824 value: res_data.open_value,825 contract_id: res_data.id,826 action_type: 0,827 invest_type: res_data.invest_type828 }829 )830 let contract_pdf_create = {831 user_id: params.user_id,832 invest_type: 'FLEXIVEL'833 }834 Contract_pdf.create(contract_pdf_create)835 return res.status(200).send({ status:'success', message: "Ação realizada com sucesso!" });836 })837 .catch(err => {838 return res.status(200).send({ status:'fail', message: err.message });839 });840 }else if (flexible_datas.length > 0) {841 Contract.findOne(842 {843 where: { invest_type: 'FLEXIVEL', user_id: params.user_id, status: 'processando' },844 raw: true845 }846 ).then((flex_pending_data) => {847 if(flex_pending_data) {848 Contract.update(849 { open_value: Number(flex_pending_data.open_value) + Number(params.open_value), percent: params.percent },850 { where: { id: flex_pending_data.id } }851 )852 .then(user => {853 return res.status(200).send({ status: 'success', message: 'Ação realizada com sucesso!' });854 })855 .catch(err => {856 return res.status(500).send({ status: 'fail', message: err.message });857 });858 }else {859 Contract.create(860 {861 user_id: params.user_id,862 open_value: params.open_value,863 invest_type: 'FLEXIVEL',864 // start_date: now.format("YYYY-MM-DD"),865 // end_date: moment(now.format("YYYY-MM-DD")).add(1, 'M'),866 end_date: moment(moment(params.start_date).format("YYYY-MM-DD")).add(1, 'M'),867 start_date: moment(params.start_date).format("YYYY-MM-DD"),868 status: 'processando',869 // percent: constant_config.FLEX_DEFAULT_PERCENT,870 percent: params.percent871 }872 ).then(res_data => {873 Contract_history.create(874 {875 user_id: res_data.user_id,876 value: res_data.open_value,877 contract_id: res_data.id,878 action_type: 0,879 invest_type: res_data.invest_type880 }881 )882 let contract_pdf_create = {883 user_id: params.user_id,884 invest_type: 'FLEXIVEL'885 }886 Contract_pdf.create(contract_pdf_create)887 return res.status(200).send({ status:'success', message: "Ação realizada com sucesso!" });888 })889 .catch(err => {890 return res.status(200).send({ status:'fail', message: err.message });891 });892 }893 })894 }895 })896 }else if(params.invest_type === 'CRESCIMENTO'){897 Contract.create(898 {899 user_id: params.user_id,900 open_value: params.open_value,901 invest_type: 'CRESCIMENTO',902 // start_date: now.format("YYYY-MM-DD"),903 // end_date: moment(now.format("YYYY-MM-DD")).add(8, 'M'),904 end_date: moment(moment(params.start_date).format("YYYY-MM-DD")).add(8, 'M'),905 start_date: moment(params.start_date).format("YYYY-MM-DD"),906 status: 'processando',907 // percent: constant_config.CRESC_DEFAULT_PERCENT,908 percent: params.percent909 }910 )911 .then(res_data => {912 Contract_history.create(913 {914 user_id: res_data.user_id,915 value: res_data.open_value,916 contract_id: res_data.id,917 action_type: 0,918 invest_type: res_data.invest_type919 }920 )921 Contract_percent.create({922 contract_id: res_data.id,923 // percent: constant_config.CRESC_DEFAULT_PERCENT924 percent: params.percent,925 })926 let contract_pdf_create = {927 user_id: params.user_id,928 invest_type: 'CRESCIMENTO',929 contract_id: res_data.id930 }931 Contract_pdf.create(contract_pdf_create)932 return res.status(200).send({ status:'success', message: "Ação realizada com sucesso!" });933 })934 .catch(err => {935 return res.status(200).send({ status:'fail', message: err.message });936 });937 }else {938 return res.status(200).send({ status: 'fail', message: 'fail' });939 }940};941exports.admin_create = (req, res) => {942 // Save User to Database943 let create_data = req.body;944 create_data.password = bcrypt.hashSync(req.body.password, 8);945 delete create_data.confirm;946 create_data.admin = '1';947 create_data.client_type = 'ADMIN';948 console.log(create_data);949 User.create(create_data)950 .then(user => {951 user.setRoles([2]).then(() => {952 res.send({ status: 'success', message: "Ação realizada com sucesso!" });953 });954 })955 .catch(err => {956 res.status(500).send({ stauts: 'fail', message: err.message });957 });...
testIncomplete.js
Source:testIncomplete.js
1/*2 * Copyright 2012, Mozilla Foundation and contributors3 *4 * Licensed under the Apache License, Version 2.0 (the "License");5 * you may not use this file except in compliance with the License.6 * You may obtain a copy of the License at7 *8 * http://www.apache.org/licenses/LICENSE-2.09 *10 * Unless required by applicable law or agreed to in writing, software11 * distributed under the License is distributed on an "AS IS" BASIS,12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.13 * See the License for the specific language governing permissions and14 * limitations under the License.15 */16'use strict';17var assert = require('../testharness/assert');18var helpers = require('./helpers');19exports.testBasic = function(options) {20 return helpers.audit(options, [21 {22 setup: 'tsu 2 extra',23 check: {24 args: {25 num: { value: 2, type: 'Argument' }26 }27 },28 post: function() {29 var requisition = options.requisition;30 assert.is(requisition._unassigned.length,31 1,32 'single unassigned: tsu 2 extra');33 assert.is(requisition._unassigned[0].param.type.isIncompleteName,34 false,35 'unassigned.isIncompleteName: tsu 2 extra');36 }37 },38 {39 setup: 'tsu',40 check: {41 args: {42 num: { value: undefined, type: 'BlankArgument' }43 }44 }45 },46 {47 setup: 'tsg',48 check: {49 args: {50 solo: { type: 'BlankArgument' },51 txt1: { type: 'BlankArgument' },52 bool: { type: 'BlankArgument' },53 txt2: { type: 'BlankArgument' },54 num: { type: 'BlankArgument' }55 }56 }57 }58 ]);59};60exports.testCompleted = function(options) {61 return helpers.audit(options, [62 {63 setup: 'tsela<TAB>',64 check: {65 args: {66 command: { name: 'tselarr', type: 'Argument' },67 num: { type: 'BlankArgument' },68 arr: { type: 'ArrayArgument' }69 }70 }71 },72 {73 setup: 'tsn dif ',74 check: {75 input: 'tsn dif ',76 hints: '<text>',77 markup: 'VVVVVVVV',78 cursor: 8,79 status: 'ERROR',80 args: {81 command: { name: 'tsn dif', type: 'MergedArgument' },82 text: { type: 'BlankArgument', status: 'INCOMPLETE' }83 }84 }85 },86 {87 setup: 'tsn di<TAB>',88 check: {89 input: 'tsn dif ',90 hints: '<text>',91 markup: 'VVVVVVVV',92 cursor: 8,93 status: 'ERROR',94 args: {95 command: { name: 'tsn dif', type: 'Argument' },96 text: { type: 'BlankArgument', status: 'INCOMPLETE' }97 }98 }99 },100 // The above 2 tests take different routes to 'tsn dif '.101 // The results should be similar. The difference is in args.command.type.102 {103 setup: 'tsg -',104 check: {105 input: 'tsg -',106 hints: '-txt1 <solo> [options]',107 markup: 'VVVVI',108 cursor: 5,109 status: 'ERROR',110 args: {111 solo: { value: undefined, status: 'INCOMPLETE' },112 txt1: { value: undefined, status: 'VALID' },113 bool: { value: false, status: 'VALID' },114 txt2: { value: undefined, status: 'VALID' },115 num: { value: undefined, status: 'VALID' }116 }117 }118 },119 {120 setup: 'tsg -<TAB>',121 check: {122 input: 'tsg --txt1 ',123 hints: '<string> <solo> [options]',124 markup: 'VVVVIIIIIIV',125 cursor: 11,126 status: 'ERROR',127 args: {128 solo: { value: undefined, status: 'INCOMPLETE' },129 txt1: { value: undefined, status: 'INCOMPLETE' },130 bool: { value: false, status: 'VALID' },131 txt2: { value: undefined, status: 'VALID' },132 num: { value: undefined, status: 'VALID' }133 }134 }135 },136 {137 setup: 'tsg --txt1 fred',138 check: {139 input: 'tsg --txt1 fred',140 hints: ' <solo> [options]',141 markup: 'VVVVVVVVVVVVVVV',142 status: 'ERROR',143 args: {144 solo: { value: undefined, status: 'INCOMPLETE' },145 txt1: { value: 'fred', status: 'VALID' },146 bool: { value: false, status: 'VALID' },147 txt2: { value: undefined, status: 'VALID' },148 num: { value: undefined, status: 'VALID' }149 }150 }151 },152 {153 setup: 'tscook key value --path path --',154 check: {155 input: 'tscook key value --path path --',156 hints: 'domain [options]',157 markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVII',158 status: 'ERROR',159 args: {160 key: { value: 'key', status: 'VALID' },161 value: { value: 'value', status: 'VALID' },162 path: { value: 'path', status: 'VALID' },163 domain: { value: undefined, status: 'VALID' },164 secure: { value: false, status: 'VALID' }165 }166 }167 },168 {169 setup: 'tscook key value --path path --domain domain --',170 check: {171 input: 'tscook key value --path path --domain domain --',172 hints: 'secure [options]',173 markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVII',174 status: 'ERROR',175 args: {176 key: { value: 'key', status: 'VALID' },177 value: { value: 'value', status: 'VALID' },178 path: { value: 'path', status: 'VALID' },179 domain: { value: 'domain', status: 'VALID' },180 secure: { value: false, status: 'VALID' }181 }182 }183 }184 ]);185};186exports.testCase = function(options) {187 return helpers.audit(options, [188 {189 setup: 'tsg AA',190 check: {191 input: 'tsg AA',192 hints: ' [options] -> aaa',193 markup: 'VVVVII',194 status: 'ERROR',195 args: {196 solo: { value: undefined, text: 'AA', status: 'INCOMPLETE' },197 txt1: { value: undefined, status: 'VALID' },198 bool: { value: false, status: 'VALID' },199 txt2: { value: undefined, status: 'VALID' },200 num: { value: undefined, status: 'VALID' }201 }202 }203 }204 ]);205};206exports.testIncomplete = function(options) {207 return helpers.audit(options, [208 {209 setup: 'tsm a a -',210 check: {211 args: {212 abc: { value: 'a', type: 'Argument' },213 txt: { value: 'a', type: 'Argument' },214 num: { value: undefined, arg: ' -', type: 'Argument', status: 'INCOMPLETE' }215 }216 }217 },218 {219 setup: 'tsg -',220 check: {221 args: {222 solo: { type: 'BlankArgument' },223 txt1: { type: 'BlankArgument' },224 bool: { type: 'BlankArgument' },225 txt2: { type: 'BlankArgument' },226 num: { type: 'BlankArgument' }227 }228 },229 post: function() {230 var requisition = options.requisition;231 assert.is(requisition._unassigned[0],232 requisition.getAssignmentAt(5),233 'unassigned -');234 assert.is(requisition._unassigned.length,235 1,236 'single unassigned - tsg -');237 assert.is(requisition._unassigned[0].param.type.isIncompleteName,238 true,239 'unassigned.isIncompleteName: tsg -');240 }241 }242 ]);243};244exports.testRepeated = function(options) {245 return helpers.audit(options, [246 {247 setup: 'tscook key value --path jjj --path kkk',248 check: {249 input: 'tscook key value --path jjj --path kkk',250 hints: ' [options]',251 markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVEEEEEEVEEE',252 cursor: 38,253 current: '__unassigned',254 status: 'ERROR',255 options: [ ],256 message: '',257 predictions: [ ],258 unassigned: [ ' --path', ' kkk' ],259 args: {260 command: { name: 'tscook' },261 key: {262 value: 'key',263 arg: ' key',264 status: 'VALID',265 message: ''266 },267 value: {268 value: 'value',269 arg: ' value',270 status: 'VALID',271 message: ''272 },273 path: {274 value: 'jjj',275 arg: ' --path jjj',276 status: 'VALID',277 message: ''278 },279 domain: {280 value: undefined,281 arg: '',282 status: 'VALID',283 message: ''284 },285 secure: {286 value: false,287 arg: '',288 status: 'VALID',289 message: ''290 },291 }292 }293 }294 ]);295};296exports.testHidden = function(options) {297 return helpers.audit(options, [298 {299 setup: 'tshidde',300 check: {301 input: 'tshidde',302 hints: ' -> tse',303 status: 'ERROR'304 }305 },306 {307 setup: 'tshidden',308 check: {309 input: 'tshidden',310 hints: ' [options]',311 markup: 'VVVVVVVV',312 status: 'VALID',313 args: {314 visible: { value: undefined, status: 'VALID' },315 invisiblestring: { value: undefined, status: 'VALID' },316 invisibleboolean: { value: false, status: 'VALID' }317 }318 }319 },320 {321 setup: 'tshidden --vis',322 check: {323 input: 'tshidden --vis',324 hints: 'ible [options]',325 markup: 'VVVVVVVVVIIIII',326 status: 'ERROR',327 args: {328 visible: { value: undefined, status: 'VALID' },329 invisiblestring: { value: undefined, status: 'VALID' },330 invisibleboolean: { value: false, status: 'VALID' }331 }332 }333 },334 {335 setup: 'tshidden --invisiblestrin',336 check: {337 input: 'tshidden --invisiblestrin',338 hints: ' [options]',339 markup: 'VVVVVVVVVEEEEEEEEEEEEEEEE',340 status: 'ERROR',341 args: {342 visible: { value: undefined, status: 'VALID' },343 invisiblestring: { value: undefined, status: 'VALID' },344 invisibleboolean: { value: false, status: 'VALID' }345 }346 }347 },348 {349 setup: 'tshidden --invisiblestring',350 check: {351 input: 'tshidden --invisiblestring',352 hints: ' <string> [options]',353 markup: 'VVVVVVVVVIIIIIIIIIIIIIIIII',354 status: 'ERROR',355 args: {356 visible: { value: undefined, status: 'VALID' },357 invisiblestring: { value: undefined, status: 'INCOMPLETE' },358 invisibleboolean: { value: false, status: 'VALID' }359 }360 }361 },362 {363 setup: 'tshidden --invisiblestring x',364 check: {365 input: 'tshidden --invisiblestring x',366 hints: ' [options]',367 markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVV',368 status: 'VALID',369 args: {370 visible: { value: undefined, status: 'VALID' },371 invisiblestring: { value: 'x', status: 'VALID' },372 invisibleboolean: { value: false, status: 'VALID' }373 }374 }375 },376 {377 setup: 'tshidden --invisibleboolea',378 check: {379 input: 'tshidden --invisibleboolea',380 hints: ' [options]',381 markup: 'VVVVVVVVVEEEEEEEEEEEEEEEEE',382 status: 'ERROR',383 args: {384 visible: { value: undefined, status: 'VALID' },385 invisiblestring: { value: undefined, status: 'VALID' },386 invisibleboolean: { value: false, status: 'VALID' }387 }388 }389 },390 {391 setup: 'tshidden --invisibleboolean',392 check: {393 input: 'tshidden --invisibleboolean',394 hints: ' [options]',395 markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVV',396 status: 'VALID',397 args: {398 visible: { value: undefined, status: 'VALID' },399 invisiblestring: { value: undefined, status: 'VALID' },400 invisibleboolean: { value: true, status: 'VALID' }401 }402 }403 },404 {405 setup: 'tshidden --visible xxx',406 check: {407 input: 'tshidden --visible xxx',408 markup: 'VVVVVVVVVVVVVVVVVVVVVV',409 status: 'VALID',410 hints: '',411 args: {412 visible: { value: 'xxx', status: 'VALID' },413 invisiblestring: { value: undefined, status: 'VALID' },414 invisibleboolean: { value: false, status: 'VALID' }415 }416 }417 }418 ]);...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!