1// Copyright JS Foundation and other contributors, http://js.foundation
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15var e;
16
17/* Error */
18e = new Error ();
19assert (e.name === "Error");
20assert (e.message === "");
21assert (e.toString() === "Error");
22
23e = new Error("some message");
24assert (e.name === "Error");
25assert (e.message === "some message");
26assert (e.toString() === "Error: some message");
27
28e.name = "";
29assert (e.toString() === "some message");
30e.message = "";
31assert (e.toString() === "");
32
33assert (Error.prototype.toString !== Object.prototype.toString);
34assert (Error.prototype.constructor === Error);
35assert (Error.prototype.name === "Error");
36assert (Error.prototype.message === "");
37assert (Error.prototype.toString() === "Error");
38
39/* TypeError */
40e = new TypeError ();
41assert (e.name === "TypeError");
42assert (e.message === "");
43assert (e.toString() === "TypeError");
44
45e = new TypeError("some message");
46assert (e.name === "TypeError");
47assert (e.message === "some message");
48assert (e.toString() === "TypeError: some message");
49
50e.name = "";
51assert (e.toString() === "some message");
52e.message = "";
53assert (e.toString() === "");
54
55assert (TypeError.prototype.toString === Error.prototype.toString);
56assert (TypeError.prototype.constructor === TypeError);
57assert (TypeError.prototype.name === "TypeError");
58assert (TypeError.prototype.message === "");
59assert (TypeError.prototype.toString() === "TypeError");
60
61try
62{
63  null[1] = 'abcd';
64
65  assert (false);
66}
67catch (e)
68{
69  assert(e instanceof TypeError);
70  assert(e instanceof Error);
71  assert(e instanceof Object);
72
73  assert(!(e instanceof Function));
74}
75
76
77/* ReferenceError */
78e = new ReferenceError ();
79assert (e.name === "ReferenceError");
80assert (e.message === "");
81assert (e.toString() === "ReferenceError");
82
83e = new ReferenceError("some message");
84assert (e.name === "ReferenceError");
85assert (e.message === "some message");
86assert (e.toString() === "ReferenceError: some message");
87
88e.name = "";
89assert (e.toString() === "some message");
90e.message = "";
91assert (e.toString() === "");
92
93assert (ReferenceError.prototype.toString === Error.prototype.toString);
94assert (ReferenceError.prototype.constructor === ReferenceError);
95assert (ReferenceError.prototype.name === "ReferenceError");
96assert (ReferenceError.prototype.message === "");
97assert (ReferenceError.prototype.toString() === "ReferenceError");
98
99try
100{
101  var a = non_existing_variable;
102
103  assert (false);
104}
105catch (e)
106{
107  assert(e instanceof ReferenceError);
108  assert(e instanceof Error);
109  assert(e instanceof Object);
110
111  assert(!(e instanceof Function));
112}
113
114/* EvalError */
115e = new EvalError ();
116assert (e.name === "EvalError");
117assert (e.message === "");
118assert (e.toString() === "EvalError");
119
120e = new EvalError("some message");
121assert (e.name === "EvalError");
122assert (e.message === "some message");
123assert (e.toString() === "EvalError: some message");
124
125e.name = "";
126assert (e.toString() === "some message");
127e.message = "";
128assert (e.toString() === "");
129
130assert (EvalError.prototype.toString === Error.prototype.toString);
131assert (EvalError.prototype.constructor === EvalError);
132assert (EvalError.prototype.name === "EvalError");
133assert (EvalError.prototype.message === "");
134assert (EvalError.prototype.toString() === "EvalError");
135
136/* RangeError */
137e = new RangeError ();
138assert (e.name === "RangeError");
139assert (e.message === "");
140assert (e.toString() === "RangeError");
141
142e = new RangeError("some message");
143assert (e.name === "RangeError");
144assert (e.message === "some message");
145assert (e.toString() === "RangeError: some message");
146
147e.name = "";
148assert (e.toString() === "some message");
149e.message = "";
150assert (e.toString() === "");
151
152assert (RangeError.prototype.toString === Error.prototype.toString);
153assert (RangeError.prototype.constructor === RangeError);
154assert (RangeError.prototype.name === "RangeError");
155assert (RangeError.prototype.message === "");
156assert (RangeError.prototype.toString() === "RangeError");
157
158/* SyntaxError */
159e = new SyntaxError ();
160assert (e.name === "SyntaxError");
161assert (e.message === "");
162assert (e.toString() === "SyntaxError");
163
164e = new SyntaxError("some message");
165assert (e.name === "SyntaxError");
166assert (e.message === "some message");
167assert (e.toString() === "SyntaxError: some message");
168
169e.name = "";
170assert (e.toString() === "some message");
171e.message = "";
172assert (e.toString() === "");
173
174assert (SyntaxError.prototype.toString === Error.prototype.toString);
175assert (SyntaxError.prototype.constructor === SyntaxError);
176assert (SyntaxError.prototype.name === "SyntaxError");
177assert (SyntaxError.prototype.message === "");
178assert (SyntaxError.prototype.toString() === "SyntaxError");
179
180/* URIError */
181e = new URIError ();
182assert (e.name === "URIError");
183assert (e.message === "");
184assert (e.toString() === "URIError");
185
186e = new URIError("some message");
187assert (e.name === "URIError");
188assert (e.message === "some message");
189assert (e.toString() === "URIError: some message");
190
191e.name = "";
192assert (e.toString() === "some message");
193e.message = "";
194assert (e.toString() === "");
195
196assert (URIError.prototype.toString === Error.prototype.toString);
197assert (URIError.prototype.constructor === URIError);
198assert (URIError.prototype.name === "URIError");
199assert (URIError.prototype.message === "");
200assert (URIError.prototype.toString() === "URIError");
201