Skip to content

Commit e078a37

Browse files
committed
Fix Enumerable.enum_triple and enum_quad which were broken.
1 parent 1d792b4 commit e078a37

2 files changed

Lines changed: 44 additions & 6 deletions

File tree

lib/rdf/spec/enumerable.rb

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,11 @@ module RDF_Enumerable
117117
its(:enum_statement) {should be_queryable}
118118
context "#enum_statement" do
119119
it "should enumerate all statements" do
120-
expect(subject.enum_statement.to_a).to include(*@enumerable.each_statement.to_a)
120+
expect(subject.enum_statement.count).to eq @enumerable.each_statement.count
121+
subject.enum_statement.each do |s|
122+
expect(s).to be_a_statement
123+
expect(@enumerable.each_statement.to_a).to include(s) unless s.has_blank_nodes?
124+
end
121125
end
122126
end
123127
end
@@ -145,13 +149,23 @@ module RDF_Enumerable
145149
its(:each_triple) {should be_an_enumerator}
146150
context "#each_triple" do
147151
specify {subject.each_triple { |*triple| expect(triple).to be_a_triple }}
152+
it "should iterate over all triples" do
153+
subject.each_triple do |*triple|
154+
triple.each {|r| expect(r).to be_a_term}
155+
expect(@enumerable).to have_triple(triple) unless triple.any?(&:node?)
156+
end
157+
end
148158
end
149159

150160
its(:enum_triple) {should be_an_enumerator}
151161
its(:enum_triple) {should be_countable}
152162
context "#enum_triple" do
153163
it "should enumerate all triples" do
154-
expect(subject.enum_triple.to_a).to include(*@enumerable.each_triple.to_a)
164+
expect(subject.enum_triple.count).to eq @enumerable.each_triple.count
165+
subject.enum_triple.each do |s, p, o|
166+
[s, p, o].each {|r| expect(r).to be_a_term}
167+
expect(@enumerable).to have_triple([s, p, o]) unless [s, p, o].any?(&:node?)
168+
end
155169
end
156170
end
157171
end
@@ -181,13 +195,23 @@ module RDF_Enumerable
181195
its(:each_quad) {should be_an_enumerator}
182196
context "#each_quad" do
183197
specify {subject.each_quad {|*quad| expect(quad).to be_a_quad }}
198+
it "should iterate over all quads" do
199+
subject.each_quad do |*quad|
200+
quad.compact.each {|r| expect(r).to be_a_term}
201+
expect(@enumerable).to have_quad(quad) unless quad.compact.any?(&:node?)
202+
end
203+
end
184204
end
185205

186206
its(:enum_quad) {should be_an_enumerator}
187207
its(:enum_quad) {should be_countable}
188208
context "#enum_quad" do
189209
it "should enumerate all quads" do
190-
expect(subject.enum_quad.to_a).to include(*@enumerable.each_quad.to_a)
210+
expect(subject.enum_quad.count).to eq @enumerable.each_quad.count
211+
subject.enum_quad.each do |s, p, o, c|
212+
[s, p, o, c].compact.each {|r| expect(r).to be_a_term}
213+
expect(@enumerable).to have_quad([s, p, o, c]) unless [s, p, o].any?(&:node?)
214+
end
191215
end
192216
end
193217
end
@@ -225,16 +249,20 @@ module RDF_Enumerable
225249

226250
its(:each_subject) {should be_an_enumerator}
227251
context "#each_subject" do
228-
specify {expect(subject.each_subject.reject(&:node?).size).to eq subjects.size}
252+
specify {expect(subject.each_subject.reject(&:node?).size).to eq subjects.reject(&:node?).size}
229253
specify {subject.each_subject {|value| expect(value).to be_a_resource}}
230254
specify {subject.each_subject {|value| expect(subjects).to include(value) unless value.node?}}
231255
end
232256

233257
its(:enum_subject) {should be_an_enumerator}
234258
its(:enum_subject) {should be_countable}
235259
context "#enum_subject" do
260+
specify {expect(subject.enum_subject.to_a.reject(&:node?).size).to eq subjects.reject(&:node?).size}
236261
it "should enumerate all subjects" do
237-
expect(subject.enum_subject.reject(&:node?)).to include(*subjects)
262+
subject.enum_subject.each do |s|
263+
expect(s).to be_a_resource
264+
expect(subjects.to_a).to include(s) unless s.node?
265+
end
238266
end
239267
end
240268
end
@@ -328,7 +356,10 @@ module RDF_Enumerable
328356
its(:enum_object) {should be_countable}
329357
context "#enum_object" do
330358
it "should enumerate all objects" do
331-
expect(subject.enum_object.reject(&:node?)).to include(*objects)
359+
subject.enum_object.each do |o|
360+
expect(o).to be_a_term
361+
expect(objects.to_a).to include(o) unless o.node?
362+
end
332363
end
333364
end
334365
end

lib/rdf/spec/matchers.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,13 @@ module Matchers
7474
end
7575
end
7676

77+
RSpec::Matchers.define :be_a_term do
78+
match do |value|
79+
expect(value).to be_a_kind_of(RDF::Term)
80+
true
81+
end
82+
end
83+
7784
RSpec::Matchers.define :be_a_resource do
7885
match do |value|
7986
expect(value).to be_a_kind_of(RDF::Resource)

0 commit comments

Comments
 (0)