1/* ***** BEGIN LICENSE BLOCK *****
2* Version: NPL 1.1/GPL 2.0/LGPL 2.1
3*
4* The contents of this file are subject to the Netscape Public License
5* Version 1.1 (the "License"); you may not use this file except in
6* compliance with the License. You may obtain a copy of the License at
7* 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 License
11* for the specific language governing rights and limitations under the
12* 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) 2002
18* the Initial Developer. All Rights Reserved.
19*
20* Contributor(s): pschwartau@netscape.com
21*
22* Alternatively, the contents of this file may be used under the terms of
23* either the GNU General Public License Version 2 or later (the "GPL"), or
24* 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 instead
26* of those above. If you wish to allow use of your version of this file only
27* under the terms of either the GPL or the LGPL, and not to allow others to
28* use your version of this file under the terms of the NPL, indicate your
29* decision by deleting the provisions above and replace them with the notice
30* and other provisions required by the GPL or the LGPL. If you do not delete
31* the provisions above, a recipient may use your version of this file under
32* the terms of any one of the NPL, the GPL or the LGPL.
33*
34* ***** END LICENSE BLOCK *****
35*
36*
37* Date:    01 Feb 2002
38* SUMMARY: Testing Error.length
39* See http://bugzilla.mozilla.org/show_bug.cgi?id=123002
40*
41* NOTE: Error.length should equal the length of FormalParameterList of the
42* Error constructor. This is currently 1 in Rhino, 3 in SpiderMonkey.
43*
44* The difference is due to http://bugzilla.mozilla.org/show_bug.cgi?id=50447.
45* As a result of that bug, SpiderMonkey has extended ECMA to allow two new
46* parameters to Error constructors:
47*
48* Rhino:        new Error (message)
49* SpiderMonkey: new Error (message, fileName, lineNumber)
50*
51* NOTE: since we have hard-coded the length expectations, this testcase will
52* have to be changed if the Error FormalParameterList is ever changed again.
53*
54* To do this, just change the two LENGTH constants below -
55*/
56//-----------------------------------------------------------------------------
57var LENGTH_RHINO = 1;
58var LENGTH_SPIDERMONKEY = 3;
59var UBound = 0;
60var bug = 123002;
61var summary = 'Testing Error.length';
62var QUOTE = '"';
63var status = '';
64var statusitems = [];
65var actual = '';
66var actualvalues = [];
67var expect= '';
68var expectedvalues = [];
69
70
71/*
72 * Are we in Rhino or SpiderMonkey?
73 */
74// var LENGTH_EXPECTED = inRhino()? LENGTH_RHINO : LENGTH_SPIDERMONKEY;
75// ECMA spec says length should be 1
76var LENGTH_EXPECTED = 1;
77
78/*
79 * The various NativeError objects; see ECMA-262 Edition 3, Section 15.11.6
80 */
81var errObjects = [new Error(), new EvalError(), new RangeError(),
82new ReferenceError(), new SyntaxError(), new TypeError(), new URIError()];
83
84
85for (var i in errObjects)
86{
87  var err = errObjects[i];
88  status = inSection(quoteThis(err.name));
89  actual = Error.length;
90  expect = LENGTH_EXPECTED;
91  addThis();
92}
93
94
95
96//-----------------------------------------------------------------------------
97test();
98//-----------------------------------------------------------------------------
99
100
101
102function addThis()
103{
104  statusitems[UBound] = status;
105  actualvalues[UBound] = actual;
106  expectedvalues[UBound] = expect;
107  UBound++;
108}
109
110
111function test()
112{
113  enterFunc('test');
114  printBugNumber(bug);
115  printStatus(summary);
116
117  for (var i=0; i<UBound; i++)
118  {
119    reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]);
120  }
121
122  exitFunc ('test');
123}
124
125
126function quoteThis(text)
127{
128  return QUOTE + text + QUOTE;
129}
130