1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/tests/js1_8_5/extensions/clone-leaf-object.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,64 @@ 1.4 +// |reftest| skip-if(!xulRuntime.shell) 1.5 +// -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- 1.6 +// Any copyright is dedicated to the Public Domain. 1.7 +// http://creativecommons.org/licenses/publicdomain/ 1.8 + 1.9 +var a = [new Boolean(true), 1.10 + new Boolean(false), 1.11 + new Number(0), 1.12 + new Number(-0), 1.13 + new Number(Math.PI), 1.14 + new Number(0x7fffffff), 1.15 + new Number(-0x7fffffff), 1.16 + new Number(0x80000000), 1.17 + new Number(-0x80000000), 1.18 + new Number(0xffffffff), 1.19 + new Number(-0xffffffff), 1.20 + new Number(0x100000000), 1.21 + new Number(-0x100000000), 1.22 + new Number(Number.MIN_VALUE), 1.23 + new Number(-Number.MIN_VALUE), 1.24 + new Number(Number.MAX_VALUE), 1.25 + new Number(-Number.MAX_VALUE), 1.26 + new Number(1/0), 1.27 + new Number(-1/0), 1.28 + new Number(0/0), 1.29 + new String(""), 1.30 + new String("\0123\u4567"), 1.31 + new Date(0), 1.32 + new Date(-0), 1.33 + new Date(0x7fffffff), 1.34 + new Date(-0x7fffffff), 1.35 + new Date(0x80000000), 1.36 + new Date(-0x80000000), 1.37 + new Date(0xffffffff), 1.38 + new Date(-0xffffffff), 1.39 + new Date(0x100000000), 1.40 + new Date(-0x100000000), 1.41 + new Date(1286523948674), 1.42 + new Date(8.64e15), // hard-coded in ES5 spec, hard-coded here 1.43 + new Date(-8.64e15), 1.44 + new Date(NaN)]; 1.45 + 1.46 +function primitive(a) { 1.47 + return a instanceof Date ? +a : a.constructor(a); 1.48 +} 1.49 + 1.50 +for (var i = 0; i < a.length; i++) { 1.51 + var x = a[i]; 1.52 + var expectedSource = x.toSource(); 1.53 + var expectedPrimitive = primitive(x); 1.54 + var expectedProto = x.__proto__; 1.55 + var expectedString = Object.prototype.toString.call(x); 1.56 + x.expando = 1; 1.57 + x.__proto__ = {}; 1.58 + 1.59 + var y = deserialize(serialize(x)); 1.60 + assertEq(y.toSource(), expectedSource); 1.61 + assertEq(primitive(y), expectedPrimitive); 1.62 + assertEq(y.__proto__, expectedProto); 1.63 + assertEq(Object.prototype.toString.call(y), expectedString); 1.64 + assertEq("expando" in y, false); 1.65 +} 1.66 + 1.67 +reportCompare(0, 0);