js/src/tests/js1_8_5/extensions/clone-leaf-object.js

changeset 0
6474c204b198
     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);

mercurial