diff --git a/spec/oga/css/evaluator/axes_spec.rb b/spec/oga/css/evaluator/axes_spec.rb new file mode 100644 index 0000000..3990767 --- /dev/null +++ b/spec/oga/css/evaluator/axes_spec.rb @@ -0,0 +1,67 @@ +require 'spec_helper' + +describe 'CSS selector evaluation' do + context 'axes' do + context '> axis' do + before do + @document = parse('') + + @a1 = @document.children[0].children[0] + end + + example 'return a node set containing direct child nodes' do + evaluate_css(@document, 'root > a').should == node_set(@a1) + end + + example 'return a node set containing direct child nodes relative to a node' do + evaluate_css(@a1, '> a').should == @a1.children + end + + example 'return an empty node set for non matching child nodes' do + evaluate_css(@document, '> a').should == node_set + end + end + + context '+ axis' do + before do + @document = parse('') + + @b1 = @document.children[0].children[1] + @b2 = @document.children[0].children[2] + end + + example 'return a node set containing following siblings' do + evaluate_css(@document, 'root a + b').should == node_set(@b1) + end + + example 'return a node set containing following siblings relatie to a node' do + evaluate_css(@b1, '+ b').should == node_set(@b2) + end + + example 'return an empty node set for non matching following siblings' do + evaluate_css(@document, 'root a + c').should == node_set + end + end + + context '~ axis' do + before do + @document = parse('') + + @b1 = @document.children[0].children[1] + @b2 = @document.children[0].children[2] + end + + example 'return a node set containing following siblings' do + evaluate_css(@document, 'root a ~ b').should == node_set(@b1, @b2) + end + + example 'return a node set containing following siblings relative to a node' do + evaluate_css(@b1, '~ b').should == node_set(@b2) + end + + example 'return an empty node set for non matching following siblings' do + evaluate_css(@document, 'root a ~ c').should == node_set + end + end + end +end