michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: michael@0: /** michael@0: File Name: 15.7.2.js michael@0: ECMA Section: 15.7.2 The Number Constructor michael@0: 15.7.2.1 michael@0: 15.7.2.2 michael@0: michael@0: Description: 15.7.2 When Number is called as part of a new michael@0: expression, it is a constructor: it initializes michael@0: the newly created object. michael@0: michael@0: 15.7.2.1 The [[Prototype]] property of the newly michael@0: constructed object is set to othe original Number michael@0: prototype object, the one that is the initial value michael@0: of Number.prototype(0). The [[Class]] property is michael@0: set to "Number". The [[Value]] property of the michael@0: newly constructed object is set to ToNumber(value) michael@0: michael@0: 15.7.2.2 new Number(). same as in 15.7.2.1, except michael@0: the [[Value]] property is set to +0. michael@0: michael@0: need to add more test cases. see the testcases for michael@0: TypeConversion ToNumber. michael@0: michael@0: Author: christine@netscape.com michael@0: Date: 29 september 1997 michael@0: */ michael@0: michael@0: var SECTION = "15.7.2"; michael@0: var VERSION = "ECMA_1"; michael@0: startTest(); michael@0: var TITLE = "The Number Constructor"; michael@0: michael@0: writeHeaderToLog( SECTION + " "+ TITLE); michael@0: michael@0: // To verify that the object's prototype is the Number.prototype, check to see if the object's michael@0: // constructor property is the same as Number.prototype.constructor. michael@0: michael@0: new TestCase(SECTION, "(new Number()).constructor", Number.prototype.constructor, (new Number()).constructor ); michael@0: michael@0: new TestCase(SECTION, "typeof (new Number())", "object", typeof (new Number()) ); michael@0: new TestCase(SECTION, "(new Number()).valueOf()", 0, (new Number()).valueOf() ); michael@0: new TestCase(SECTION, michael@0: "NUMB = new Number();NUMB.toString=Object.prototype.toString;NUMB.toString()", michael@0: "[object Number]", michael@0: eval("NUMB = new Number();NUMB.toString=Object.prototype.toString;NUMB.toString()") ); michael@0: michael@0: new TestCase(SECTION, "(new Number(0)).constructor", Number.prototype.constructor, (new Number(0)).constructor ); michael@0: new TestCase(SECTION, "typeof (new Number(0))", "object", typeof (new Number(0)) ); michael@0: new TestCase(SECTION, "(new Number(0)).valueOf()", 0, (new Number(0)).valueOf() ); michael@0: new TestCase(SECTION, michael@0: "NUMB = new Number(0);NUMB.toString=Object.prototype.toString;NUMB.toString()", michael@0: "[object Number]", michael@0: eval("NUMB = new Number(0);NUMB.toString=Object.prototype.toString;NUMB.toString()") ); michael@0: michael@0: new TestCase(SECTION, "(new Number(1)).constructor", Number.prototype.constructor, (new Number(1)).constructor ); michael@0: new TestCase(SECTION, "typeof (new Number(1))", "object", typeof (new Number(1)) ); michael@0: new TestCase(SECTION, "(new Number(1)).valueOf()", 1, (new Number(1)).valueOf() ); michael@0: new TestCase(SECTION, michael@0: "NUMB = new Number(1);NUMB.toString=Object.prototype.toString;NUMB.toString()", michael@0: "[object Number]", michael@0: eval("NUMB = new Number(1);NUMB.toString=Object.prototype.toString;NUMB.toString()") ); michael@0: michael@0: new TestCase(SECTION, "(new Number(-1)).constructor", Number.prototype.constructor, (new Number(-1)).constructor ); michael@0: new TestCase(SECTION, "typeof (new Number(-1))", "object", typeof (new Number(-1)) ); michael@0: new TestCase(SECTION, "(new Number(-1)).valueOf()", -1, (new Number(-1)).valueOf() ); michael@0: new TestCase(SECTION, michael@0: "NUMB = new Number(-1);NUMB.toString=Object.prototype.toString;NUMB.toString()", michael@0: "[object Number]", michael@0: eval("NUMB = new Number(-1);NUMB.toString=Object.prototype.toString;NUMB.toString()") ); michael@0: michael@0: new TestCase(SECTION, "(new Number(Number.NaN)).constructor", Number.prototype.constructor, (new Number(Number.NaN)).constructor ); michael@0: new TestCase(SECTION, "typeof (new Number(Number.NaN))", "object", typeof (new Number(Number.NaN)) ); michael@0: new TestCase(SECTION, "(new Number(Number.NaN)).valueOf()", Number.NaN, (new Number(Number.NaN)).valueOf() ); michael@0: new TestCase(SECTION, michael@0: "NUMB = new Number(Number.NaN);NUMB.toString=Object.prototype.toString;NUMB.toString()", michael@0: "[object Number]", michael@0: eval("NUMB = new Number(Number.NaN);NUMB.toString=Object.prototype.toString;NUMB.toString()") ); michael@0: michael@0: new TestCase(SECTION, "(new Number('string')).constructor", Number.prototype.constructor, (new Number('string')).constructor ); michael@0: new TestCase(SECTION, "typeof (new Number('string'))", "object", typeof (new Number('string')) ); michael@0: new TestCase(SECTION, "(new Number('string')).valueOf()", Number.NaN, (new Number('string')).valueOf() ); michael@0: new TestCase(SECTION, michael@0: "NUMB = new Number('string');NUMB.toString=Object.prototype.toString;NUMB.toString()", michael@0: "[object Number]", michael@0: eval("NUMB = new Number('string');NUMB.toString=Object.prototype.toString;NUMB.toString()") ); michael@0: michael@0: new TestCase(SECTION, "(new Number(new String())).constructor", Number.prototype.constructor, (new Number(new String())).constructor ); michael@0: new TestCase(SECTION, "typeof (new Number(new String()))", "object", typeof (new Number(new String())) ); michael@0: new TestCase(SECTION, "(new Number(new String())).valueOf()", 0, (new Number(new String())).valueOf() ); michael@0: new TestCase(SECTION, michael@0: "NUMB = new Number(new String());NUMB.toString=Object.prototype.toString;NUMB.toString()", michael@0: "[object Number]", michael@0: eval("NUMB = new Number(new String());NUMB.toString=Object.prototype.toString;NUMB.toString()") ); michael@0: michael@0: new TestCase(SECTION, "(new Number('')).constructor", Number.prototype.constructor, (new Number('')).constructor ); michael@0: new TestCase(SECTION, "typeof (new Number(''))", "object", typeof (new Number('')) ); michael@0: new TestCase(SECTION, "(new Number('')).valueOf()", 0, (new Number('')).valueOf() ); michael@0: new TestCase(SECTION, michael@0: "NUMB = new Number('');NUMB.toString=Object.prototype.toString;NUMB.toString()", michael@0: "[object Number]", michael@0: eval("NUMB = new Number('');NUMB.toString=Object.prototype.toString;NUMB.toString()") ); michael@0: michael@0: new TestCase(SECTION, "(new Number(Number.POSITIVE_INFINITY)).constructor", Number.prototype.constructor, (new Number(Number.POSITIVE_INFINITY)).constructor ); michael@0: new TestCase(SECTION, "typeof (new Number(Number.POSITIVE_INFINITY))", "object", typeof (new Number(Number.POSITIVE_INFINITY)) ); michael@0: new TestCase(SECTION, "(new Number(Number.POSITIVE_INFINITY)).valueOf()", Number.POSITIVE_INFINITY, (new Number(Number.POSITIVE_INFINITY)).valueOf() ); michael@0: new TestCase(SECTION, michael@0: "NUMB = new Number(Number.POSITIVE_INFINITY);NUMB.toString=Object.prototype.toString;NUMB.toString()", michael@0: "[object Number]", michael@0: eval("NUMB = new Number(Number.POSITIVE_INFINITY);NUMB.toString=Object.prototype.toString;NUMB.toString()") ); michael@0: michael@0: new TestCase(SECTION, "(new Number(Number.NEGATIVE_INFINITY)).constructor", Number.prototype.constructor, (new Number(Number.NEGATIVE_INFINITY)).constructor ); michael@0: new TestCase(SECTION, "typeof (new Number(Number.NEGATIVE_INFINITY))", "object", typeof (new Number(Number.NEGATIVE_INFINITY)) ); michael@0: new TestCase(SECTION, "(new Number(Number.NEGATIVE_INFINITY)).valueOf()", Number.NEGATIVE_INFINITY, (new Number(Number.NEGATIVE_INFINITY)).valueOf() ); michael@0: new TestCase(SECTION, michael@0: "NUMB = new Number(Number.NEGATIVE_INFINITY);NUMB.toString=Object.prototype.toString;NUMB.toString()", michael@0: "[object Number]", michael@0: eval("NUMB = new Number(Number.NEGATIVE_INFINITY);NUMB.toString=Object.prototype.toString;NUMB.toString()") ); michael@0: michael@0: michael@0: new TestCase(SECTION, "(new Number()).constructor", Number.prototype.constructor, (new Number()).constructor ); michael@0: new TestCase(SECTION, "typeof (new Number())", "object", typeof (new Number()) ); michael@0: new TestCase(SECTION, "(new Number()).valueOf()", 0, (new Number()).valueOf() ); michael@0: new TestCase(SECTION, michael@0: "NUMB = new Number();NUMB.toString=Object.prototype.toString;NUMB.toString()", michael@0: "[object Number]", michael@0: eval("NUMB = new Number();NUMB.toString=Object.prototype.toString;NUMB.toString()") ); michael@0: michael@0: test();