summaryrefslogtreecommitdiffstats
path: root/js/src/tests/ecma/Number/15.7.2.js
blob: 4be91d5ae4175c7c19e1bd481fb34dbe5dc6f668 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


/**
   File Name:          15.7.2.js
   ECMA Section:       15.7.2 The Number Constructor
   15.7.2.1
   15.7.2.2

   Description:        15.7.2 When Number is called as part of a new
   expression, it is a constructor:  it initializes
   the newly created object.

   15.7.2.1 The [[Prototype]] property of the newly
   constructed object is set to othe original Number
   prototype object, the one that is the initial value
   of Number.prototype(0).  The [[Class]] property is
   set to "Number".  The [[Value]] property of the
   newly constructed object is set to ToNumber(value)

   15.7.2.2 new Number().  same as in 15.7.2.1, except
   the [[Value]] property is set to +0.

   need to add more test cases.  see the testcases for
   TypeConversion ToNumber.

   Author:             christine@netscape.com
   Date:               29 september 1997
*/

var SECTION = "15.7.2";
var VERSION = "ECMA_1";
startTest();
var TITLE   = "The Number Constructor";

writeHeaderToLog( SECTION + " "+ TITLE);

//  To verify that the object's prototype is the Number.prototype, check to see if the object's
//  constructor property is the same as Number.prototype.constructor.

new TestCase(SECTION, "(new Number()).constructor",      Number.prototype.constructor,   (new Number()).constructor );

new TestCase(SECTION, "typeof (new Number())",         "object",           typeof (new Number()) );
new TestCase(SECTION,  "(new Number()).valueOf()",     0,                   (new Number()).valueOf() );
new TestCase(SECTION,
	     "NUMB = new Number();NUMB.toString=Object.prototype.toString;NUMB.toString()",
	     "[object Number]",
	     eval("NUMB = new Number();NUMB.toString=Object.prototype.toString;NUMB.toString()") );

new TestCase(SECTION, "(new Number(0)).constructor",     Number.prototype.constructor,    (new Number(0)).constructor );
new TestCase(SECTION, "typeof (new Number(0))",         "object",           typeof (new Number(0)) );
new TestCase(SECTION,  "(new Number(0)).valueOf()",     0,                   (new Number(0)).valueOf() );
new TestCase(SECTION,
	     "NUMB = new Number(0);NUMB.toString=Object.prototype.toString;NUMB.toString()",
	     "[object Number]",
	     eval("NUMB = new Number(0);NUMB.toString=Object.prototype.toString;NUMB.toString()") );

new TestCase(SECTION, "(new Number(1)).constructor",     Number.prototype.constructor,    (new Number(1)).constructor );
new TestCase(SECTION, "typeof (new Number(1))",         "object",           typeof (new Number(1)) );
new TestCase(SECTION,  "(new Number(1)).valueOf()",     1,                   (new Number(1)).valueOf() );
new TestCase(SECTION,
	     "NUMB = new Number(1);NUMB.toString=Object.prototype.toString;NUMB.toString()",
	     "[object Number]",
	     eval("NUMB = new Number(1);NUMB.toString=Object.prototype.toString;NUMB.toString()") );

new TestCase(SECTION, "(new Number(-1)).constructor",     Number.prototype.constructor,    (new Number(-1)).constructor );
new TestCase(SECTION, "typeof (new Number(-1))",         "object",           typeof (new Number(-1)) );
new TestCase(SECTION,  "(new Number(-1)).valueOf()",     -1,                   (new Number(-1)).valueOf() );
new TestCase(SECTION,
	     "NUMB = new Number(-1);NUMB.toString=Object.prototype.toString;NUMB.toString()",
	     "[object Number]",
	     eval("NUMB = new Number(-1);NUMB.toString=Object.prototype.toString;NUMB.toString()") );

new TestCase(SECTION, "(new Number(Number.NaN)).constructor",     Number.prototype.constructor,    (new Number(Number.NaN)).constructor );
new TestCase(SECTION, "typeof (new Number(Number.NaN))",         "object",           typeof (new Number(Number.NaN)) );
new TestCase(SECTION,  "(new Number(Number.NaN)).valueOf()",     Number.NaN,                   (new Number(Number.NaN)).valueOf() );
new TestCase(SECTION,
	     "NUMB = new Number(Number.NaN);NUMB.toString=Object.prototype.toString;NUMB.toString()",
	     "[object Number]",
	     eval("NUMB = new Number(Number.NaN);NUMB.toString=Object.prototype.toString;NUMB.toString()") );

new TestCase(SECTION, "(new Number('string')).constructor",     Number.prototype.constructor,    (new Number('string')).constructor );
new TestCase(SECTION, "typeof (new Number('string'))",         "object",           typeof (new Number('string')) );
new TestCase(SECTION,  "(new Number('string')).valueOf()",     Number.NaN,                   (new Number('string')).valueOf() );
new TestCase(SECTION,
	     "NUMB = new Number('string');NUMB.toString=Object.prototype.toString;NUMB.toString()",
	     "[object Number]",
	     eval("NUMB = new Number('string');NUMB.toString=Object.prototype.toString;NUMB.toString()") );

new TestCase(SECTION, "(new Number(new String())).constructor",     Number.prototype.constructor,    (new Number(new String())).constructor );
new TestCase(SECTION, "typeof (new Number(new String()))",         "object",           typeof (new Number(new String())) );
new TestCase(SECTION,  "(new Number(new String())).valueOf()",     0,                   (new Number(new String())).valueOf() );
new TestCase(SECTION,
	     "NUMB = new Number(new String());NUMB.toString=Object.prototype.toString;NUMB.toString()",
	     "[object Number]",
	     eval("NUMB = new Number(new String());NUMB.toString=Object.prototype.toString;NUMB.toString()") );

new TestCase(SECTION, "(new Number('')).constructor",     Number.prototype.constructor,    (new Number('')).constructor );
new TestCase(SECTION, "typeof (new Number(''))",         "object",           typeof (new Number('')) );
new TestCase(SECTION,  "(new Number('')).valueOf()",     0,                   (new Number('')).valueOf() );
new TestCase(SECTION,
	     "NUMB = new Number('');NUMB.toString=Object.prototype.toString;NUMB.toString()",
	     "[object Number]",
	     eval("NUMB = new Number('');NUMB.toString=Object.prototype.toString;NUMB.toString()") );

new TestCase(SECTION, "(new Number(Number.POSITIVE_INFINITY)).constructor",     Number.prototype.constructor,    (new Number(Number.POSITIVE_INFINITY)).constructor );
new TestCase(SECTION, "typeof (new Number(Number.POSITIVE_INFINITY))",         "object",           typeof (new Number(Number.POSITIVE_INFINITY)) );
new TestCase(SECTION,  "(new Number(Number.POSITIVE_INFINITY)).valueOf()",     Number.POSITIVE_INFINITY,    (new Number(Number.POSITIVE_INFINITY)).valueOf() );
new TestCase(SECTION,
	     "NUMB = new Number(Number.POSITIVE_INFINITY);NUMB.toString=Object.prototype.toString;NUMB.toString()",
	     "[object Number]",
	     eval("NUMB = new Number(Number.POSITIVE_INFINITY);NUMB.toString=Object.prototype.toString;NUMB.toString()") );

new TestCase(SECTION, "(new Number(Number.NEGATIVE_INFINITY)).constructor",     Number.prototype.constructor,    (new Number(Number.NEGATIVE_INFINITY)).constructor );
new TestCase(SECTION, "typeof (new Number(Number.NEGATIVE_INFINITY))",         "object",           typeof (new Number(Number.NEGATIVE_INFINITY)) );
new TestCase(SECTION,  "(new Number(Number.NEGATIVE_INFINITY)).valueOf()",     Number.NEGATIVE_INFINITY,                   (new Number(Number.NEGATIVE_INFINITY)).valueOf() );
new TestCase(SECTION,
	     "NUMB = new Number(Number.NEGATIVE_INFINITY);NUMB.toString=Object.prototype.toString;NUMB.toString()",
	     "[object Number]",
	     eval("NUMB = new Number(Number.NEGATIVE_INFINITY);NUMB.toString=Object.prototype.toString;NUMB.toString()") );


new TestCase(SECTION, "(new Number()).constructor",     Number.prototype.constructor,    (new Number()).constructor );
new TestCase(SECTION, "typeof (new Number())",         "object",           typeof (new Number()) );
new TestCase(SECTION,  "(new Number()).valueOf()",     0,                   (new Number()).valueOf() );
new TestCase(SECTION,
	     "NUMB = new Number();NUMB.toString=Object.prototype.toString;NUMB.toString()",
	     "[object Number]",
	     eval("NUMB = new Number();NUMB.toString=Object.prototype.toString;NUMB.toString()") );

test();