Author: akhaldi Date: Thu Mar 3 13:25:03 2016 New Revision: 70872
URL: http://svn.reactos.org/svn/reactos?rev=70872&view=rev Log: [JSCRIPT_WINETEST] Sync with Wine Staging 1.9.4. CORE-10912
Modified: trunk/rostests/winetests/jscript/api.js
Modified: trunk/rostests/winetests/jscript/api.js URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/jscript/api.js?r... ============================================================================== --- trunk/rostests/winetests/jscript/api.js [iso-8859-1] (original) +++ trunk/rostests/winetests/jscript/api.js [iso-8859-1] Thu Mar 3 13:25:03 2016 @@ -1766,6 +1766,89 @@ tmp = Math.tan(-Infinity); ok(isNaN(tmp), "Math.tan(-Infinity) is not NaN");
+(function() { + if(invokeVersion < 2) + return; + + var stringify_tests = [ + [[true], "true"], + [[false], "false"], + [[null], "null"], + [[1], "1"], + [["test"], ""test""], + [["test"\\b\f\n\r\t\u0002 !"], ""test\"\\\b\f\n\r\t\u0002 !""], + [[NaN], "null"], + [[Infinity], "null"], + [[-Infinity], "null"], + [[{prop1: true, prop2: "string"}], "{"prop1":true,"prop2":"string"}"], + [[{prop1: true, prop2: testObj, prop3: undefined}], "{"prop1":true}"], + [[{prop1: true, prop2: {prop: "string"}},undefined," "], + "{\n "prop1": true,\n "prop2": {\n "prop": "string"\n }\n}"], + [[{ },undefined," "], "{}"], + [[[,2,undefined,3,{ },]],"[null,2,null,3,{},null]"], + [[[,2,undefined,3,{prop:0},],undefined," "],"[\n null,\n 2,\n null,\n 3,\n {\n "prop": 0\n },\n null\n]"] + ]; + + var i, s, v; + + for(i=0; i < stringify_tests.length; i++) { + s = JSON.stringify.apply(null, stringify_tests[i][0]); + ok(s === stringify_tests[i][1], + "["+i+"] stringify(" + stringify_tests[i][0] + ") returned " + s + " expected " + stringify_tests[i][1]); + } + + s = JSON.stringify(testObj); + ok(s === undefined || s === "undefined" /* broken on some old versions */, + "stringify(testObj) returned " + s + " expected undfined"); + + s = JSON.stringify(undefined); + ok(s === undefined || s === "undefined" /* broken on some old versions */, + "stringify(undefined) returned " + s + " expected undfined"); + + var parse_tests = [ + ["true", true], + [" \nnull ", null], + ["{}", {}], + [""\r\n test\u1111"", "\r\n test\u1111"], + ["{"x" :\n true}", {x:true}], + ["{"x y": {}, "z": {"x":null}}", {"x y":{}, z:{x:null}}], + ["[]", []], + ["[false,{},{"x": []}]", [false,{},{x:[]}]], + ["0", 0], + ["- 1", -1], + ["1e2147483648", Infinity] + ]; + + function json_cmp(x, y) { + if(x === y) + return true; + + if(!(x instanceof Object) || !(y instanceof Object)) + return false; + + for(var prop in x) { + if(!x.hasOwnProperty(prop)) + continue; + if(!x.hasOwnProperty(prop)) + return false; + if(!json_cmp(x[prop], y[prop])) + return false; + } + + for(var prop in y) { + if(!x.hasOwnProperty(prop) && y.hasOwnProperty(prop)) + return false; + } + + return true; + } + + for(i=0; i < parse_tests.length; i++) { + v = JSON.parse(parse_tests[i][0]); + ok(json_cmp(v, parse_tests[i][1]), "parse[" + i + "] returned " + v + ", expected " + parse_tests[i][1]); + } +})(); + var func = function (a) { var a = 1; if(a) return; @@ -1868,6 +1951,16 @@ ok(tmp === undefined, "func() = " + tmp); tmp = func.toString(); ok(tmp == "function anonymous() {\n\n}", "func.toString() = " + tmp); + +// Function constructor called as function +func = Function("return 3;"); + +tmp = func(); +ok(tmp === 3, "func() = " + tmp); +ok(func.call() === 3, "func.call() = " + tmp); +ok(func.length === 0, "func.length = " + func.length); +tmp = func.toString(); +ok(tmp === "function anonymous() {\nreturn 3;\n}", "func.toString() = " + tmp);
func = (function() { var tmp = 3; @@ -2707,6 +2800,14 @@ ["lbound", 0], ["toArray", 0], ["ubound", 0] +]); + +if(invokeVersion < 2) + ok(typeof(JSON) === "undefined", "JSON is not undefined"); +else + testFunctions(JSON, [ + ["parse", 2], + ["stringify", 3] ]);
ok(ActiveXObject.length == 1, "ActiveXObject.length = " + ActiveXObject.length);