michael@0: // |reftest| skip -- Yarr doesn't bail on complex regexps.
michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public
michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this
michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
michael@0:
michael@0: //-----------------------------------------------------------------------------
michael@0: var BUGNUMBER = 330569;
michael@0: var summary = 'RegExp - throw InternalError on too complex regular expressions';
michael@0: var actual = '';
michael@0: var expect = '';
michael@0:
michael@0:
michael@0: //-----------------------------------------------------------------------------
michael@0: test();
michael@0: //-----------------------------------------------------------------------------
michael@0:
michael@0: function test()
michael@0: {
michael@0: enterFunc ('test');
michael@0: printBugNumber(BUGNUMBER);
michael@0: printStatus (summary);
michael@0:
michael@0: var s;
michael@0: expect = 'InternalError: regular expression too complex';
michael@0:
michael@0: s = '' +
michael@0: '\n' +
michael@0: '
\n' +
michael@0: '\n' +
michael@0: '\n' +
michael@0: '\n'+
michael@0: '\n' +
michael@0: '\n' +
michael@0: '\n' +
michael@0: '\n' +
michael@0: '\n' +
michael@0: '\n';
michael@0:
michael@0: try
michael@0: {
michael@0: //.exec(s);
michael@0: }
michael@0: catch(ex)
michael@0: {
michael@0: actual = ex + '';
michael@0: }
michael@0:
michael@0: reportCompare(expect, actual, summary + ': //.exec(s)');
michael@0:
michael@0: function testre( re, n ) {
michael@0: for ( var i= 0; i <= n; ++i ) {
michael@0: re.test( Array( i+1 ).join() );
michael@0: }
michael@0: }
michael@0:
michael@0: try
michael@0: {
michael@0: testre( /(?:,*)*x/, 22 );
michael@0: }
michael@0: catch(ex)
michael@0: {
michael@0: actual = ex + '';
michael@0: }
michael@0:
michael@0: reportCompare(expect, actual, summary + ': testre( /(?:,*)*x/, 22 )');
michael@0:
michael@0: try
michael@0: {
michael@0: testre( /(?:,|,)*x/, 22 );
michael@0: }
michael@0: catch(ex)
michael@0: {
michael@0: actual = ex + '';
michael@0: }
michael@0:
michael@0: reportCompare(expect, actual, summary + ': testre( /(?:,|,)*x/, 22 )');
michael@0:
michael@0: try
michael@0: {
michael@0: testre( /(?:,|,|,|,|,)*x/, 10 );
michael@0: }
michael@0: catch(ex)
michael@0: {
michael@0: actual = ex + '';
michael@0: }
michael@0: reportCompare(expect, actual, summary + ': testre( /(?:,|,|,|,|,)*x/, 10 )');
michael@0:
michael@0: exitFunc ('test');
michael@0: }