Index: Source/web/WebNodeTest.cpp |
diff --git a/Source/web/WebNodeTest.cpp b/Source/web/WebNodeTest.cpp |
index 7b4d85ff2b1007b89170ec7237918eff5d459fcb..27830ec1fdf175f7b086a80c0bcb6b257a325828 100644 |
--- a/Source/web/WebNodeTest.cpp |
+++ b/Source/web/WebNodeTest.cpp |
@@ -16,7 +16,20 @@ namespace blink { |
class WebNodeTest : public testing::Test { |
protected: |
- Document& document() { return m_pageHolder->document(); } |
+ Document& document() |
+ { |
+ return m_pageHolder->document(); |
+ } |
+ |
+ void setInnerHTML(const String& html) |
+ { |
+ document().documentElement()->setInnerHTML(html, ASSERT_NO_EXCEPTION); |
+ } |
+ |
+ WebNode root() |
+ { |
+ return WebNode(document().documentElement()); |
+ } |
private: |
void SetUp() override; |
@@ -29,16 +42,75 @@ void WebNodeTest::SetUp() |
m_pageHolder = DummyPageHolder::create(IntSize(800, 600)); |
} |
+TEST_F(WebNodeTest, QuerySelectorMatches) |
+{ |
+ setInnerHTML("<div id=x><span class=a></span></div>"); |
+ WebExceptionCode ec; |
+ WebElement element = root().querySelector(".a", ec); |
+ EXPECT_EQ(0, ec); |
+ EXPECT_FALSE(element.isNull()); |
+ EXPECT_TRUE(element.hasHTMLTagName("span")); |
+} |
+ |
+TEST_F(WebNodeTest, QuerySelectorDoesNotMatch) |
+{ |
+ setInnerHTML("<div id=x><span class=a></span></div>"); |
+ WebExceptionCode ec; |
+ WebElement element = root().querySelector("section", ec); |
+ EXPECT_EQ(0, ec); |
+ EXPECT_TRUE(element.isNull()); |
+} |
+ |
+TEST_F(WebNodeTest, QuerySelectorError) |
+{ |
+ setInnerHTML("<div></div>"); |
+ WebExceptionCode ec; |
+ WebElement element = root().querySelector("@invalid-selector", ec); |
+ EXPECT_NE(0, ec); |
+ EXPECT_TRUE(element.isNull()); |
+} |
+ |
+TEST_F(WebNodeTest, QuerySelectorAllMatches) |
+{ |
+ setInnerHTML("<div id=x><span class=a></span></div>"); |
+ WebExceptionCode ec; |
+ WebVector<WebElement> results; |
+ root().querySelectorAll(".a, #x", ec, results); |
+ EXPECT_EQ(0, ec); |
+ EXPECT_EQ(2u, results.size()); |
+ EXPECT_TRUE(results[0].hasHTMLTagName("div")); |
+ EXPECT_TRUE(results[1].hasHTMLTagName("span")); |
+} |
+ |
+TEST_F(WebNodeTest, QuerySelectorAllDoesNotMatch) |
+{ |
+ setInnerHTML("<div id=x><span class=a></span></div>"); |
+ WebExceptionCode ec; |
+ WebVector<WebElement> results; |
+ root().querySelectorAll(".bar, #foo", ec, results); |
+ EXPECT_EQ(0, ec); |
+ EXPECT_TRUE(results.isEmpty()); |
+} |
+ |
+TEST_F(WebNodeTest, QuerySelectorAllError) |
+{ |
+ setInnerHTML("<div></div>"); |
+ WebExceptionCode ec; |
+ WebVector<WebElement> results; |
+ root().querySelectorAll("@invalid-selector", ec, results); |
+ EXPECT_NE(0, ec); |
+ EXPECT_TRUE(results.isEmpty()); |
+} |
+ |
TEST_F(WebNodeTest, GetElementsByHTMLTagName) |
{ |
- document().documentElement()->setInnerHTML("<body><LABEL></LABEL><svg xmlns='http://www.w3.org/2000/svg'><label></label></svg></body>", ASSERT_NO_EXCEPTION); |
- WebNode node(document().documentElement()); |
+ setInnerHTML("<body><LABEL></LABEL><svg xmlns='http://www.w3.org/2000/svg'><label></label></svg></body>"); |
// WebNode::getElementsByHTMLTagName returns only HTML elements. |
- WebElementCollection collection = node.getElementsByHTMLTagName("label"); |
+ WebElementCollection collection = root().getElementsByHTMLTagName("label"); |
EXPECT_EQ(1u, collection.length()); |
EXPECT_TRUE(collection.firstItem().hasHTMLTagName("label")); |
// The argument should be lower-case. |
- collection = node.getElementsByHTMLTagName("LABEL"); |
+ collection = root().getElementsByHTMLTagName("LABEL"); |
EXPECT_EQ(0u, collection.length()); |
} |