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