[MSHTML_WINETEST]
[reactos.git] / rostests / winetests / mshtml / jstest.html
index 3363c5a..7861196 100644 (file)
@@ -31,7 +31,193 @@ function test_select_index() {
     ok(s[2] === null, "s[2] = " + s[2]);
 }
 
-function runTest() {
+function test_createDocumentFragment() {
+    var fragment = document.createDocumentFragment();
+
+    ok(typeof(fragment) === "object", "typeof(fragmend) = " + typeof(fragment));
+    ok(fragment.nodeType === 11, "fragment.nodeType = " + fragment.nodeType);
+    ok(fragment.nodeName === "#document-fragment", "fragment.nodeName = " + fragment.nodeName);
+
+    var cloned = fragment.cloneNode(true);
+    ok(cloned.nodeType === 11, "cloned.nodeType = " + cloned.nodeType);
+    ok(cloned.nodeName === "#document-fragment", "cloned.nodeName = " + cloned.nodeName);
+}
+
+function test_document_name_as_index() {
+    document.body.innerHTML = '<form name="formname"></form>';
+    var e = document.getElementById("formname");
+    ok(!!e, "e is null");
+
+    ok(document.formname === e, "document.formname != getElementById('formname')");
+    ok("formname" in document, "formname' is not in document");
+
+    document.body.removeChild(e);
+
+    ok(document.formname === undefined, "document.formname is not undefined");
+    ok(!("formname" in document), "formname' is in document");
+
+    document.body.innerHTML = '<form id="formid"></form>';
+    var e = document.getElementById("formid");
+    ok(!!e, "e is null");
+    ok(!("formid" in document), "formid is in document");
+
+    document.body.innerHTML = '<form name="formname"></form>';
+    ok("formname" in window, "formname' is not in window");
+    ok(typeof(window.formname) === "object", "typeof(window.formname) = " + typeof(window.formname));
+    window.formname = 1;
+    ok(window.formname === 1, "window.formname = " + window.formname);
+    formname = 2;
+    ok(window.formname === 2, "window.formname = " + window.formname);
+
+    document.body.innerHTML = '<iframe id="iframeid"></iframe>';
+    ok("iframeid" in window, "iframeid is not in window");
+    e = document.getElementById("iframeid");
+    ok(!!e, "e is null");
+    ok(iframeid != e, "iframeid == e");
+    ok(iframeid.frameElement === e, "frameid != e.contentWindow");
+}
+
+function test_remove_style_attribute() {
+    var s = document.body.style, b;
+
+    s.somevar = "test";
+    b = s.removeAttribute("somevar", 1);
+    ok(b, "removeAttribute returned " + b + " expected true");
+    b = s.removeAttribute("somevar", 1);
+    ok(b === false, "removeAttribute returned " + b + " expected false");
+}
+
+function test_clone_node() {
+    var elem, cloned;
+
+    elem = document.getElementById("divid");
+    elem.style.filter = "alpha(opacity=50)";
+    ok(elem.style.filter === "alpha(opacity=50)", "elem.style.filter = " + elem.style.filter);
+
+    cloned = elem.cloneNode(true);
+    ok(cloned.style.filter === "alpha(opacity=50)", "cloned.style.filter = " + cloned.style.filter);
+}
+
+function test_setAttribute() {
+    var input;
+
+    document.body.innerHTML = '<input id="inputid"></input>';
+    input = document.getElementById("inputid");
+    ok(input.checked === false, "input.checked = " + input.checked);
+
+    input.setAttribute("checked", "test");
+    ok(input.checked === true, "input.checked = " + input.checked);
+
+    input.setAttribute("checked", 0);
+    ok(input.checked === false, "input.checked = " + input.checked);
+
+    input.setAttribute("checked", "");
+    ok(input.checked === false, "input.checked = " + input.checked);
+}
+
+function test_attribute_collection() {
+    var div, attr;
+
+    document.body.innerHTML = '<div id="divid" class="test"></div>';
+    div = document.getElementById("divid");
+
+    attr = div.attributes["dir"];
+    ok(attr === div.attributes["dir"], "attr !== div.attributes['dir']");
+}
+
+function test_getter_call() {
+    document.body.innerHTML = '<div id="divid"></div>';
+
+    var e = document.getElementById("divid");
+
+    e.myfunc = function(x) { this.myfunc_called = x; };
+    e.myfunc("test");
+    ok(e.myfunc_called === "test", "e.myfunc_called = " + e.myfunc_called);
+
+    e.onmousedown = function(x) { this.onmousedown_called = x; };
+    e.onmousedown("test");
+    ok(e.onmousedown_called === "test", "e.onmousedown_called = " + e.onmousedown_called);
+
+    ok(document.all("divid").tagName === "DIV", "document.all('divid').tagName = " + document.all("divid").tagName);
+}
+
+function test_arg_conv() {
+    /* this call would throw if the argument wasn't converted by JScript */
+    window.clearInterval("");
+
+    navigator.javaEnabled();
+}
+
+function test_override_functions() {
+    function override_func() { return "test"; }
+
+    ok(typeof(window.showModalDialog) === "object", "typeof(window.showModalDialog) = " + typeof(window.showModalDialog));
+    window.showModalDialog = override_func;
+    ok(window.showModalDialog === override_func, "window.showModalDialog != override_func");
+    ok(typeof(window.showModalDialog) === "function", "typeof(window.showModalDialog) = " + typeof(window.showModalDialog));
+
+    document.body.innerHTML = '<div id="divid"></div>';
+    var div = document.getElementById("divid");
+    ok(typeof(div.addBehavior) === "object", "typeof(div.addBehavior) = " + typeof(div.addBehavior));
+    div.addBehavior = override_func;
+    ok(div.addBehavior === override_func, "div.addBehavior != override_func");
+    ok(typeof(div.addBehavior) === "function", "typeof(div.addBehavior) = " + typeof(div.addBehavior));
+
+    var tmp = div.addBehavior();
+    ok(tmp === "test", "div.addBehavior() = " + tmp);
+
+    tmp = String(div.attachEvent);
+    ok(tmp == "\nfunction attachEvent() {\n    [native code]\n}\n", "String(div.attachEvent) = " + tmp);
+}
+
+function test_forin() {
+    var cnt=0;
+
+    document.body.innerHTML = '<a id="aid"></a>';
+
+    for(var x in document.getElementById("aid")) {
+        cnt++;
+    }
+
+    ok(cnt > 100, "cnt = " + cnt);
+}
+
+function test_customtag() {
+    document.body.innerHTML = 'test<unk><br>';
+
+    var children = document.body.childNodes;
+
+    ok(children.length === 3, "children.length = " + children.length);
+    ok(children[0].data === "test", "children[0].data = " + children[0].data);
+    ok(children[1].tagName === "UNK", "children[1].tagName = " + children[1].tagName);
+    ok(children[2].tagName === "BR", "children[2].tagName = " + children[2].tagName);
+}
+
+function test_whitespace_nodes() {
+    document.body.innerHTML = '<table id="tid"> <tr> \t<td>\n \t<div></div> </td>\n </tr> </table>';
+
+    var t = document.getElementById("tid");
+    ok(t.childNodes.length === 1, "t.childNodes.length = " + t.childNodes.length);
+    ok(t.childNodes[0].tagName === "TBODY", "t.childNodes[0].tagName = " + t.childNodes[0].tagName);
+
+    var row = t.rows[0];
+    ok(row.childNodes.length === 1, "row.childNodes.length = " + row.childNodes.length);
+    ok(row.childNodes[0].tagName === "TD", "row.childNodes[0].tagName = " + row.childNodes[0].tagName);
+
+    var cell = row.cells[0];
+    ok(cell.childNodes.length === 1, "cell.childNodes.length = " + cell.childNodes.length);
+
+
+    document.body.innerHTML = '<table id="tid"> x<tr> \tx<td>\n \tx<div></div> </td>\n </tr> </table>';
+
+    t = document.getElementById("tid");
+    ok(t.rows[0].cells[0].childNodes.length === 2,
+        "t.rows[0].cells[0].childNodes.length = " + t.rows[0].cells[0].childNodes.length);
+}
+
+var globalVar = false;
+
+function runTests() {
     obj = new Object();
     ok(obj === window.obj, "obj !== window.obj");
 
@@ -40,6 +226,30 @@ function runTest() {
     test_removeAttribute(document.getElementById("divid"));
     test_removeAttribute(document.body);
     test_select_index();
+    test_clone_node();
+    test_createDocumentFragment();
+    test_document_name_as_index();
+    test_remove_style_attribute();
+    test_getter_call();
+    test_setAttribute();
+    test_attribute_collection();
+    test_arg_conv();
+    test_override_functions();
+    test_forin();
+    test_customtag();
+    test_whitespace_nodes();
+
+    var r = window.execScript("globalVar = true;");
+    ok(r === undefined, "execScript returned " + r);
+    ok(globalVar === true, "globalVar = " + globalVar);
+}
+
+function runTest() {
+    try {
+        runTests();
+    }catch(e) {
+        ok(false, "got exception " + e.message);
+    }
 
     external.reportSuccess();
 }