spec/conformance_spec.rb in json_select-0.1.0 vs spec/conformance_spec.rb in json_select-0.1.1
- old
+ new
@@ -1,41 +1,55 @@
describe "JSONSelect", "conformance" do
-
+
%w( basic ).each do |test|
selectors = "../fixtures/#{test}_*.selector"
selectors = Dir[File.expand_path(selectors, __FILE__)]
-
+
describe "(#{test})" do
-
+
let(:input) do
path = File.expand_path("../fixtures/#{test}.json", __FILE__)
Yajl::Parser.parse(File.read(path))
end
-
+
selectors.each do |selector|
basename = File.basename(selector, '.selector')
name = basename[(test.size + 1)..-1]
output = File.expand_path("../fixtures/#{basename}.output", __FILE__)
ast = File.expand_path("../fixtures/#{basename}.ast", __FILE__)
-
+
describe "(#{name})" do
-
+
it "parses the selector" do
ast = Yajl::Parser.parse(File.read(ast))
s = JSONSelect(File.read(selector).strip)
- s.should be_a(JSONSelect::Selector)
- s.ast.should == ast
+ s.should be_a(JSONSelect)
+ Yajl::Parser.parse(Yajl::Encoder.encode(s.ast)).should == ast
end
-
+
it "produces the correct output" do
s = JSONSelect(File.read(selector).strip)
e = []
Yajl::Parser.parse(File.read(output)) { |o| e << o }
- s.evaluate(input).should == e
+ s.matches(input).should == e
end
-
+
+ it "finds the first matching child" do
+ s = JSONSelect(File.read(selector).strip)
+ e = []
+ Yajl::Parser.parse(File.read(output)) { |o| e << o }
+ s.match(input).should == e.first
+ end
+
+ it "can correctly test the object" do
+ s = JSONSelect(File.read(selector).strip)
+ e = []
+ Yajl::Parser.parse(File.read(output)) { |o| e << o }
+ s.test(input).should be_true
+ end
+
end
end
-
+
end
end
end
\ No newline at end of file