Exemple #1
0
        public void toLocaleString()
        {
            if (TestUtils.Engine != JSEngine.JScript)
            {
                System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
                Assert.AreEqual("77", TestUtils.Evaluate("77 .toLocaleString()"));
                Assert.AreEqual("77.5", TestUtils.Evaluate("77.5.toLocaleString()"));

                // English.
                Assert.AreEqual("77.123", TestUtils.ChangeLocale("en-NZ", () => TestUtils.Evaluate("77.123.toLocaleString()")));
                Assert.AreEqual("7.7e+101", TestUtils.ChangeLocale("en-NZ", () => TestUtils.Evaluate("77e100 .toLocaleString()")));
                Assert.AreEqual("123456789", TestUtils.ChangeLocale("en-NZ", () => TestUtils.Evaluate("123456789 .toLocaleString()")));
                Assert.AreEqual("-500", TestUtils.ChangeLocale("en-NZ", () => TestUtils.Evaluate("(-500).toLocaleString()")));

                // Spanish.
                Assert.AreEqual("77,123", TestUtils.ChangeLocale("es-ES", () => TestUtils.Evaluate("77.123.toLocaleString()")));
                Assert.AreEqual("7,7e+101", TestUtils.ChangeLocale("es-ES", () => TestUtils.Evaluate("77e100 .toLocaleString()")));
                Assert.AreEqual("123456789", TestUtils.ChangeLocale("es-ES", () => TestUtils.Evaluate("123456789 .toLocaleString()")));
                Assert.AreEqual("-500", TestUtils.ChangeLocale("es-ES", () => TestUtils.Evaluate("(-500).toLocaleString()")));
            }
            Assert.AreEqual("Infinity", TestUtils.Evaluate("Infinity.toLocaleString()"));
            Assert.AreEqual("-Infinity", TestUtils.Evaluate("(-Infinity).toLocaleString()"));
            Assert.AreEqual("NaN", TestUtils.Evaluate("NaN.toLocaleString()"));

            // length
            Assert.AreEqual(0, TestUtils.Evaluate("NaN.toLocaleString.length"));
        }
Exemple #2
0
        public void stringify()
        {
            // Undefined and null.
            Assert.AreEqual("null", TestUtils.Evaluate("JSON.stringify(null)"));
            Assert.AreEqual(Undefined.Value, TestUtils.Evaluate("JSON.stringify(undefined)"));

            // Boolean.
            Assert.AreEqual("false", TestUtils.Evaluate("JSON.stringify(false)"));
            Assert.AreEqual("true", TestUtils.Evaluate("JSON.stringify(true)"));
            Assert.AreEqual("false", TestUtils.Evaluate("JSON.stringify(new Boolean(false))"));
            Assert.AreEqual("true", TestUtils.Evaluate("JSON.stringify(new Boolean(true))"));

            // Numbers.
            Assert.AreEqual("5", TestUtils.Evaluate("JSON.stringify(5)"));
            Assert.AreEqual("5e+100", TestUtils.Evaluate("JSON.stringify(5e100)"));
            Assert.AreEqual("5.1", TestUtils.Evaluate("JSON.stringify(5.1)"));
            Assert.AreEqual("5.1", TestUtils.ChangeLocale("es-ES", () => TestUtils.Evaluate("JSON.stringify(5.1)")));
            Assert.AreEqual("null", TestUtils.Evaluate("JSON.stringify(-Infinity)"));
            Assert.AreEqual("null", TestUtils.Evaluate("JSON.stringify(Infinity)"));
            Assert.AreEqual("null", TestUtils.Evaluate("JSON.stringify(NaN)"));
            Assert.AreEqual("5", TestUtils.Evaluate("JSON.stringify(new Number(5))"));
            Assert.AreEqual("null", TestUtils.Evaluate("JSON.stringify(new Number(NaN))"));

            // Strings.
            Assert.AreEqual(@"""test""", TestUtils.Evaluate("JSON.stringify('test')"));
            Assert.AreEqual(@"""\b\f\n\r\t""", TestUtils.Evaluate(@"JSON.stringify('\b\f\n\r\t')"));
            Assert.AreEqual(@"""\u0000""", TestUtils.Evaluate("JSON.stringify(String.fromCharCode(0))"));
            Assert.AreEqual(@"""\u001f""", TestUtils.Evaluate("JSON.stringify(String.fromCharCode(0x1F))"));
            Assert.AreEqual(@"""test""", TestUtils.Evaluate("JSON.stringify(new String('test'))"));
            Assert.AreEqual(@"""te\""st""", TestUtils.Evaluate("JSON.stringify('te\"st')"));
            Assert.AreEqual(@"""te'st""", TestUtils.Evaluate("JSON.stringify('te\\'st')"));

            // Dates.
            Assert.AreEqual("null", TestUtils.Evaluate("JSON.stringify(Date.prototype)"));
            Assert.AreEqual(@"""1970-01-01T00:00:00.005Z""", TestUtils.Evaluate("JSON.stringify(new Date(5))"));

            // Arrays.
            Assert.AreEqual("[]", TestUtils.Evaluate("JSON.stringify([])"));
            Assert.AreEqual("[0,1,2]", TestUtils.Evaluate("JSON.stringify([0, 1, 2])"));
            Assert.AreEqual("[0,null,2]", TestUtils.Evaluate("JSON.stringify([0, , 2])"));
            Assert.AreEqual("[0,null,2]", TestUtils.Evaluate("JSON.stringify([0, undefined, 2])"));

            // Functions.
            Assert.AreEqual(Undefined.Value, TestUtils.Evaluate("JSON.stringify(function() {})"));
            Assert.AreEqual("[null]", TestUtils.Evaluate("JSON.stringify([function() {}])"));
            Assert.AreEqual("{}", TestUtils.Evaluate("JSON.stringify({f: function() {}})"));

            // Objects.
            Assert.AreEqual("{}", TestUtils.Evaluate("JSON.stringify({})"));
            Assert.AreEqual(@"{""a"":1,""b"":2}", TestUtils.Evaluate("JSON.stringify({a: 1, b: 2})"));

            // Cyclic reference
            Assert.AreEqual("TypeError", TestUtils.EvaluateExceptionType("a = []; a[0] = a; JSON.stringify(a)"));
        }
Exemple #3
0
        public void toString()
        {
            Assert.AreEqual("12345", TestUtils.Evaluate("12345 .toString()"));
            Assert.AreEqual("18014398509481990", TestUtils.Evaluate("18014398509481992 .toString()"));
            Assert.AreEqual("18014398509482010", TestUtils.Evaluate("18014398509482008 .toString()"));
            Assert.AreEqual("18014398509482012", TestUtils.Evaluate("18014398509482012 .toString()"));
            Assert.AreEqual("18014398509481988", TestUtils.Evaluate("18014398509481988 .toString()"));
            Assert.AreEqual("1234567890123456800", TestUtils.Evaluate("1234567890123456789 .toString()"));
            Assert.AreEqual("2234567890123456800", TestUtils.Evaluate("2234567890123456789 .toString()"));
            Assert.AreEqual("3234567890123457000", TestUtils.Evaluate("3234567890123456789 .toString()"));
            Assert.AreEqual("4234567890123457000", TestUtils.Evaluate("4234567890123456789 .toString()"));
            Assert.AreEqual("72057594037927940", TestUtils.Evaluate("72057594037927944 .toString()"));
            Assert.AreEqual("72057594037927950", TestUtils.Evaluate("72057594037927945 .toString()"));
            Assert.AreEqual("72057594037927950", TestUtils.Evaluate("72057594037927959 .toString()"));
            Assert.AreEqual("9.999999999999998", TestUtils.Evaluate("9.999999999999999.toString()"));
            Assert.AreEqual("10", TestUtils.Evaluate("9.9999999999999999.toString()"));
            Assert.AreEqual("100000000000000000000", TestUtils.Evaluate("99999999999999999999 .toString()"));
            Assert.AreEqual("999999999999990000000", TestUtils.Evaluate("999999999999990000000 .toString()"));
            Assert.AreEqual("1e+21", TestUtils.Evaluate("999999999999999999999 .toString()"));
            Assert.AreEqual("100000000000000000000", TestUtils.Evaluate("99999999999999999999 .toString()"));
            Assert.AreEqual("-77", TestUtils.Evaluate("(-77).toString()"));
            Assert.AreEqual("77.1274", TestUtils.Evaluate("77.1274.toString()"));
            Assert.AreEqual("77.001", TestUtils.Evaluate("77.001.toString()"));
            Assert.AreEqual("77.12345678901235", TestUtils.Evaluate("77.1234567890123456789.toString()"));
            Assert.AreEqual("7.123456789012345", TestUtils.Evaluate("7.1234567890123456789.toString()"));
            Assert.AreEqual("0.000005", TestUtils.Evaluate("5e-6.toString()"));
            Assert.AreEqual("0.000001", TestUtils.Evaluate("1e-6.toString()"));
            Assert.AreEqual("5e-7", TestUtils.Evaluate("5e-7.toString()"));
            Assert.AreEqual("1e-7", TestUtils.Evaluate("1e-7.toString()"));
            Assert.AreEqual("1000000000000000", TestUtils.Evaluate("1e15.toString()"));
            Assert.AreEqual("10000000000000000", TestUtils.Evaluate("1e16.toString()"));
            Assert.AreEqual("100000000000000000", TestUtils.Evaluate("1e17.toString()"));
            Assert.AreEqual("1000000000000000000", TestUtils.Evaluate("1e18.toString()"));
            Assert.AreEqual("10000000000000000000", TestUtils.Evaluate("1e19.toString()"));
            Assert.AreEqual("100000000000000000000", TestUtils.Evaluate("1e20.toString()"));
            Assert.AreEqual("1e+21", TestUtils.Evaluate("1e21.toString()"));
            Assert.AreEqual("1e+21", TestUtils.Evaluate("999999999999999999999 .toString()"));
            Assert.AreEqual("100111122133144160", TestUtils.Evaluate("100111122133144155 .toString()"));
            Assert.AreEqual("Infinity", TestUtils.Evaluate("Infinity.toString()"));
            Assert.AreEqual("-Infinity", TestUtils.Evaluate("(-Infinity).toString()"));
            Assert.AreEqual("NaN", TestUtils.Evaluate("NaN.toString()"));
            Assert.AreEqual("1.7976931348623157e+308", TestUtils.Evaluate("Number.MAX_VALUE.toString()"));
            Assert.AreEqual("5e-324", TestUtils.Evaluate("Number.MIN_VALUE.toString()"));

            // Radix which is not 10.
            Assert.AreEqual("115", TestUtils.Evaluate("77 .toString(8)"));
            Assert.AreEqual("1001", TestUtils.Evaluate("9 .toString(2)"));
            Assert.AreEqual("fe", TestUtils.Evaluate("254 .toString(16)"));
            Assert.AreEqual("-115.4621320712601014", TestUtils.Evaluate("(-77.598).toString(8)"));
            Assert.AreEqual("0.00142233513615237575", TestUtils.Evaluate("0.003.toString(8)"));
            Assert.AreEqual("27524716460150203300000000000000000", TestUtils.Evaluate("15e30.toString(8)"));
            Assert.AreEqual("0.252525252525252525", TestUtils.Evaluate("(1/3).toString(8)"));

            // Decimal point should be '.' regardless of locale.
            Assert.AreEqual("77.1274", TestUtils.ChangeLocale("es-ES", () => TestUtils.Evaluate("77.1274.toString()")));

            // Radix out of range.
            Assert.AreEqual(TestUtils.Engine == JSEngine.JScript ? "TypeError" : "RangeError", TestUtils.EvaluateExceptionType("254 .toString(37)"));
            Assert.AreEqual(TestUtils.Engine == JSEngine.JScript ? "TypeError" : "RangeError", TestUtils.EvaluateExceptionType("254 .toString(1)"));

            // length
            Assert.AreEqual(1, TestUtils.Evaluate("NaN.toString.length"));
        }