This tests the behavior of non-numeric values in contexts where the DOM has a numeric parameter.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS nonNumericPolicy('document.createTextNode("a").substringData(x, 0)') is 'any type allowed'
PASS nonNumericPolicy('document.createTextNode("a").substringData(0, x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('document.createTextNode("a").insertData(x, "b")') is 'any type allowed'
PASS nonNumericPolicy('document.createTextNode("a").deleteData(x, 0)') is 'any type allowed'
PASS nonNumericPolicy('document.createTextNode("a").deleteData(0, x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('document.createTextNode("a").replaceData(x, 0, "b")') is 'any type allowed'
PASS nonNumericPolicy('document.createTextNode("a").replaceData(0, x, "b")') is 'any type allowed'
PASS nonNumericPolicy('createCSSMediaRule().insertRule(ruleText, x)') is 'any type allowed'
PASS nonNumericPolicy('createCSSMediaRule().deleteRule(x)') is 'any type allowed'
PASS nonNumericPolicy('createCSSRuleList().item(x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('createCSSStyleDeclaration().item(x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('createCSSStyleSheet().insertRule(ruleText, x)') is 'any type allowed'
PASS nonNumericPolicy('createCSSStyleSheet().deleteRule(x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('createCSSStyleSheet().addRule(selector, styleText, x)') is 'any type allowed'
PASS nonNumericPolicy('createCSSStyleSheet().removeRule(x)') is 'any type allowed'
PASS nonNumericPolicy('createCSSValueList().item(x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('document.elementFromPoint(x, 0)') is 'mixed'
PASS nonNumericPolicy('document.elementFromPoint(0, x)') is 'mixed'
PASS nonNumericPolicy('document.scrollingElement.scrollLeft = x') is 'any type allowed'
PASS nonNumericPolicy('document.scrollingElement.scrollTop = x') is 'any type allowed'
PASS nonNumericPolicy('document.images.item(x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('document.createElement("input").setSelectionRange(x, 0)') is 'any type allowed'
PASS nonNumericPolicy('document.createElement("input").setSelectionRange(0, x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('createHTMLOptionsCollection().add(document.createElement("option"), x)') is 'any type allowed'
PASS nonNumericPolicy('createHTMLOptionsCollection().remove(x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('createHTMLSelectElement().remove(x)') is 'any type allowed'
PASS nonNumericPolicy('createHTMLSelectElement().item(x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('createHTMLTableElement().insertRow(x)') is 'any type allowed'
PASS nonNumericPolicy('createHTMLTableElement().deleteRow(x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('createHTMLTableRowElement().insertCell(x)') is 'any type allowed'
PASS nonNumericPolicy('createHTMLTableRowElement().deleteCell(x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('createHTMLTableSectionElement().insertRow(x)') is 'any type allowed'
PASS nonNumericPolicy('createHTMLTableSectionElement().deleteRow(x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('document.createElement("textarea").setSelectionRange(x, 0)') is 'any type allowed'
PASS nonNumericPolicy('document.createElement("textarea").setSelectionRange(0, x)') is 'any type allowed'
PASS nonNumericPolicy('document.createEvent("KeyboardEvent").initKeyboardEvent("a", false, false, null, "b", x, false, false, false, false, false)') is 'any type allowed'
PASS nonNumericPolicy('createMediaList().item(x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('document.createEvent("MouseEvent").initMouseEvent("a", false, false, null, x, 0, 0, 0, 0, false, false, false, false, 0, null)') is 'any type allowed'
PASS nonNumericPolicy('document.createEvent("MouseEvent").initMouseEvent("a", false, false, null, 0, x, 0, 0, 0, false, false, false, false, 0, null)') is 'any type allowed'
PASS nonNumericPolicy('document.createEvent("MouseEvent").initMouseEvent("a", false, false, null, 0, 0, x, 0, 0, false, false, false, false, 0, null)') is 'any type allowed'
PASS nonNumericPolicy('document.createEvent("MouseEvent").initMouseEvent("a", false, false, null, 0, 0, 0, x, 0, false, false, false, false, 0, null)') is 'any type allowed'
PASS nonNumericPolicy('document.createEvent("MouseEvent").initMouseEvent("a", false, false, null, 0, 0, 0, 0, x, false, false, false, false, 0, null)') is 'any type allowed'
PASS nonNumericPolicy('document.createEvent("MouseEvent").initMouseEvent("a", false, false, null, 0, 0, 0, 0, 0, false, false, false, false, x, null)') is 'any type allowed'
PASS nonNumericPolicy('document.body.attributes.item(x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('document.createNodeIterator(document, x, null, false)') is 'any type allowed'
PASS nonNumericPolicy('document.getElementsByTagName("div").item(x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('document.createRange().setStart(document, x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('document.createRange().setEnd(document, x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('document.createRange().comparePoint(document, x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('document.createRange().isPointInRange(document, x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('getSelection().collapse(document, x)') is 'any type allowed'
PASS nonNumericPolicy('getSelection().setBaseAndExtent(document, x, document, 0)') is 'any type allowed'
PASS nonNumericPolicy('getSelection().setBaseAndExtent(document, 0, document, x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('getSelection().setPosition(document, x)') is 'any type allowed'
PASS nonNumericPolicy('getSelection().extend(document, x)') is 'any type allowed'
PASS nonNumericPolicy('getSelection().getRangeAt(x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('document.styleSheets.item(x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('document.createTextNode("a").splitText(x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('document.createTreeWalker(document, x, null, false)') is 'any type allowed'
PASS nonNumericPolicy('document.createEvent("UIEvent").initUIEvent("a", false, false, null, x)') is 'any type allowed'
PASS nonNumericPolicy('window.scrollBy(x, 0)') is 'any type allowed'
PASS nonNumericPolicy('window.scrollBy(0, x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('window.scrollTo(x, 0)') is 'any type allowed'
PASS nonNumericPolicy('window.scrollTo(0, x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('window.scroll(x, 0)') is 'any type allowed'
PASS nonNumericPolicy('window.scroll(0, x)') is 'any type allowed (but not omitted)'
PASS nonNumericPolicy('window.moveBy(x, 0)') is 'any type allowed'
PASS nonNumericPolicy('window.moveBy(0, x)') is 'any type allowed'
PASS nonNumericPolicy('window.moveTo(x, 0)') is 'any type allowed'
PASS nonNumericPolicy('window.moveTo(0, x)') is 'any type allowed'
PASS nonNumericPolicy('window.resizeBy(x, 0)') is 'any type allowed'
PASS nonNumericPolicy('window.resizeBy(0, x)') is 'any type allowed'
PASS nonNumericPolicy('window.resizeTo(x, 0)') is 'any type allowed'
PASS nonNumericPolicy('window.resizeTo(0, x)') is 'any type allowed'
PASS successfullyParsed is true

TEST COMPLETE

