123 lines
4.0 KiB
HTML
123 lines
4.0 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
<script>
|
|
if (window.testRunner)
|
|
testRunner.dumpAsText();
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<tribe>
|
|
<realm>
|
|
<throne></throne>
|
|
<ancestor id="doe" name="young" class="classic">
|
|
<target id="anotherTarget"></target>
|
|
</ancestor>
|
|
</realm>
|
|
<ancestor id="john" name="old" class="classic">
|
|
<sibling></sibling>
|
|
<target id="theTarget" webkit="fast"></target>
|
|
</ancestor>
|
|
</tribe>
|
|
<foo>
|
|
<bar>
|
|
<a id="a">
|
|
<b id="b">
|
|
<c id="c">
|
|
<d id="d">
|
|
<e id="e">
|
|
<f id="f">
|
|
<g id="g">
|
|
<h id="h">
|
|
<i id="i">
|
|
<lemon id="sour"></lemon>
|
|
</i>
|
|
</h>
|
|
</g>
|
|
<f/>
|
|
<e/>
|
|
</d>
|
|
<c/>
|
|
</b>
|
|
</a>
|
|
</bar>
|
|
</foo>
|
|
</body>
|
|
<script>
|
|
description('This test makes sure the closest() API works correctly');
|
|
|
|
var theTarget = document.getElementById('theTarget');
|
|
var ancestor = document.getElementById('john');
|
|
var sour = document.getElementById('sour');
|
|
var a = document.getElementById('a');
|
|
var b = document.getElementById('b');
|
|
var c = document.getElementById('c');
|
|
var d = document.getElementById('d');
|
|
var e = document.getElementById('e');
|
|
var f = document.getElementById('f');
|
|
var g = document.getElementById('g');
|
|
var h = document.getElementById('h');
|
|
var i = document.getElementById('i');
|
|
|
|
shouldBe('theTarget.closest("#theTarget")', 'theTarget');
|
|
shouldBe('theTarget.closest("ancestor")', 'ancestor');
|
|
shouldBe('theTarget.closest("tribe ancestor")', 'ancestor');
|
|
shouldBe('theTarget.closest("tribe > ancestor")', 'ancestor');
|
|
shouldBe('theTarget.closest("realm + ancestor")', 'ancestor');
|
|
shouldBe('theTarget.closest("realm ~ ancestor")', 'ancestor');
|
|
shouldBe('theTarget.closest("tribe, ancestor")', 'ancestor');
|
|
shouldBe('theTarget.closest("ancestor, tribe")', 'ancestor');
|
|
|
|
shouldBeNull('theTarget.closest("tribe realm")');
|
|
shouldBeNull('theTarget.closest("tribe realm throne")');
|
|
shouldBeNull('theTarget.closest("tribe realm ancestor")');
|
|
shouldBeNull('theTarget.closest("realm > ancestor")');
|
|
shouldBeNull('theTarget.closest("throne + ancestor")');
|
|
shouldBeNull('theTarget.closest("throne ~ ancestor")');
|
|
|
|
shouldBe('theTarget.closest(".classic")', 'ancestor');
|
|
shouldBe('theTarget.closest("john")', 'ancestor');
|
|
shouldBeNull('theTarget.closest("doe")');
|
|
shouldBe('theTarget.closest("ancestor[name=old]")', 'ancestor');
|
|
shouldBeNull('theTarget.closest("ancestor[name=young]")', 'ancestor');
|
|
|
|
shouldBeNull('theTarget.closest(null)');
|
|
shouldBeNull('theTarget.closest(undefined)');
|
|
|
|
shouldBe('sour.closest("lemon")', 'sour');
|
|
shouldBe('sour.closest("a, b, c, d, e, f, g, h, i")', 'i');
|
|
shouldBe('sour.closest("a, b, c, d, e, f, g, h")', 'h');
|
|
shouldBe('sour.closest("a, b, c, d, e, f, g")', 'g');
|
|
shouldBe('sour.closest("a, b, c, d, e, f")', 'f');
|
|
shouldBe('sour.closest("a, b, c, d, e")', 'e');
|
|
shouldBe('sour.closest("a, b, c")', 'c');
|
|
shouldBe('sour.closest("a, b")', 'b');
|
|
shouldBe('sour.closest("a")', 'a');
|
|
shouldBe('sour.closest("i, h, g, f, e, d, c, b, a")', 'i');
|
|
shouldBe('sour.closest("h, g, f, e, d, c, b, a")', 'h');
|
|
shouldBe('sour.closest("g, f, e, d, c, b, a")', 'g');
|
|
shouldBe('sour.closest("f, e, d, c, b, a")', 'f');
|
|
shouldBe('sour.closest("e, d, c, b, a")', 'e');
|
|
shouldBe('sour.closest("d, c, b, a")', 'd');
|
|
shouldBe('sour.closest("c, b, a")', 'c');
|
|
shouldBe('sour.closest("b, a")', 'b');
|
|
shouldBe('sour.closest("a")', 'a');
|
|
|
|
shouldBe('document.closest', 'undefined');
|
|
shouldThrow('document.closest()');
|
|
shouldThrow('theTarget.closest()');
|
|
shouldThrow('theTarget.closest("")');
|
|
shouldThrow('theTarget.closest(".123")');
|
|
shouldThrow('theTarget.closest(" ")');
|
|
shouldThrow('theTarget.closest(")")');
|
|
shouldThrow('theTarget.closest("(")');
|
|
shouldThrow('theTarget.closest("()")');
|
|
shouldThrow('theTarget.closest("^_^")');
|
|
shouldThrow('theTarget.closest("{")');
|
|
shouldThrow('theTarget.closest("}")');
|
|
shouldThrow('theTarget.closest("{}")');
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</html>
|