1// Copyright 2014 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5if ("Intl" in this) {
6  function overflow() {
7    return overflow() + 1;
8  }
9  Object.defineProperty = overflow;
10  assertDoesNotThrow(function() { Intl.Collator.supportedLocalesOf("en"); });
11
12  var date = new Date(Date.UTC(2004, 12, 25, 3, 0, 0));
13  var options = {
14    weekday: "long",
15    year: "numeric",
16    month: "long",
17    day: "numeric"
18  };
19
20  Object.apply = overflow;
21  assertDoesNotThrow(function() { date.toLocaleDateString("de-DE", options); });
22
23  var options_incomplete = {};
24  assertDoesNotThrow(function() {
25    date.toLocaleDateString("de-DE", options_incomplete);
26  });
27  assertTrue(options_incomplete.hasOwnProperty("year"));
28
29  assertDoesNotThrow(function() { date.toLocaleDateString("de-DE", undefined); });
30  assertDoesNotThrow(function() { date.toLocaleDateString("de-DE"); });
31  assertThrows(function() { date.toLocaleDateString("de-DE", null); }, TypeError);
32}
33