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 15assert ([].toLocaleString() === ""); 16assert ([1].toLocaleString() === "1"); 17assert ([1,2].toLocaleString() === "1,2"); 18assert ([1,2,3].toLocaleString() === "1,2,3"); 19 20var test_ok = { 21 length: 1, 22 toLocaleString: function() { return "1"; } 23}; 24 25assert ([3, test_ok, 4, test_ok].toLocaleString() === "3,1,4,1"); 26 27 28var obj = { toLocaleString: function() {} }; 29var test_non_str_locale = [undefined, obj, null, obj, obj]; 30 31assert(test_non_str_locale.toLocaleString() === ",undefined,,undefined,undefined"); 32 33var test_fail = { 34 toLocaleString: "FAIL" 35}; 36 37try { 38 [test_fail].toLocaleString(); 39 assert (false); 40} catch (e) { 41 assert (e instanceof TypeError); 42} 43 44 45var test_fail_call = { 46 toLocaleString: function() { throw new ReferenceError("foo"); } 47}; 48 49 50try { 51 [1, 2, test_fail_call].toLocaleString(); 52 assert (false); 53} catch (e) { 54 assert (e.message === "foo"); 55 assert (e instanceof ReferenceError); 56} 57