js/src/tests/ecma_3/Exceptions/regress-181914.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

michael@0 1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
michael@0 2 /* This Source Code Form is subject to the terms of the Mozilla Public
michael@0 3 * License, v. 2.0. If a copy of the MPL was not distributed with this
michael@0 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
michael@0 5
michael@0 6 /*
michael@0 7 *
michael@0 8 * Date: 25 Nov 2002
michael@0 9 * SUMMARY: Calling a user-defined superconstructor
michael@0 10 * See http://bugzilla.mozilla.org/show_bug.cgi?id=181914, esp. Comment 10.
michael@0 11 *
michael@0 12 */
michael@0 13 //-----------------------------------------------------------------------------
michael@0 14 var UBound = 0;
michael@0 15 var BUGNUMBER = '181914';
michael@0 16 var summary = 'Calling a user-defined superconstructor';
michael@0 17 var status = '';
michael@0 18 var statusitems = [];
michael@0 19 var actual = '';
michael@0 20 var actualvalues = [];
michael@0 21 var expect= '';
michael@0 22 var expectedvalues = [];
michael@0 23 var EMPTY_STRING = '';
michael@0 24 var EXPECTED_FORMAT = 0;
michael@0 25
michael@0 26
michael@0 27 // make a user-defined version of the Error constructor
michael@0 28 function _Error(msg)
michael@0 29 {
michael@0 30 this.message = msg;
michael@0 31 }
michael@0 32 _Error.prototype = new Error();
michael@0 33 _Error.prototype.name = '_Error';
michael@0 34
michael@0 35
michael@0 36 // derive MyApplyError from _Error
michael@0 37 function MyApplyError(msg)
michael@0 38 {
michael@0 39 if(this instanceof MyApplyError)
michael@0 40 _Error.apply(this, arguments);
michael@0 41 else
michael@0 42 return new MyApplyError(msg);
michael@0 43 }
michael@0 44 MyApplyError.prototype = new _Error();
michael@0 45 MyApplyError.prototype.name = "MyApplyError";
michael@0 46
michael@0 47
michael@0 48 // derive MyCallError from _Error
michael@0 49 function MyCallError(msg)
michael@0 50 {
michael@0 51 if(this instanceof MyCallError)
michael@0 52 _Error.call(this, msg);
michael@0 53 else
michael@0 54 return new MyCallError(msg);
michael@0 55 }
michael@0 56 MyCallError.prototype = new _Error();
michael@0 57 MyCallError.prototype.name = "MyCallError";
michael@0 58
michael@0 59
michael@0 60 function otherScope(msg)
michael@0 61 {
michael@0 62 return MyApplyError(msg);
michael@0 63 }
michael@0 64
michael@0 65
michael@0 66 status = inSection(1);
michael@0 67 var err1 = new MyApplyError('msg1');
michael@0 68 actual = examineThis(err1, 'msg1');
michael@0 69 expect = EXPECTED_FORMAT;
michael@0 70 addThis();
michael@0 71
michael@0 72 status = inSection(2);
michael@0 73 var err2 = new MyCallError('msg2');
michael@0 74 actual = examineThis(err2, 'msg2');
michael@0 75 expect = EXPECTED_FORMAT;
michael@0 76 addThis();
michael@0 77
michael@0 78 status = inSection(3);
michael@0 79 var err3 = MyApplyError('msg3');
michael@0 80 actual = examineThis(err3, 'msg3');
michael@0 81 expect = EXPECTED_FORMAT;
michael@0 82 addThis();
michael@0 83
michael@0 84 status = inSection(4);
michael@0 85 var err4 = MyCallError('msg4');
michael@0 86 actual = examineThis(err4, 'msg4');
michael@0 87 expect = EXPECTED_FORMAT;
michael@0 88 addThis();
michael@0 89
michael@0 90 status = inSection(5);
michael@0 91 var err5 = otherScope('msg5');
michael@0 92 actual = examineThis(err5, 'msg5');
michael@0 93 expect = EXPECTED_FORMAT;
michael@0 94 addThis();
michael@0 95
michael@0 96 status = inSection(6);
michael@0 97 var err6 = otherScope();
michael@0 98 actual = examineThis(err6, EMPTY_STRING);
michael@0 99 expect = EXPECTED_FORMAT;
michael@0 100 addThis();
michael@0 101
michael@0 102 status = inSection(7);
michael@0 103 var err7 = eval("MyApplyError('msg7')");
michael@0 104 actual = examineThis(err7, 'msg7');
michael@0 105 expect = EXPECTED_FORMAT;
michael@0 106 addThis();
michael@0 107
michael@0 108 status = inSection(8);
michael@0 109 var err8;
michael@0 110 try
michael@0 111 {
michael@0 112 throw MyApplyError('msg8');
michael@0 113 }
michael@0 114 catch(e)
michael@0 115 {
michael@0 116 if(e instanceof Error)
michael@0 117 err8 = e;
michael@0 118 }
michael@0 119 actual = examineThis(err8, 'msg8');
michael@0 120 expect = EXPECTED_FORMAT;
michael@0 121 addThis();
michael@0 122
michael@0 123
michael@0 124
michael@0 125 //-----------------------------------------------------------------------------
michael@0 126 test();
michael@0 127 //-----------------------------------------------------------------------------
michael@0 128
michael@0 129
michael@0 130
michael@0 131 // Searches |err.toString()| for |err.name + ':' + err.message|
michael@0 132 function examineThis(err, msg)
michael@0 133 {
michael@0 134 var pattern = err.name + '\\s*:?\\s*' + msg;
michael@0 135 return err.toString().search(RegExp(pattern));
michael@0 136 }
michael@0 137
michael@0 138
michael@0 139 function addThis()
michael@0 140 {
michael@0 141 statusitems[UBound] = status;
michael@0 142 actualvalues[UBound] = actual;
michael@0 143 expectedvalues[UBound] = expect;
michael@0 144 UBound++;
michael@0 145 }
michael@0 146
michael@0 147
michael@0 148 function test()
michael@0 149 {
michael@0 150 enterFunc ('test');
michael@0 151 printBugNumber(BUGNUMBER);
michael@0 152 printStatus (summary);
michael@0 153
michael@0 154 for (var i = 0; i < UBound; i++)
michael@0 155 {
michael@0 156 reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]);
michael@0 157 }
michael@0 158
michael@0 159 exitFunc ('test');
michael@0 160 }

mercurial