// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.

js> load('testsrc/doctests/util.js');

js> Date.prototype.toJSON;
function toJSON() { [native code for Date.toJSON, arity=1] }

js> Date.prototype.toJSON.call({
  >   valueOf: function() { return Infinity; }
  > }, '')
null

js> expectError(function() {
  >   Date.prototype.toJSON.call({}, '')
  > }, TypeError)

js> expectError(function() {
  >   Date.prototype.toJSON.call(5, '')
  > }, TypeError)

js> expectError(function() {
  >   Date.prototype.toJSON.call({toISOString:5}, '')
  > }, TypeError)

js> expectError(function() {
  >   Date.prototype.toJSON.call({toISOString:function(){ return [] }}, '')
  > }, TypeError)

js> Date.prototype.toJSON.call({toISOString: function() { return 'w00t' }}, '')
w00t

js> var now = new Date()
js> now.toJSON('') === now.toISOString()
true

