js/src/tests/ecma/ObjectObjects/15.2.2.1.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/js/src/tests/ecma/ObjectObjects/15.2.2.1.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,104 @@
     1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public
     1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this
     1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     1.8 +
     1.9 +
    1.10 +/**
    1.11 +   File Name:          15.2.2.1.js
    1.12 +   ECMA Section:       15.2.2.1 The Object Constructor:  new Object( value )
    1.13 +
    1.14 +   1.If the type of the value is not Object, go to step 4.
    1.15 +   2.If the value is a native ECMAScript object, do not create a new object; simply return value.
    1.16 +   3.If the value is a host object, then actions are taken and a result is returned in an
    1.17 +   implementation-dependent manner that may depend on the host object.
    1.18 +   4.If the type of the value is String, return ToObject(value).
    1.19 +   5.If the type of the value is Boolean, return ToObject(value).
    1.20 +   6.If the type of the value is Number, return ToObject(value).
    1.21 +   7.(The type of the value must be Null or Undefined.) Create a new native ECMAScript object.
    1.22 +   The [[Prototype]] property of the newly constructed object is set to the Object prototype object.
    1.23 +   The [[Class]] property of the newly constructed object is set to "Object".
    1.24 +   The newly constructed object has no [[Value]] property.
    1.25 +   Return the newly created native object.
    1.26 +
    1.27 +   Description:        This does not test cases where the object is a host object.
    1.28 +   Author:             christine@netscape.com
    1.29 +   Date:               7 october 1997
    1.30 +*/
    1.31 +
    1.32 +var SECTION = "15.2.2.1";
    1.33 +var VERSION = "ECMA_1";
    1.34 +startTest();
    1.35 +var TITLE   = "new Object( value )";
    1.36 +
    1.37 +writeHeaderToLog( SECTION + " "+ TITLE);
    1.38 +
    1.39 +
    1.40 +new TestCase( SECTION,  "typeof new Object(null)",      "object",           typeof new Object(null) );
    1.41 +new TestCase( SECTION,  "MYOB = new Object(null); MYOB.toString = Object.prototype.toString; MYOB.toString()",  "[object Object]",   eval("MYOB = new Object(null); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.42 +
    1.43 +new TestCase( SECTION,  "typeof new Object(void 0)",      "object",           typeof new Object(void 0) );
    1.44 +new TestCase( SECTION,  "MYOB = new Object(new Object(void 0)); MYOB.toString = Object.prototype.toString; MYOB.toString()",  "[object Object]",   eval("MYOB = new Object(new Object(void 0)); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.45 +
    1.46 +new TestCase( SECTION,  "typeof new Object('string')",      "object",           typeof new Object('string') );
    1.47 +new TestCase( SECTION,  "MYOB = (new Object('string'); MYOB.toString = Object.prototype.toString; MYOB.toString()",  "[object String]",   eval("MYOB = new Object('string'); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.48 +new TestCase( SECTION,  "(new Object('string').valueOf()",  "string",           (new Object('string')).valueOf() );
    1.49 +
    1.50 +new TestCase( SECTION,  "typeof new Object('')",            "object",           typeof new Object('') );
    1.51 +new TestCase( SECTION,  "MYOB = (new Object(''); MYOB.toString = Object.prototype.toString; MYOB.toString()",  "[object String]",   eval("MYOB = new Object(''); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.52 +new TestCase( SECTION,  "(new Object('').valueOf()",        "",                 (new Object('')).valueOf() );
    1.53 +
    1.54 +new TestCase( SECTION,  "typeof new Object(Number.NaN)",      "object",                 typeof new Object(Number.NaN) );
    1.55 +new TestCase( SECTION,  "MYOB = (new Object(Number.NaN); MYOB.toString = Object.prototype.toString; MYOB.toString()",  "[object Number]",   eval("MYOB = new Object(Number.NaN); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.56 +new TestCase( SECTION,  "(new Object(Number.NaN).valueOf()",  Number.NaN,               (new Object(Number.NaN)).valueOf() );
    1.57 +
    1.58 +new TestCase( SECTION,  "typeof new Object(0)",      "object",                 typeof new Object(0) );
    1.59 +new TestCase( SECTION,  "MYOB = (new Object(0); MYOB.toString = Object.prototype.toString; MYOB.toString()",  "[object Number]",   eval("MYOB = new Object(0); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.60 +new TestCase( SECTION,  "(new Object(0).valueOf()",  0,               (new Object(0)).valueOf() );
    1.61 +
    1.62 +new TestCase( SECTION,  "typeof new Object(-0)",      "object",                 typeof new Object(-0) );
    1.63 +new TestCase( SECTION,  "MYOB = (new Object(-0); MYOB.toString = Object.prototype.toString; MYOB.toString()",  "[object Number]",   eval("MYOB = new Object(-0); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.64 +new TestCase( SECTION,  "(new Object(-0).valueOf()",  -0,               (new Object(-0)).valueOf() );
    1.65 +
    1.66 +new TestCase( SECTION,  "typeof new Object(1)",      "object",                 typeof new Object(1) );
    1.67 +new TestCase( SECTION,  "MYOB = (new Object(1); MYOB.toString = Object.prototype.toString; MYOB.toString()",  "[object Number]",   eval("MYOB = new Object(1); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.68 +new TestCase( SECTION,  "(new Object(1).valueOf()",  1,               (new Object(1)).valueOf() );
    1.69 +
    1.70 +new TestCase( SECTION,  "typeof new Object(-1)",      "object",                 typeof new Object(-1) );
    1.71 +new TestCase( SECTION,  "MYOB = (new Object(-1); MYOB.toString = Object.prototype.toString; MYOB.toString()",  "[object Number]",   eval("MYOB = new Object(-1); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.72 +new TestCase( SECTION,  "(new Object(-1).valueOf()",  -1,               (new Object(-1)).valueOf() );
    1.73 +
    1.74 +new TestCase( SECTION,  "typeof new Object(true)",      "object",                 typeof new Object(true) );
    1.75 +new TestCase( SECTION,  "MYOB = (new Object(true); MYOB.toString = Object.prototype.toString; MYOB.toString()",  "[object Boolean]",   eval("MYOB = new Object(true); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.76 +new TestCase( SECTION,  "(new Object(true).valueOf()",  true,               (new Object(true)).valueOf() );
    1.77 +
    1.78 +new TestCase( SECTION,  "typeof new Object(false)",      "object",              typeof new Object(false) );
    1.79 +new TestCase( SECTION,  "MYOB = (new Object(false); MYOB.toString = Object.prototype.toString; MYOB.toString()",  "[object Boolean]",   eval("MYOB = new Object(false); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.80 +new TestCase( SECTION,  "(new Object(false).valueOf()",  false,                 (new Object(false)).valueOf() );
    1.81 +
    1.82 +new TestCase( SECTION,  "typeof new Object(Boolean())",         "object",               typeof new Object(Boolean()) );
    1.83 +new TestCase( SECTION,  "MYOB = (new Object(Boolean()); MYOB.toString = Object.prototype.toString; MYOB.toString()",  "[object Boolean]",   eval("MYOB = new Object(Boolean()); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.84 +new TestCase( SECTION,  "(new Object(Boolean()).valueOf()",     Boolean(),              (new Object(Boolean())).valueOf() );
    1.85 +
    1.86 +
    1.87 +var myglobal    = this;
    1.88 +var myobject    = new Object( "my new object" );
    1.89 +var myarray     = new Array();
    1.90 +var myboolean   = new Boolean();
    1.91 +var mynumber    = new Number();
    1.92 +var mystring    = new String();
    1.93 +var myobject    = new Object();
    1.94 +var myfunction  = new Function( "x", "return x");
    1.95 +var mymath      = Math;
    1.96 +
    1.97 +new TestCase( SECTION, "myglobal = new Object( this )",                     myglobal,       new Object(this) );
    1.98 +new TestCase( SECTION, "myobject = new Object('my new object'); new Object(myobject)",            myobject,       new Object(myobject) );
    1.99 +new TestCase( SECTION, "myarray = new Array(); new Object(myarray)",        myarray,        new Object(myarray) );
   1.100 +new TestCase( SECTION, "myboolean = new Boolean(); new Object(myboolean)",  myboolean,      new Object(myboolean) );
   1.101 +new TestCase( SECTION, "mynumber = new Number(); new Object(mynumber)",     mynumber,       new Object(mynumber) );
   1.102 +new TestCase( SECTION, "mystring = new String9); new Object(mystring)",     mystring,       new Object(mystring) );
   1.103 +new TestCase( SECTION, "myobject = new Object(); new Object(mynobject)",    myobject,       new Object(myobject) );
   1.104 +new TestCase( SECTION, "myfunction = new Function(); new Object(myfunction)", myfunction,   new Object(myfunction) );
   1.105 +new TestCase( SECTION, "mymath = Math; new Object(mymath)",                 mymath,         new Object(mymath) );
   1.106 +
   1.107 +test();

mercurial