Revamp compiler "following" specs

This commit is contained in:
Yorick Peterse committed 2015-08-28 15:53:57 +02:00
1 parent 824c897467
commit a1e7d2d07f
3 files changed
+54 -35

No files matched your search

@@ -13,7 +13,7 @@ describe Oga::XPath::Compiler do
</foo>
<baz></baz>
</root>
EOF
EOF
@bar1 = @document.children[0].children[0].children[0]
@baz1 = @document.children[0].children[0].children[1]
+39 -22
View File
@@ -1,11 +1,10 @@
require 'spec_helper'
describe Oga::XPath::Compiler do
describe 'following axis' do
before do
# Strip whitespace so it's easier to retrieve/compare elements.
@document = parse(<<-EOF.strip.gsub(/\s+/m, ''))
<root>
before do
# Strip whitespace so it's easier to retrieve/compare elements.
@document = parse(<<-EOF.strip.gsub(/^\s+|\n/m, ''))
<root foo="bar">
<foo>
<bar></bar>
<baz>
@@ -14,33 +13,51 @@ describe Oga::XPath::Compiler do
</foo>
<baz></baz>
</root>
EOF
EOF
@bar1 = @document.children[0].children[0].children[0]
@baz1 = @document.children[0].children[0].children[1]
@baz2 = @baz1.children[0]
@baz3 = @document.children[0].children[1]
end
@bar1 = @document.children[0].children[0].children[0]
@baz1 = @document.children[0].children[0].children[1]
@baz2 = @baz1.children[0]
@baz3 = @document.children[0].children[1]
end
describe 'relative to a document' do
# This should return an empty set since the document doesn't have any
# following nodes.
it 'returns an empty node set for the sibling of a document' do
evaluate_xpath(@document, 'following::foo').should == node_set
describe 'following::foo' do
it 'returns an empty NodeSet' do
evaluate_xpath(@document).should == node_set
end
end
it 'returns a node set containing the following nodes of root/foo' do
evaluate_xpath(@document, 'root/foo/following::baz')
.should == node_set(@baz3)
describe 'root/foo/following::baz' do
it 'returns a NodeSet' do
evaluate_xpath(@document).should == node_set(@baz3)
end
end
it 'returns a node set containing the following nodes of root/foo/bar' do
evaluate_xpath(@document, 'root/foo/bar/following::baz')
.should == node_set(@baz1, @baz2, @baz3)
describe 'root/foo/bar/following::baz' do
it 'returns a NodeSet' do
evaluate_xpath(@document).should == node_set(@baz1, @baz2, @baz3)
end
end
end
it 'returns a node set containing the siblings relative to root/foo/bar' do
evaluate_xpath(@bar1, 'following::baz')
.should == node_set(@baz1, @baz2, @baz3)
describe 'relative to an element' do
describe 'following::baz' do
it 'returns a NodeSet' do
evaluate_xpath(@bar1).should == node_set(@baz1, @baz2, @baz3)
end
end
end
describe 'relative to an attribute' do
describe 'following::foo' do
it 'returns an empty NodeSet' do
root = @document.children[0]
evaluate_xpath(root.attribute('foo')).should == node_set
end
end
end
end