blob: e054834d98901de5f0a55217dfdf14abb26224f3 [file] [log] [blame]
/*
* Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
* for details. All rights reserved. Use of this source code is governed by a
* BSD-style license that can be found in the LICENSE file.
*/
/**
* @assertion
* @description
*/
import "dart:html";
import "../../testharness.dart" as hrns;
import "xpath-test-pre.dart";
const String htmlEL = r'''
<p id="sometext">
<STRONG>strong</STRONG><strong>strong</strong><FOO>FOO</FOO><foo>foo</foo>
</p>
''';
class MyXPathNSResolver implements XPathNSResolver {
String lookupNamespaceUri(String prefix) {
return "http://www.w3.org/1999/xhtml";
}
}
void main() {
document.body.appendHtml(htmlEL, treeSanitizer: new hrns.NullTreeSanitizer());
XPathEvaluator evaluator=new XPathEvaluator();
XPathNSResolver nsResolver = new MyXPathNSResolver();
var doc = (new DomParser()).parseFromString('''
<p id="sometext" xmlns="http://www.w3.org/1999/xhtml">
<STRONG>strong</STRONG>
<strong>strong</strong>
<FOO xmlns="">FOO</FOO>
<foo xmlns="">foo</foo>
</p>'''
, 'application/xhtml+xml');
void testHTML(query, expectedCount) {
var res = evaluator.evaluate(query
, document
, nsResolver
, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE
, null);
shouldBe(res.snapshotLength, expectedCount, "HTML $query");
}
void testXML(query, expectedCount) {
var res = evaluator.evaluate(query
, doc
, nsResolver
, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE
, null);
shouldBe(res.snapshotLength, expectedCount, "XML $query");
}
testHTML('//*[@id="sometext"]//strong', 2);
testHTML('//*[@id="sometext"]//Strong', 2);
testHTML('//*[@id="Sometext"]//strong', 0);
testHTML('//*[@id="sometext"]//foo', 2);
testHTML('//*[@id="sometext"]//FOO', 2);
testXML('//*[@id="sometext"]//foo', '1');
testXML('//*[@id="sometext"]//FOO', '1');
checkTestFailures();
}