test/script/basic/NASHORN-12.js

Thu, 12 Oct 2017 19:52:15 +0800

author
aoqi
date
Thu, 12 Oct 2017 19:52:15 +0800
changeset 1205
4112748288bb
parent 962
ac62e33a99b0
parent 952
6d5471a497fb
permissions
-rw-r--r--

merge

aoqi@0 1 /*
aoqi@0 2 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
aoqi@0 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
attila@962 4 *
aoqi@0 5 * This code is free software; you can redistribute it and/or modify it
aoqi@0 6 * under the terms of the GNU General Public License version 2 only, as
aoqi@0 7 * published by the Free Software Foundation.
attila@962 8 *
aoqi@0 9 * This code is distributed in the hope that it will be useful, but WITHOUT
aoqi@0 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
aoqi@0 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
aoqi@0 12 * version 2 for more details (a copy is included in the LICENSE file that
aoqi@0 13 * accompanied this code).
attila@962 14 *
aoqi@0 15 * You should have received a copy of the GNU General Public License version
aoqi@0 16 * 2 along with this work; if not, write to the Free Software Foundation,
aoqi@0 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
attila@962 18 *
aoqi@0 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
aoqi@0 20 * or visit www.oracle.com if you need additional information or have any
aoqi@0 21 * questions.
aoqi@0 22 */
aoqi@0 23
aoqi@0 24 /**
aoqi@0 25 * NASHORN-12 : Number does not have methods toFixed, toPrecision, and toExponential.
aoqi@0 26 *
aoqi@0 27 * @test
aoqi@0 28 * @run
aoqi@0 29 */
aoqi@0 30
aoqi@0 31 // checks for Number.prototype.toFixed
aoqi@0 32
aoqi@0 33 if (NaN.toFixed() !== "NaN") {
aoqi@0 34 fail("#1 NaN.toFixed() is not NaN");
aoqi@0 35 }
aoqi@0 36
aoqi@0 37 if (new Number(1e21).toFixed(12) !== String(1e21)) {
aoqi@0 38 fail("#2 new Number(1e21).toFixed(12) is not String(1e21)");
aoqi@0 39 }
aoqi@0 40
aoqi@0 41 if (new Number(1.2).toFixed(3) !== "1.200") {
aoqi@0 42 fail("#3 new Number(1.2).toFixed(3) is not '1.200'");
aoqi@0 43 }
aoqi@0 44
aoqi@0 45 if (new Number(1.2542).toFixed(3) !== "1.254") {
aoqi@0 46 fail("#4 Number(1.2542).toFixed(3) is not '1.254'");
aoqi@0 47 }
aoqi@0 48
aoqi@0 49 try {
aoqi@0 50 453.334.toFixed(31);
aoqi@0 51 fail("#5 toFixed(31) should have thrown RangeError");
aoqi@0 52 } catch (e) {
aoqi@0 53 if (! (e instanceof RangeError)) {
aoqi@0 54 fail("#6 toFixed(31) should throw RangeError, got " + e);
aoqi@0 55 }
aoqi@0 56 }
aoqi@0 57
aoqi@0 58 try {
aoqi@0 59 3.14.toFixed(-1);
aoqi@0 60 fail("#7 toFixed(-1) should have thrown RangeError");
aoqi@0 61 } catch (e) {
aoqi@0 62 if (! (e instanceof RangeError)) {
aoqi@0 63 fail("#8 toFixed(-1) should throw RangeError, got " + e);
aoqi@0 64 }
aoqi@0 65 }
aoqi@0 66
aoqi@0 67
aoqi@0 68 // checks for Number.prototype.toPrecision
aoqi@0 69
aoqi@0 70 var num = new Number(0.0);
aoqi@0 71
aoqi@0 72 try {
aoqi@0 73 num.toPrecision(0);
aoqi@0 74 fail("#9: num.toPrecision(0) should have been thrown RangeError");
aoqi@0 75 } catch (e) {
aoqi@0 76 if (! (e instanceof RangeError)) {
aoqi@0 77 fail("#10: RangeError expected, got " + e);
aoqi@0 78 }
aoqi@0 79 }
aoqi@0 80
aoqi@0 81 try {
aoqi@0 82 num.toPrecision(22);
aoqi@0 83 fail("#11: num.toPrecision(22) should have been thrown RangeError");
aoqi@0 84 } catch (e) {
aoqi@0 85 if (! (e instanceof RangeError)) {
aoqi@0 86 fail("#12: RangeError expected, got " + e);
aoqi@0 87 }
aoqi@0 88 }
aoqi@0 89
aoqi@0 90 num = new Number(23.4718);
aoqi@0 91
aoqi@0 92 if (num.toPrecision(1) != "2e+1") {
aoqi@0 93 fail("#13: toPrecision(1) gives " + num.toPrecision(1));
aoqi@0 94 }
aoqi@0 95
aoqi@0 96 if (num.toPrecision(2) != "23") {
aoqi@0 97 fail("#14: toPrecision(2) gives " + num.toPrecision(2));
aoqi@0 98 }
aoqi@0 99
aoqi@0 100 if (num.toPrecision(3) != "23.5") {
aoqi@0 101 fail("#15: toPrecision(3) gives " + num.toPrecision(3));
aoqi@0 102 }
aoqi@0 103
aoqi@0 104 if (num.toPrecision(11) != "23.471800000") {
aoqi@0 105 fail("#16: toPrecision(11) gives " + num.toPrecision(11));
aoqi@0 106 }
aoqi@0 107
aoqi@0 108 if (Infinity.toPrecision(1) != "Infinity") {
aoqi@0 109 fail("#17: Infinity.toPrecision(1) gives " + Infinity.toPrecision(1));
aoqi@0 110 }
aoqi@0 111
aoqi@0 112 if (-Infinity.toPrecision(1) != "-Infinity") {
aoqi@0 113 fail("#18: -Infinity.toPrecision(1) gives " + -Infinity.toPrecision(1));
aoqi@0 114 }
aoqi@0 115
aoqi@0 116 // checks for Number.prototype.toExponential
aoqi@0 117
aoqi@0 118 if (num.toExponential(1) != "2.3e+1") {
aoqi@0 119 fail("#20: toExponential(1) gives " + num.toExponential(1));
aoqi@0 120 }
aoqi@0 121
aoqi@0 122 if (num.toExponential(2) != "2.35e+1") {
aoqi@0 123 fail("#21: toExponential(2) gives " + num.toExponential(2));
aoqi@0 124 }
aoqi@0 125
aoqi@0 126 if (num.toExponential(3) != "2.347e+1") {
aoqi@0 127 fail("#22: toExponential(3) gives " + num.toExponential(3));
aoqi@0 128 }
aoqi@0 129
aoqi@0 130 if (num.toExponential(11) != "2.34718000000e+1") {
aoqi@0 131 fail("#23: toExponential(11) gives " + num.toExponential(11));
aoqi@0 132 }
aoqi@0 133
aoqi@0 134 if (Infinity.toExponential(1) != "Infinity") {
aoqi@0 135 fail("#24: Infinity.toExponential(1) gives " + Infinity.toExponential(1));
aoqi@0 136 }
aoqi@0 137
aoqi@0 138 if (-Infinity.toExponential(1) != "-Infinity") {
aoqi@0 139 fail("#25: -Infinity.toExponential(1) gives " + -Infinity.toExponential(1));
aoqi@0 140 }
aoqi@0 141
aoqi@0 142 if (NaN.toExponential(1) != "NaN") {
aoqi@0 143 fail("#26: NaN.toExponential(1) gives " + NaN.toExponential(1));
aoqi@0 144 }
aoqi@0 145

mercurial