| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <script> |
| description('Tests the spellcheck attribute.'); |
| |
| var parent = document.createElement("div"); |
| document.body.appendChild(parent); |
| |
| function testFor(initialAttribute, initialExpectation, setValue, lastExpectation, lastAttributeExpectation) |
| { |
| var target = document.createElement("span"); |
| parent.appendChild(target); |
| |
| window.target = target; |
| window.initialExpectation = initialExpectation; |
| window.lastExpectation = lastExpectation; |
| window.lastAttributeExpectation = lastAttributeExpectation; |
| |
| if (undefined !== initialAttribute) |
| target.setAttribute("spellcheck", initialAttribute); |
| shouldBe("target.spellcheck", "initialExpectation"); |
| |
| if (undefined !== setValue) |
| target.spellcheck = setValue; |
| shouldBe("target.spellcheck", "lastExpectation"); |
| shouldBe("target.getAttribute('spellcheck')", "lastAttributeExpectation"); |
| |
| parent.removeChild(target); |
| } |
| |
| function testUsingSetAttributes() |
| { |
| var target = document.createElement("span"); |
| parent.appendChild(target); |
| window.target = target; |
| |
| shouldBe("target.spellcheck", "true"); |
| shouldBe("target.getAttribute('spellcheck')", "'true'"); |
| // Set using property. |
| target.spellcheck = false; |
| shouldBe("target.spellcheck", "false"); |
| shouldBe("target.getAttribute('spellcheck')", "'false'"); |
| // Set using setAttribute(). |
| target.setAttribute("spellcheck", "true"); |
| shouldBe("target.spellcheck", "true"); |
| shouldBe("target.getAttribute('spellcheck')", "'true'"); |
| |
| // Set using setAttribute(), valid but non canonical value. |
| target.spellcheck = false; // clear at first |
| target.setAttribute("spellcheck", "TRUE"); |
| shouldBe("target.spellcheck", "true"); |
| shouldBe("target.getAttribute('spellcheck')", "'TRUE'"); |
| // Set using setAttribute(), invalid value. |
| target.spellcheck = false; // clear at first |
| target.setAttribute("spellcheck", "INVALID"); |
| shouldBe("target.spellcheck", "true"); |
| shouldBe("target.getAttribute('spellcheck')", "'INVALID'"); |
| |
| parent.removeChild(target); |
| } |
| |
| testFor(undefined, true, undefined, true, null); |
| testFor(undefined, true, false, false, "false"); |
| testFor(undefined, true, true, true, "true"); |
| testFor(undefined, true, 0, false, "false"); // 0 will be coerced to false |
| testFor(undefined, true, 1, true, "true"); // 0 will be coerced to true |
| testFor(undefined, true, "invalid", true, "true"); // string will be coerced to true |
| testFor(undefined, true, "false", true, "true"); // ...even if the string is "false" (as Firefox does). |
| |
| testFor("true", true, undefined, true, "true"); |
| testFor("true", true, false, false, "false"); |
| testFor("true", true, true, true, "true"); |
| testFor("true", true, 0, false, "false"); |
| testFor("true", true, 1, true, "true"); |
| testFor("true", true, "invalid", true, "true"); |
| testFor("true", true, "false", true, "true"); |
| |
| testFor("false", false, undefined, false, "false"); |
| testFor("false", false, false, false, "false"); |
| testFor("false", false, true, true, "true"); |
| testFor("false", false, 0, false, "false"); |
| testFor("false", false, 1, true, "true"); |
| testFor("false", false, "invalid", true, "true"); |
| testFor("false", false, "false", true, "true"); |
| |
| // various initial values |
| testFor("", true, undefined, true, ""); |
| testFor("", true, 1, true, "true"); |
| testFor("TRUE", true, undefined, true, "TRUE"); |
| testFor("TRUE", true, 1, true, "true"); |
| testFor("FALSE", false, undefined, false, "FALSE"); |
| testFor("FALSE", false, 0, false, "false"); |
| testFor("invalid", true, undefined, true, "invalid"); |
| testFor("invalid", true, 1, true, "true"); |
| testFor("false ", true, undefined, true, "false "); |
| testFor("false ", true, 1, true, "true"); |
| testFor("false ", true, 0, false, "false"); |
| testFor("0", true, undefined, true, "0"); |
| testFor("0", true, 0, false, "false"); |
| testFor("1", true, undefined, true, "1"); |
| testFor("1", true, 0, false, "false"); |
| |
| testUsingSetAttributes(); |
| </script> |
| <script src="../../../resources/js-test-post.js"></script> |
| </body> |
| </html> |