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();
|