| <body> |
| <p>Test Range.comparePoint and Range.isPointInRange Firefox extensions.</p> |
| <div id=log></div> |
| <script> |
| if (window.layoutTestController) |
| layoutTestController.dumpAsText(); |
| |
| var hadError = false; |
| function logError(message) |
| { |
| document.getElementById("log").innerHTML += message + "<br>"; |
| hadError = true; |
| } |
| |
| function shouldThrow(expr, exceptionName) |
| { |
| try { |
| eval(expr); |
| logError('<code>' + expr + '</code> didn\'t raise an exception'); |
| } catch (ex) { |
| if (ex.code != ex[exceptionName]) |
| logError('<code>' + expr +'</code> raised a wrong exception: ' + ex.code + ' vs. ' + ex[exceptionName] + ' (' + exceptionName + ')'); |
| } |
| } |
| |
| function shouldBe(expr, expected) |
| { |
| try { |
| var actual = eval(expr); |
| if (actual != expected) |
| logError('<code>' + expr + '</code>: actual ' + actual + ", expected " + expected); |
| } catch (ex) { |
| logError('<code>' + expr +'</code> raised an exception: ' + ex); |
| } |
| } |
| |
| var ra = document.createRange(); |
| ra.selectNode(document.getElementsByTagName("p")[0]); |
| |
| shouldThrow("ra.comparePoint(document.createElement('b'), 0)", "WRONG_DOCUMENT_ERR"); |
| shouldThrow("ra.comparePoint(null, 0)", "HIERARCHY_REQUEST_ERR"); |
| shouldBe("ra.comparePoint(document.body, 0)", -1); |
| shouldBe("ra.comparePoint(document.documentElement, 0)", -1); |
| shouldBe("ra.isPointInRange(document.createElement('b'), 0)", false); |
| shouldBe("ra.isPointInRange(document.documentElement, 0)", false); |
| shouldBe("ra.isPointInRange(document.body, 0)", false); |
| shouldThrow("ra.isPointInRange(null, 0)", "HIERARCHY_REQUEST_ERR"); |
| |
| ra.detach(); |
| |
| shouldThrow("ra.comparePoint(document.createElement('b'), 0)", "INVALID_STATE_ERR"); |
| shouldThrow("ra.comparePoint(document.body, 0)", "INVALID_STATE_ERR"); |
| shouldThrow("ra.comparePoint(null, 0)", "INVALID_STATE_ERR"); |
| shouldThrow("ra.isPointInRange(document.createElement('b'), 0)", "INVALID_STATE_ERR"); |
| shouldThrow("ra.isPointInRange(document.body, 0)", "INVALID_STATE_ERR"); |
| shouldThrow("ra.isPointInRange(null, 0)", "INVALID_STATE_ERR"); |
| |
| if (!hadError) |
| document.getElementById("log").innerHTML = "PASS"; |
| |
| </script> |