1a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// Copyright 2008 the V8 project authors. All rights reserved.
2a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// Redistribution and use in source and binary forms, with or without
3a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// modification, are permitted provided that the following conditions are
4a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// met:
5a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block//
6a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block//     * Redistributions of source code must retain the above copyright
7a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block//       notice, this list of conditions and the following disclaimer.
8a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block//     * Redistributions in binary form must reproduce the above
9a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block//       copyright notice, this list of conditions and the following
10a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block//       disclaimer in the documentation and/or other materials provided
11a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block//       with the distribution.
12a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block//     * Neither the name of Google Inc. nor the names of its
13a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block//       contributors may be used to endorse or promote products derived
14a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block//       from this software without specific prior written permission.
15a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block//
16a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
28a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// ----------------------------------------------------------------------
29a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// toString
30a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("NaN", (NaN).toString());
31a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("Infinity", (1/0).toString());
32a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-Infinity", (-1/0).toString());
33a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0", (0).toString());
34a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("9", (9).toString());
35a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("90", (90).toString());
36a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("90.12", (90.12).toString());
37a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.1", (0.1).toString());
38a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.01", (0.01).toString());
39a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.0123", (0.0123).toString());
40a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("111111111111111110000", (111111111111111111111).toString());
41a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.1111111111111111e+21", (1111111111111111111111).toString());
42a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.1111111111111111e+22", (11111111111111111111111).toString());
43a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.00001", (0.00001).toString());
44a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.000001", (0.000001).toString());
45a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1e-7", (0.0000001).toString());
46a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.2e-7", (0.00000012).toString());
47a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.23e-7", (0.000000123).toString());
48a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1e-8", (0.00000001).toString());
49a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.2e-8", (0.000000012).toString());
50a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.23e-8", (0.0000000123).toString());
51a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
52a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0", (-0).toString());
53a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-9", (-9).toString());
54a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-90", (-90).toString());
55a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-90.12", (-90.12).toString());
56a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.1", (-0.1).toString());
57a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.01", (-0.01).toString());
58257744e915dfc84d6d07a6b2accf8402d9ffc708Ben MurdochassertEquals("-0.0123", (-0.0123).toString());
59a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-111111111111111110000", (-111111111111111111111).toString());
60a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.1111111111111111e+21", (-1111111111111111111111).toString());
61a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.1111111111111111e+22", (-11111111111111111111111).toString());
62a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.00001", (-0.00001).toString());
63a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.000001", (-0.000001).toString());
64a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1e-7", (-0.0000001).toString());
65a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.2e-7", (-0.00000012).toString());
66a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.23e-7", (-0.000000123).toString());
67a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1e-8", (-0.00000001).toString());
68a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.2e-8", (-0.000000012).toString());
69a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.23e-8", (-0.0000000123).toString());
70a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
71a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("NaN", (NaN).toString(16));
72a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("Infinity", (1/0).toString(16));
73a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-Infinity", (-1/0).toString(16));
74a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0", (0).toString(16));
75a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("9", (9).toString(16));
76a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("5a", (90).toString(16));
77a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("5a.1eb851eb852", (90.12).toString(16));
78a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.1999999999999a", (0.1).toString(16));
79a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.028f5c28f5c28f6", (0.01).toString(16));
80a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.032617c1bda511a", (0.0123).toString(16));
81a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("605f9f6dd18bc8000", (111111111111111111111).toString(16));
82a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("3c3bc3a4a2f75c0000", (1111111111111111111111).toString(16));
83a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("25a55a46e5da9a00000", (11111111111111111111111).toString(16));
84a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.0000a7c5ac471b4788", (0.00001).toString(16));
85a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.000010c6f7a0b5ed8d", (0.000001).toString(16));
86a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.000001ad7f29abcaf48", (0.0000001).toString(16));
87a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.000002036565348d256", (0.00000012).toString(16));
88a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.0000021047ee22aa466", (0.000000123).toString(16));
89a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.0000002af31dc4611874", (0.00000001).toString(16));
90a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.000000338a23b87483be", (0.000000012).toString(16));
91a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.00000034d3fe36aaa0a2", (0.0000000123).toString(16));
92a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
93a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0", (-0).toString(16));
94a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-9", (-9).toString(16));
95a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-5a", (-90).toString(16));
96a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-5a.1eb851eb852", (-90.12).toString(16));
97a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.1999999999999a", (-0.1).toString(16));
98a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.028f5c28f5c28f6", (-0.01).toString(16));
99a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.032617c1bda511a", (-0.0123).toString(16));
100a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-605f9f6dd18bc8000", (-111111111111111111111).toString(16));
101a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-3c3bc3a4a2f75c0000", (-1111111111111111111111).toString(16));
102a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-25a55a46e5da9a00000", (-11111111111111111111111).toString(16));
103a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.0000a7c5ac471b4788", (-0.00001).toString(16));
104a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.000010c6f7a0b5ed8d", (-0.000001).toString(16));
105a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.000001ad7f29abcaf48", (-0.0000001).toString(16));
106a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.000002036565348d256", (-0.00000012).toString(16));
107a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.0000021047ee22aa466", (-0.000000123).toString(16));
108a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.0000002af31dc4611874", (-0.00000001).toString(16));
109a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.000000338a23b87483be", (-0.000000012).toString(16));
110a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.00000034d3fe36aaa0a2", (-0.0000000123).toString(16));
111a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
112a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("4294967296", Math.pow(2,32).toString());
113a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("ffffffff", (Math.pow(2,32)-1).toString(16));
114a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("11111111111111111111111111111111", (Math.pow(2,32)-1).toString(2));
115a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("5yc1z", (10000007).toString(36));
116a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0", (0).toString(36));
117a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0", (0).toString(16));
118a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0", (0).toString(10));
119a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0", (0).toString(8));
120a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0", (0).toString(2));
121a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("100000000000000000000000000000000", Math.pow(2,32).toString(2));
122a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("100000000000000000000000000000001", (Math.pow(2,32) + 1).toString(2));
123a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("100000000000080", (0x100000000000081).toString(16));
124a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1000000000000100", (-(-'0x1000000000000081')).toString(16));
1256ded16be15dd865a9b21ea304d5273c8be299c87Steve BlockassertEquals("1000000000000000", (-(-'0x1000000000000080')).toString(16));
1266ded16be15dd865a9b21ea304d5273c8be299c87Steve BlockassertEquals("1000000000000000", (-(-'0x100000000000007F')).toString(16));
127a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("100000000000000000000000000000000000000000000000010000000", (0x100000000000081).toString(2));
128a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-11111111111111111111111111111111", (-(Math.pow(2,32)-1)).toString(2));
129a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-5yc1z", (-10000007).toString(36));
130a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-100000000000000000000000000000000", (-Math.pow(2,32)).toString(2));
131a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-100000000000000000000000000000001", (-(Math.pow(2,32) + 1)).toString(2));
132a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-100000000000080", (-0x100000000000081).toString(16));
133a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-100000000000000000000000000000000000000000000000010000000", (-0x100000000000081).toString(2));
134a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1000", (1000).toString());
135a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.00001", (0.00001).toString());
136a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1000000000000000100", (1000000000000000128).toString());
137a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1e+21", (1000000000000000012800).toString());
138a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1e+21", (-1000000000000000012800).toString());
139a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1e-7", (0.0000001).toString());
140a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1e-7", (-0.0000001).toString());
141a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.0000000000000001e+21", (1000000000000000128000).toString());
142a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.000001", (0.000001).toString());
143a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1e-7", (0.0000001).toString());
144a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("8.8", (8.5).toString(16));
145a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-8.8", (-8.5).toString(16));
146a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
147a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// ----------------------------------------------------------------------
148a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// toFixed
149a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("NaN", (NaN).toFixed(2));
150a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("Infinity", (1/0).toFixed(2));
151a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-Infinity", (-1/0).toFixed(2));
152a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
153a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.1111111111111111e+21", (1111111111111111111111).toFixed(8));
154a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.1", (0.1).toFixed(1));
155a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.10", (0.1).toFixed(2));
156a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.100", (0.1).toFixed(3));
157a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.01", (0.01).toFixed(2));
158a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.010", (0.01).toFixed(3));
159a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.0100", (0.01).toFixed(4));
160a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.00", (0.001).toFixed(2));
161a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.001", (0.001).toFixed(3));
162a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.0010", (0.001).toFixed(4));
163a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.0000", (1).toFixed(4));
164a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.0", (1).toFixed(1));
165a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1", (1).toFixed(0));
166a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("12", (12).toFixed(0));
167a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1", (1.1).toFixed(0));
168a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("12", (12.1).toFixed(0));
169a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1", (1.12).toFixed(0));
170a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("12", (12.12).toFixed(0));
171a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.0000006", (0.0000006).toFixed(7));
172a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.00000006", (0.00000006).toFixed(8));
173a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.000000060", (0.00000006).toFixed(9));
174a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.0000000600", (0.00000006).toFixed(10));
175a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0", (0).toFixed(0));
176a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.0", (0).toFixed(1));
177a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.00", (0).toFixed(2));
178a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
179a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.1111111111111111e+21", (-1111111111111111111111).toFixed(8));
180a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.1", (-0.1).toFixed(1));
181a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.10", (-0.1).toFixed(2));
182a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.100", (-0.1).toFixed(3));
183a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.01", (-0.01).toFixed(2));
184a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.010", (-0.01).toFixed(3));
185a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.0100", (-0.01).toFixed(4));
186a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.00", (-0.001).toFixed(2));
187a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.001", (-0.001).toFixed(3));
188a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.0010", (-0.001).toFixed(4));
189a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.0000", (-1).toFixed(4));
190a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.0", (-1).toFixed(1));
191a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1", (-1).toFixed(0));
192a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1", (-1.1).toFixed(0));
193a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-12", (-12.1).toFixed(0));
194a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1", (-1.12).toFixed(0));
195a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-12", (-12.12).toFixed(0));
196a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.0000006", (-0.0000006).toFixed(7));
197a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.00000006", (-0.00000006).toFixed(8));
198a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.000000060", (-0.00000006).toFixed(9));
199a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.0000000600", (-0.00000006).toFixed(10));
200a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0", (-0).toFixed(0));
201a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.0", (-0).toFixed(1));
202a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.00", (-0).toFixed(2));
203a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
204a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1000", (1000).toFixed());
205a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0", (0.00001).toFixed());
206a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.00001", (0.00001).toFixed(5));
207a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.00000000000000000010", (0.0000000000000000001).toFixed(20));
208a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.00001000000000000", (0.00001).toFixed(17));
209a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.00000000000000000", (1).toFixed(17));
210a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1000000000000000128", (1000000000000000128).toFixed());
211a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("100000000000000128.0", (100000000000000128).toFixed(1));
212a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("10000000000000128.00", (10000000000000128).toFixed(2));
213a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("10000000000000128.00000000000000000000", (10000000000000128).toFixed(20));
214a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0", (0).toFixed());
215a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-42.000", ((-42).toFixed(3)));
216a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1000000000000000128", (-1000000000000000128).toFixed());
217a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.00000000000000000010", (-0.0000000000000000001).toFixed(20));
218a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.12312312312312299889", (0.123123123123123).toFixed(20));
219a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// Test that we round up even when the last digit generated is even.
220a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// dtoa does not do this in its original form.
221a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1", 0.5.toFixed(0), "0.5.toFixed(0)");
222257744e915dfc84d6d07a6b2accf8402d9ffc708Ben MurdochassertEquals("-1", (-0.5).toFixed(0), "(-0.5).toFixed(0)");
223a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.3", 1.25.toFixed(1), "1.25.toFixed(1)");
224a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// This is bizare, but Spidermonkey and KJS behave the same.
225a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("234.2040", (234.20405).toFixed(4), "234.2040.toFixed(4)");
226a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("234.2041", (234.2040506).toFixed(4));
227a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
228a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// ----------------------------------------------------------------------
229a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// toExponential
230a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1e+0", (1).toExponential());
231a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.1e+1", (11).toExponential());
232a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.12e+2", (112).toExponential());
233a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1e+0", (1).toExponential(0));
234a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1e+1", (11).toExponential(0));
235a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1e+2", (112).toExponential(0));
236a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.0e+0", (1).toExponential(1));
237a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.1e+1", (11).toExponential(1));
238a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.1e+2", (112).toExponential(1));
239a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.00e+0", (1).toExponential(2));
240a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.10e+1", (11).toExponential(2));
241a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.12e+2", (112).toExponential(2));
242a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.000e+0", (1).toExponential(3));
243a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.100e+1", (11).toExponential(3));
244a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.120e+2", (112).toExponential(3));
245a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1e-1", (0.1).toExponential());
246a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.1e-1", (0.11).toExponential());
247a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.12e-1", (0.112).toExponential());
248a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1e-1", (0.1).toExponential(0));
249a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1e-1", (0.11).toExponential(0));
250a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1e-1", (0.112).toExponential(0));
251a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.0e-1", (0.1).toExponential(1));
252a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.1e-1", (0.11).toExponential(1));
253a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.1e-1", (0.112).toExponential(1));
254a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.00e-1", (0.1).toExponential(2));
255a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.10e-1", (0.11).toExponential(2));
256a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.12e-1", (0.112).toExponential(2));
257a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.000e-1", (0.1).toExponential(3));
258a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.100e-1", (0.11).toExponential(3));
259a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.120e-1", (0.112).toExponential(3));
260a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
261a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1e+0", (-1).toExponential());
262a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.1e+1", (-11).toExponential());
263a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.12e+2", (-112).toExponential());
264a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1e+0", (-1).toExponential(0));
265a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1e+1", (-11).toExponential(0));
266a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1e+2", (-112).toExponential(0));
267a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.0e+0", (-1).toExponential(1));
268a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.1e+1", (-11).toExponential(1));
269a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.1e+2", (-112).toExponential(1));
270a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.00e+0", (-1).toExponential(2));
271a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.10e+1", (-11).toExponential(2));
272a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.12e+2", (-112).toExponential(2));
273a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.000e+0", (-1).toExponential(3));
274a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.100e+1", (-11).toExponential(3));
275a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.120e+2", (-112).toExponential(3));
276a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1e-1", (-0.1).toExponential());
277a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.1e-1", (-0.11).toExponential());
278a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.12e-1", (-0.112).toExponential());
279a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1e-1", (-0.1).toExponential(0));
280a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1e-1", (-0.11).toExponential(0));
281a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1e-1", (-0.112).toExponential(0));
282a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.0e-1", (-0.1).toExponential(1));
283a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.1e-1", (-0.11).toExponential(1));
284a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.1e-1", (-0.112).toExponential(1));
285a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.00e-1", (-0.1).toExponential(2));
286a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.10e-1", (-0.11).toExponential(2));
287a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.12e-1", (-0.112).toExponential(2));
288a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.000e-1", (-0.1).toExponential(3));
289a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.100e-1", (-0.11).toExponential(3));
290a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.120e-1", (-0.112).toExponential(3));
291a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
292a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("NaN", (NaN).toExponential(2));
293a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("Infinity", (Infinity).toExponential(2));
294a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-Infinity", (-Infinity).toExponential(2));
295a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1e+0", (1).toExponential(0));
296a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0e+0", (0).toExponential());
297a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.00e+0", (0).toExponential(2));
298a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1e+1", (11.2356).toExponential(0));
299a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.1236e+1", (11.2356).toExponential(4));
300a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.1236e-4", (0.000112356).toExponential(4));
301a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.1236e-4", (-0.000112356).toExponential(4));
302a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.12356e-4", (0.000112356).toExponential());
303a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.12356e-4", (-0.000112356).toExponential());
304a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
305a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// ----------------------------------------------------------------------
306a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// toPrecision
307a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("NaN", (NaN).toPrecision(1));
308a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("Infinity", (Infinity).toPrecision(2));
309a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-Infinity", (-Infinity).toPrecision(2));
310a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("0.000555000000000000", (0.000555).toPrecision(15));
311a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("5.55000000000000e-7", (0.000000555).toPrecision(15));
312a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-5.55000000000000e-7", (-0.000000555).toPrecision(15));
313a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1e+8", (123456789).toPrecision(1));
314a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("123456789", (123456789).toPrecision(9));
315a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.2345679e+8", (123456789).toPrecision(8));
316a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.234568e+8", (123456789).toPrecision(7));
317a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.234568e+8", (-123456789).toPrecision(7));
318a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.2e-9", Number(-.0000000012345).toPrecision(2));
319a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.2e-8", Number(-.000000012345).toPrecision(2));
320a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.2e-7", Number(-.00000012345).toPrecision(2));
321a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.0000012", Number(-.0000012345).toPrecision(2));
322a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.000012", Number(-.000012345).toPrecision(2));
323a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.00012", Number(-.00012345).toPrecision(2));
324a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.0012", Number(-.0012345).toPrecision(2));
325a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.012", Number(-.012345).toPrecision(2));
326a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-0.12", Number(-.12345).toPrecision(2));
327a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.2", Number(-1.2345).toPrecision(2));
328a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-12", Number(-12.345).toPrecision(2));
329a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.2e+2", Number(-123.45).toPrecision(2));
330a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.2e+3", Number(-1234.5).toPrecision(2));
331a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.2e+4", Number(-12345).toPrecision(2));
332a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.235e+4", Number(-12345.67).toPrecision(4));
333a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("-1.234e+4", Number(-12344.67).toPrecision(4));
334a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// Test that we round up even when the last digit generated is even.
335a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// dtoa does not do this in its original form.
336a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.3", 1.25.toPrecision(2), "1.25.toPrecision(2)");
337a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockassertEquals("1.4", 1.35.toPrecision(2), "1.35.toPrecision(2)");
338a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
339a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
340a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
341