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 obj1 = {};
16obj1.toString = function () { return "mystring"; }
17
18assert (obj1.toLocaleString() === "mystring");
19
20var obj2 = {a: 3};
21assert (obj2.toLocaleString() === "[object Object]");
22
23
24var obj3 = {toLocaleString: function() { throw ReferenceError ("foo"); }};
25try {
26  obj3.toLocaleString();
27
28  assert (false);
29} catch (e) {
30  assert (e.message === "foo");
31  assert (e instanceof ReferenceError);
32}
33
34// Test invalid toString call
35var obj4 = {toString: 2};
36try {
37  obj4.toLocaleString();
38
39  assert (false);
40} catch (e) {
41  assert (e instanceof TypeError);
42}
43
44// Test undefined toString call
45var obj5 = {};
46var obj6;
47obj5.toString = obj6
48try {
49  obj5.toLocaleString();
50
51  assert (false);
52} catch (e) {
53  assert (e instanceof TypeError);
54}
55