blob: 3bea5b8d043362be4131f1b46d47755ea4dfc465 [file] [log] [blame]
<html>
<div id="tests">
<div id="id1">
<div class="class2"></div>
</div>
<tag-name-3 class="class7" id="tag1"></tag-name-3>
<tag-name-3 class="class7" id="tag2"></tag-name-3>
<span class="class2">
<span class="class5" id="id5" testAttr></span>
</span>
<div id="id5"></div>
<tag-name-6 class="class6" id="id6" testAttr="the value">
<tag-name-3 class="class7" id="tag2"></tag-name-3>
</tag-name-6>
</div>
<script>
import "../resources/third_party/unittest/unittest.dart";
import "../resources/unit.dart";
import "dart:sky";
query(selector) => document.querySelector(selector);
queryAll(selector) => document.querySelectorAll(selector);
main() {
initUnit();
test("should find elements by class name", () {
expect(query(".class2"), isNotNull);
expect(query(".class2").classList.toString(), equals("class2"));
expect(queryAll(".class2").length, 2);
expect(queryAll(".class2")[0].classList.toString(), equals("class2"));
expect(queryAll(".class2")[1].classList.toString(), equals("class2"));
expect(queryAll(".class2")[0], isNot(equals(queryAll(".class2")[1])));
});
test("should find elements by id", () {
expect(query("#id5"), isNotNull);
expect(query("#id5").getAttribute("id"), equals("id5"));
expect(query("#id5").classList.toString(), equals("class5"));
// FIXME(sky): Do we still want to allow multiple id stuff like this?
expect(queryAll("#id5").length, equals(2));
expect(queryAll("#id5")[0], equals(query("#id5")));
expect(queryAll("#id5")[1], isNot(equals(query("#id5"))));
expect(queryAll("#id5")[1].getAttribute("id"), equals("id5"));
});
test("should find elements by tag name", () {
expect(query("tag-name-6"), isNotNull);
expect(query("tag-name-6").tagName, equals("tag-name-6"));
expect(query("tag-name-6").classList.toString(), equals("class6"));
var context = query("#tests");
expect(context.querySelectorAll("span").length, equals(2));
});
test("should find an element by compound selector", () {
expect(query("tag-name-6.class6#id6"), isNotNull);
expect(query("tag-name-6.class6#id6").getAttribute("id"), equals("id6"));
expect(query("tag-name-6.class6#id6").classList.toString(), equals("class6"));
expect(query("tag-name-6.class6#id6").tagName, equals("tag-name-6"));
});
test("should find all elements by compound selector", () {
expect(queryAll("tag-name-3.class7"), isNotNull);
expect(queryAll("tag-name-3.class7").length, equals(3));
expect(queryAll("tag-name-3.class7")[0].getAttribute("id"), equals("tag1"));
expect(queryAll("tag-name-3.class7")[1].getAttribute("id"), equals("tag2"));
});
test("should find all elements by attribute presence selector", () {
expect(queryAll("[testAttr]"), isNotNull);
expect(queryAll("[testAttr]").length, equals(2));
expect(queryAll("[testAttr]")[0].getAttribute("id"), equals("id5"));
expect(queryAll("[testAttr]")[1].getAttribute("id"), equals("id6"));
});
test("should find all elements by attribute value selector", () {
expect(queryAll("[testAttr='the value']"), isNotNull);
expect(queryAll("[testAttr='the value']").length, equals(1));
expect(queryAll("[testAttr='the value']")[0].getAttribute("id"), equals("id6"));
});
}
</script>
</html>