js/src/tests/ecma/ObjectObjects/15.2.1.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.1.1.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,112 @@
     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.1.1.js
    1.12 +   ECMA Section:       15.2.1.1  The Object Constructor Called as a Function:
    1.13 +   Object(value)
    1.14 +   Description:        When Object is called as a function rather than as a
    1.15 +   constructor, the following steps are taken:
    1.16 +
    1.17 +   1.  If value is null or undefined, create and return a
    1.18 +   new object with no properties other than internal
    1.19 +   properties exactly as if the object constructor
    1.20 +   had been called on that same value (15.2.2.1).
    1.21 +   2.  Return ToObject (value), whose rules are:
    1.22 +
    1.23 +   undefined   generate a runtime error
    1.24 +   null        generate a runtime error
    1.25 +   boolean     create a new Boolean object whose default
    1.26 +   value is the value of the boolean.
    1.27 +   number      Create a new Number object whose default
    1.28 +   value is the value of the number.
    1.29 +   string      Create a new String object whose default
    1.30 +   value is the value of the string.
    1.31 +   object      Return the input argument (no conversion).
    1.32 +
    1.33 +   Author:             christine@netscape.com
    1.34 +   Date:               17 july 1997
    1.35 +*/
    1.36 +
    1.37 +var SECTION = "15.2.1.1";
    1.38 +var VERSION = "ECMA_1";
    1.39 +startTest();
    1.40 +var TITLE   = "Object( value )";
    1.41 +
    1.42 +writeHeaderToLog( SECTION + " "+ TITLE);
    1.43 +
    1.44 +
    1.45 +var NULL_OBJECT = Object(null);
    1.46 +
    1.47 +new TestCase( SECTION, "Object(null).valueOf()",    NULL_OBJECT,           (NULL_OBJECT).valueOf() );
    1.48 +new TestCase( SECTION, "typeof Object(null)",       "object",               typeof (Object(null)) );
    1.49 +
    1.50 +var UNDEFINED_OBJECT = Object( void 0 );
    1.51 +
    1.52 +new TestCase( SECTION, "Object(void 0).valueOf()",    UNDEFINED_OBJECT,           (UNDEFINED_OBJECT).valueOf() );
    1.53 +new TestCase( SECTION, "typeof Object(void 0)",       "object",               typeof (Object(void 0)) );
    1.54 +
    1.55 +new TestCase( SECTION, "Object(true).valueOf()",    true,                   (Object(true)).valueOf() );
    1.56 +new TestCase( SECTION, "typeof Object(true)",       "object",               typeof Object(true) );
    1.57 +new TestCase( SECTION, "var MYOB = Object(true); MYOB.toString = Object.prototype.toString; MYOB.toString()",  "[object Boolean]",      eval("var MYOB = Object(true); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.58 +
    1.59 +new TestCase( SECTION, "Object(false).valueOf()",    false,                  (Object(false)).valueOf() );
    1.60 +new TestCase( SECTION, "typeof Object(false)",      "object",               typeof Object(false) );
    1.61 +new TestCase( SECTION, "var MYOB = Object(false); MYOB.toString = Object.prototype.toString; MYOB.toString()",  "[object Boolean]",      eval("var MYOB = Object(false); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.62 +
    1.63 +new TestCase( SECTION, "Object(0).valueOf()",       0,                      (Object(0)).valueOf() );
    1.64 +new TestCase( SECTION, "typeof Object(0)",          "object",               typeof Object(0) );
    1.65 +new TestCase( SECTION, "var MYOB = Object(0); MYOB.toString = Object.prototype.toString; MYOB.toString()",      "[object Number]",      eval("var MYOB = Object(0); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.66 +
    1.67 +new TestCase( SECTION, "Object(-0).valueOf()",      -0,                     (Object(-0)).valueOf() );
    1.68 +new TestCase( SECTION, "typeof Object(-0)",         "object",               typeof Object(-0) );
    1.69 +new TestCase( SECTION, "var MYOB = Object(-0); MYOB.toString = Object.prototype.toString; MYOB.toString()",     "[object Number]",      eval("var MYOB = Object(-0); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.70 +
    1.71 +new TestCase( SECTION, "Object(1).valueOf()",       1,                      (Object(1)).valueOf() );
    1.72 +new TestCase( SECTION, "typeof Object(1)",          "object",               typeof Object(1) );
    1.73 +new TestCase( SECTION, "var MYOB = Object(1); MYOB.toString = Object.prototype.toString; MYOB.toString()",     "[object Number]",      eval("var MYOB = Object(1); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.74 +
    1.75 +new TestCase( SECTION, "Object(-1).valueOf()",      -1,                     (Object(-1)).valueOf() );
    1.76 +new TestCase( SECTION, "typeof Object(-1)",         "object",               typeof Object(-1) );
    1.77 +new TestCase( SECTION, "var MYOB = Object(-1); MYOB.toString = Object.prototype.toString; MYOB.toString()",     "[object Number]",      eval("var MYOB = Object(-1); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.78 +
    1.79 +new TestCase( SECTION, "Object(Number.MAX_VALUE).valueOf()",    1.7976931348623157e308,         (Object(Number.MAX_VALUE)).valueOf() );
    1.80 +new TestCase( SECTION, "typeof Object(Number.MAX_VALUE)",       "object",                       typeof Object(Number.MAX_VALUE) );
    1.81 +new TestCase( SECTION, "var MYOB = Object(Number.MAX_VALUE); MYOB.toString = Object.prototype.toString; MYOB.toString()",     "[object Number]",      eval("var MYOB = Object(Number.MAX_VALUE); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.82 +
    1.83 +new TestCase( SECTION, "Object(Number.MIN_VALUE).valueOf()",     5e-324,           (Object(Number.MIN_VALUE)).valueOf() );
    1.84 +new TestCase( SECTION, "typeof Object(Number.MIN_VALUE)",       "object",         typeof Object(Number.MIN_VALUE) );
    1.85 +new TestCase( SECTION, "var MYOB = Object(Number.MIN_VALUE); MYOB.toString = Object.prototype.toString; MYOB.toString()",     "[object Number]",      eval("var MYOB = Object(Number.MIN_VALUE); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.86 +
    1.87 +new TestCase( SECTION, "Object(Number.POSITIVE_INFINITY).valueOf()",    Number.POSITIVE_INFINITY,       (Object(Number.POSITIVE_INFINITY)).valueOf() );
    1.88 +new TestCase( SECTION, "typeof Object(Number.POSITIVE_INFINITY)",       "object",                       typeof Object(Number.POSITIVE_INFINITY) );
    1.89 +new TestCase( SECTION, "var MYOB = Object(Number.POSITIVE_INFINITY); MYOB.toString = Object.prototype.toString; MYOB.toString()",     "[object Number]",      eval("var MYOB = Object(Number.POSITIVE_INFINITY); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.90 +
    1.91 +new TestCase( SECTION, "Object(Number.NEGATIVE_INFINITY).valueOf()",    Number.NEGATIVE_INFINITY,       (Object(Number.NEGATIVE_INFINITY)).valueOf() );
    1.92 +new TestCase( SECTION, "typeof Object(Number.NEGATIVE_INFINITY)",       "object",            typeof Object(Number.NEGATIVE_INFINITY) );
    1.93 +new TestCase( SECTION, "var MYOB = Object(Number.NEGATIVE_INFINITY); MYOB.toString = Object.prototype.toString; MYOB.toString()",     "[object Number]",      eval("var MYOB = Object(Number.NEGATIVE_INFINITY); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.94 +
    1.95 +new TestCase( SECTION, "Object(Number.NaN).valueOf()",      Number.NaN,                (Object(Number.NaN)).valueOf() );
    1.96 +new TestCase( SECTION, "typeof Object(Number.NaN)",         "object",                  typeof Object(Number.NaN) );
    1.97 +new TestCase( SECTION, "var MYOB = Object(Number.NaN); MYOB.toString = Object.prototype.toString; MYOB.toString()",     "[object Number]",      eval("var MYOB = Object(Number.NaN); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
    1.98 +
    1.99 +new TestCase( SECTION, "Object('a string').valueOf()",      "a string",         (Object("a string")).valueOf() );
   1.100 +new TestCase( SECTION, "typeof Object('a string')",         "object",           typeof (Object("a string")) );
   1.101 +new TestCase( SECTION, "var MYOB = Object('a string'); MYOB.toString = Object.prototype.toString; MYOB.toString()",     "[object String]",      eval("var MYOB = Object('a string'); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
   1.102 +
   1.103 +new TestCase( SECTION, "Object('').valueOf()",              "",                 (Object("")).valueOf() );
   1.104 +new TestCase( SECTION, "typeof Object('')",                 "object",           typeof (Object("")) );
   1.105 +new TestCase( SECTION, "var MYOB = Object(''); MYOB.toString = Object.prototype.toString; MYOB.toString()",     "[object String]",      eval("var MYOB = Object(''); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
   1.106 +
   1.107 +new TestCase( SECTION, "Object('\\r\\t\\b\\n\\v\\f').valueOf()",   "\r\t\b\n\v\f",   (Object("\r\t\b\n\v\f")).valueOf() );
   1.108 +new TestCase( SECTION, "typeof Object('\\r\\t\\b\\n\\v\\f')",      "object",           typeof (Object("\\r\\t\\b\\n\\v\\f")) );
   1.109 +new TestCase( SECTION, "var MYOB = Object('\\r\\t\\b\\n\\v\\f'); MYOB.toString = Object.prototype.toString; MYOB.toString()",     "[object String]",      eval("var MYOB = Object('\\r\\t\\b\\n\\v\\f'); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
   1.110 +
   1.111 +new TestCase( SECTION,  "Object( '\\\'\\\"\\' ).valueOf()",      "\'\"\\",          (Object("\'\"\\")).valueOf() );
   1.112 +new TestCase( SECTION,  "typeof Object( '\\\'\\\"\\' )",        "object",           typeof Object("\'\"\\") );
   1.113 +//    new TestCase( SECTION, "var MYOB = Object(  '\\\'\\\"\\' ); MYOB.toString = Object.prototype.toString; MYOB.toString()",     "[object String]",      eval("var MYOB = Object( '\\\'\\\"\\' ); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
   1.114 +
   1.115 +test();

mercurial