rdf-spec 1.0.0 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/lib/rdf/spec/enumerable.rb +292 -316
- data/lib/rdf/spec/mutable.rb +52 -62
- metadata +35 -35
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.5
|
data/lib/rdf/spec/enumerable.rb
CHANGED
@@ -22,453 +22,429 @@ module RDF_Enumerable
|
|
22
22
|
end
|
23
23
|
|
24
24
|
describe RDF::Enumerable do
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
subject {@enumerable}
|
26
|
+
it {should respond_to(:supports?)}
|
27
|
+
it {should respond_to(:count)}
|
28
|
+
it {should respond_to(:size)}
|
29
|
+
|
30
|
+
it {should respond_to(:statements)}
|
31
|
+
it {should respond_to(:has_statement?)}
|
32
|
+
it {should respond_to(:each_statement)}
|
33
|
+
it {should respond_to(:enum_statement)}
|
34
|
+
|
35
|
+
it {should respond_to(:triples)}
|
36
|
+
it {should respond_to(:has_triple?)}
|
37
|
+
it {should respond_to(:each_triple)}
|
38
|
+
it {should respond_to(:enum_triple)}
|
39
|
+
|
40
|
+
it {should respond_to(:quads)}
|
41
|
+
it {should respond_to(:has_quad?)}
|
42
|
+
it {should respond_to(:each_quad)}
|
43
|
+
it {should respond_to(:enum_quad)}
|
44
|
+
|
45
|
+
it {should respond_to(:subjects)}
|
46
|
+
it {should respond_to(:has_subject?)}
|
47
|
+
it {should respond_to(:each_subject)}
|
48
|
+
it {should respond_to(:enum_subject)}
|
49
|
+
|
50
|
+
it {should respond_to(:predicates)}
|
51
|
+
it {should respond_to(:has_predicate?)}
|
52
|
+
it {should respond_to(:each_predicate)}
|
53
|
+
it {should respond_to(:enum_predicate)}
|
54
|
+
|
55
|
+
it {should respond_to(:objects)}
|
56
|
+
it {should respond_to(:has_object?)}
|
57
|
+
it {should respond_to(:each_object)}
|
58
|
+
it {should respond_to(:enum_object)}
|
59
|
+
|
60
|
+
it {should respond_to(:contexts)}
|
61
|
+
it {should respond_to(:has_context?)}
|
62
|
+
it {should respond_to(:each_context)}
|
63
|
+
it {should respond_to(:enum_context)}
|
64
|
+
|
65
|
+
it {should respond_to(:each_graph)}
|
66
|
+
it {should respond_to(:enum_graph)}
|
67
|
+
|
68
|
+
it {should respond_to(:to_hash)}
|
69
|
+
it {should respond_to(:dump)}
|
70
|
+
|
71
|
+
it {should be_valid}
|
72
|
+
it {should_not be_empty}
|
73
|
+
its(:size) {should == @statements.size}
|
74
|
+
its(:count) {should == @statements.size}
|
75
|
+
|
76
|
+
it "returns is_invalid if any statement is invalid" do
|
77
|
+
if subject.respond_to?(:<<)
|
78
|
+
s = RDF::Statement.from([nil, nil, nil])
|
79
|
+
s.should_not be_valid
|
80
|
+
subject << s
|
81
|
+
subject.should_not be_valid
|
28
82
|
end
|
29
83
|
end
|
30
84
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
it "returns false if any statement is invalid" do
|
37
|
-
if @enumerable.respond_to?(:<<)
|
38
|
-
s = RDF::Statement.from([nil, nil, nil])
|
39
|
-
s.should_not be_valid
|
40
|
-
@enumerable << s
|
41
|
-
@enumerable.should_not be_valid
|
42
|
-
else
|
43
|
-
pending("can't add statement to immutable enumerable")
|
44
|
-
end
|
45
|
-
end
|
85
|
+
context "when extending an empty array" do
|
86
|
+
subject {[].extend(RDF::Enumerable)}
|
87
|
+
it {should be_empty}
|
88
|
+
its(:size) {should == 0}
|
89
|
+
its(:count) {should == 0}
|
46
90
|
end
|
47
91
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
@enumerable.should respond_to(*%w(count size))
|
55
|
-
end
|
56
|
-
|
57
|
-
it "should implement #empty?" do
|
58
|
-
([].extend(RDF::Enumerable)).empty?.should be_true
|
59
|
-
@enumerable.empty?.should be_false
|
92
|
+
describe "#statements" do
|
93
|
+
subject {@enumerable.statements}
|
94
|
+
it {should be_an_enumerator}
|
95
|
+
its(:size) {should == @statements.size}
|
96
|
+
it "should iterrate statements" do
|
97
|
+
subject.statements.each { |statement| statement.should be_a_statement }
|
60
98
|
end
|
61
|
-
|
62
|
-
it "should implement #count and #size" do
|
63
|
-
%w(count size).each do |method|
|
64
|
-
@enumerable.send(method).should == @statements.size
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
context "when enumerating statements" do
|
70
|
-
it "should respond to #statements" do
|
71
|
-
@enumerable.should respond_to(:statements)
|
72
|
-
end
|
73
|
-
|
74
|
-
it "should respond to #has_statement?" do
|
75
|
-
@enumerable.should respond_to(:has_statement?)
|
76
|
-
end
|
77
|
-
|
78
|
-
it "should respond to #each_statement" do
|
79
|
-
@enumerable.should respond_to(:each_statement)
|
80
|
-
end
|
81
|
-
|
82
|
-
it "should respond to #enum_statement" do
|
83
|
-
@enumerable.should respond_to(:enum_statement)
|
84
|
-
end
|
85
|
-
|
86
|
-
it "should implement #statements" do
|
87
|
-
@enumerable.statements.should be_an_enumerator
|
88
|
-
@enumerable.statements.to_a.size.should == @statements.size
|
89
|
-
@enumerable.statements.each { |statement| statement.should be_a_statement }
|
90
|
-
end
|
91
|
-
|
92
|
-
it "should implement #has_statement?" do
|
99
|
+
it "should have all statements" do
|
93
100
|
@statements.each do |statement|
|
94
|
-
|
101
|
+
subject.should have_statement(statement)
|
95
102
|
end
|
103
|
+
end
|
96
104
|
|
105
|
+
it "should not have statements in a different context" do
|
97
106
|
if @supports_context
|
98
107
|
context = RDF::URI.new("urn:context:1")
|
99
108
|
@statements.each do |statement|
|
100
109
|
s = statement.dup
|
101
110
|
s.context = context
|
102
|
-
|
111
|
+
subject.should_not have_statement(s)
|
103
112
|
end
|
104
113
|
end
|
105
|
-
|
106
|
-
unknown_statement = RDF::Statement.new(RDF::Node.new, RDF::URI.new("http://example.org/unknown"), RDF::Node.new)
|
107
|
-
@enumerable.has_statement?(unknown_statement).should be_false
|
108
114
|
end
|
109
115
|
|
110
|
-
it "should
|
111
|
-
|
112
|
-
|
113
|
-
end
|
114
|
-
|
115
|
-
it "should implement #enum_statement" do
|
116
|
-
@enumerable.enum_statement.should be_an_enumerator
|
117
|
-
@enumerable.enum_statement.should be_countable
|
118
|
-
@enumerable.enum_statement.should be_enumerable
|
119
|
-
@enumerable.enum_statement.should be_queryable
|
120
|
-
@enumerable.enum_statement.to_a.should == @enumerable.each_statement.to_a
|
116
|
+
it "should not have an unknown statement" do
|
117
|
+
unknown_statement = RDF::Statement.new(RDF::Node.new, RDF::URI.new("http://example.org/unknown"), RDF::Node.new)
|
118
|
+
subject.has_statement?(unknown_statement).should be_false
|
121
119
|
end
|
122
120
|
end
|
123
121
|
|
124
|
-
|
125
|
-
it "
|
126
|
-
@enumerable.should respond_to(:triples)
|
127
|
-
end
|
128
|
-
|
129
|
-
it "should respond to #has_triple?" do
|
130
|
-
@enumerable.should respond_to(:has_triple?)
|
131
|
-
end
|
132
|
-
|
133
|
-
it "should respond to #each_triple" do
|
134
|
-
@enumerable.should respond_to(:each_triple)
|
135
|
-
end
|
136
|
-
|
137
|
-
it "should respond to #enum_triple" do
|
138
|
-
@enumerable.should respond_to(:enum_triple)
|
139
|
-
end
|
140
|
-
|
141
|
-
it "should implement #triples" do
|
142
|
-
@enumerable.triples.should be_an_enumerator
|
143
|
-
@enumerable.triples.to_a.size.should == @statements.size
|
144
|
-
@enumerable.triples.each { |triple| triple.should be_a_triple }
|
145
|
-
end
|
146
|
-
|
147
|
-
it "should implement #has_triple?" do
|
122
|
+
describe "#has_statement?" do
|
123
|
+
it "has all statements" do
|
148
124
|
@statements.each do |statement|
|
149
|
-
|
125
|
+
subject.should have_statement(statement)
|
150
126
|
end
|
151
127
|
end
|
152
|
-
|
153
|
-
it "should implement #each_triple" do
|
154
|
-
@enumerable.each_triple.should be_an_enumerator
|
155
|
-
@enumerable.each_triple { |*triple| triple.should be_a_triple }
|
156
|
-
end
|
157
|
-
|
158
|
-
it "should implement #enum_triple" do
|
159
|
-
@enumerable.enum_triple.should be_an_enumerator
|
160
|
-
@enumerable.enum_triple.should be_countable
|
161
|
-
@enumerable.enum_triple.to_a.should == @enumerable.each_triple.to_a
|
162
|
-
end
|
163
128
|
end
|
164
129
|
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
it "should respond to #has_quad?" do
|
171
|
-
@enumerable.should respond_to(:has_quad?)
|
130
|
+
describe "#each_statement" do
|
131
|
+
subject {@enumerable.each_statement}
|
132
|
+
it {should be_an_enumerator}
|
133
|
+
it "should all be statements" do
|
134
|
+
subject { |statement| statement.should be_a_statement }
|
172
135
|
end
|
136
|
+
end
|
173
137
|
|
174
|
-
|
175
|
-
|
138
|
+
describe "#enum_statement" do
|
139
|
+
subject {@enumerable.enum_statement}
|
140
|
+
it {should be_an_enumerator}
|
141
|
+
it {should be_countable}
|
142
|
+
it {should be_enumerable}
|
143
|
+
it {should be_queryable}
|
144
|
+
it "should all be statements" do
|
145
|
+
subject { |statement| statement.should be_a_statement }
|
176
146
|
end
|
177
|
-
|
178
|
-
|
179
|
-
@enumerable.should respond_to(:enum_quad)
|
147
|
+
it "should have all statements" do
|
148
|
+
subject.to_a.should =~ @statements.to_a
|
180
149
|
end
|
150
|
+
end
|
181
151
|
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
152
|
+
describe "#triples" do
|
153
|
+
subject {@enumerable.triples}
|
154
|
+
it {should be_an_enumerator}
|
155
|
+
it {subject.to_a.size.should == @statements.size}
|
156
|
+
it "should all be triples" do
|
157
|
+
subject.each {|triple| triple.should be_a_triple}
|
186
158
|
end
|
159
|
+
end
|
187
160
|
|
188
|
-
|
161
|
+
describe "#has_triple?" do
|
162
|
+
it "has all triples" do
|
189
163
|
@statements.each do |statement|
|
190
|
-
|
164
|
+
subject.should have_triple(statement.to_triple)
|
191
165
|
end
|
192
166
|
end
|
167
|
+
end
|
193
168
|
|
194
|
-
|
195
|
-
|
196
|
-
|
169
|
+
describe "#each_triple" do
|
170
|
+
subject {@enumerable.each_triple}
|
171
|
+
it {should be_an_enumerator}
|
172
|
+
it "has all triples" do
|
173
|
+
subject do |*triple|
|
174
|
+
triple.should be_a_triple
|
175
|
+
end
|
197
176
|
end
|
177
|
+
end
|
198
178
|
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
179
|
+
describe "#enum_triple" do
|
180
|
+
subject {@enumerable.enum_triple}
|
181
|
+
it {should be_an_enumerator}
|
182
|
+
it {should be_countable}
|
183
|
+
it "should have all triples" do
|
184
|
+
subject.to_a.should =~ @enumerable.each_triple.to_a
|
203
185
|
end
|
204
186
|
end
|
205
187
|
|
206
|
-
|
207
|
-
|
208
|
-
|
188
|
+
describe "#quads" do
|
189
|
+
subject {@enumerable.quads}
|
190
|
+
it {should be_an_enumerator}
|
191
|
+
it {subject.to_a.size.should == @statements.size}
|
192
|
+
it "should all be quads" do
|
193
|
+
subject.each {|quad| quad.should be_a_quad}
|
209
194
|
end
|
195
|
+
end
|
210
196
|
|
211
|
-
|
212
|
-
|
197
|
+
describe "#has_quad?" do
|
198
|
+
it "has all quads" do
|
199
|
+
@statements.each do |statement|
|
200
|
+
subject.should have_quad(statement.to_quad)
|
201
|
+
end
|
213
202
|
end
|
203
|
+
end
|
214
204
|
|
215
|
-
|
216
|
-
|
205
|
+
describe "#each_quad" do
|
206
|
+
subject {@enumerable.each_quad}
|
207
|
+
it {should be_an_enumerator}
|
208
|
+
it "has all quads" do
|
209
|
+
subject do |*quad|
|
210
|
+
quad.should be_a_quad
|
211
|
+
end
|
217
212
|
end
|
213
|
+
end
|
218
214
|
|
219
|
-
|
220
|
-
|
215
|
+
describe "#enum_quad" do
|
216
|
+
subject {@enumerable.enum_quad}
|
217
|
+
it {should be_an_enumerator}
|
218
|
+
it {should be_countable}
|
219
|
+
it "should have all triples" do
|
220
|
+
subject.to_a.should =~ @enumerable.each_quad.to_a
|
221
221
|
end
|
222
|
+
end
|
222
223
|
|
223
|
-
|
224
|
-
|
224
|
+
describe "#subjects" do
|
225
|
+
subject {@enumerable.subjects}
|
226
|
+
specify {subject.should be_an_enumerator}
|
227
|
+
specify {subject.each { |value| value.should be_a_resource }}
|
228
|
+
context ":unique => false" do
|
229
|
+
subject {@enumerable.subjects(:unique => false)}
|
225
230
|
specify {subject.should be_an_enumerator}
|
226
231
|
specify {subject.each { |value| value.should be_a_resource }}
|
227
|
-
context ":unique => false" do
|
228
|
-
subject {@enumerable.subjects(:unique => false)}
|
229
|
-
specify {subject.should be_an_enumerator}
|
230
|
-
specify {subject.each { |value| value.should be_a_resource }}
|
231
|
-
end
|
232
232
|
end
|
233
|
+
end
|
233
234
|
|
234
|
-
|
235
|
+
describe "#has_subject?" do
|
236
|
+
it "has all subjects" do
|
235
237
|
checked = []
|
236
238
|
@statements.each do |statement|
|
237
|
-
|
239
|
+
subject.should have_subject(statement.subject) unless checked.include?(statement.subject)
|
238
240
|
checked << statement.subject
|
239
241
|
end
|
240
242
|
uri = RDF::URI.new('http://example.org/does/not/have/this/uri')
|
241
|
-
|
243
|
+
subject.should_not have_subject(uri)
|
242
244
|
end
|
245
|
+
end
|
243
246
|
|
244
|
-
|
245
|
-
|
247
|
+
describe "#each_subject" do
|
248
|
+
subject {@enumerable.each_subject}
|
249
|
+
it {should be_an_enumerator}
|
250
|
+
it "has all subjects" do
|
246
251
|
subjects = @statements.map { |s| s.subject }.uniq
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
subjects.should include(
|
252
|
+
subject.to_a.size.should == subjects.size
|
253
|
+
subject do |term|
|
254
|
+
term.should be_a_term
|
255
|
+
subjects.should include(term)
|
251
256
|
end
|
252
257
|
end
|
253
|
-
|
254
|
-
it "should implement #enum_subject" do
|
255
|
-
@enumerable.enum_subject.should be_an_enumerator
|
256
|
-
@enumerable.enum_subject.should be_countable
|
257
|
-
@enumerable.enum_subject.to_a.should == @enumerable.each_subject.to_a
|
258
|
-
end
|
259
258
|
end
|
260
259
|
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
@enumerable.should respond_to(:has_predicate?)
|
268
|
-
end
|
269
|
-
|
270
|
-
it "should respond to #each_predicate" do
|
271
|
-
@enumerable.should respond_to(:each_predicate)
|
272
|
-
end
|
273
|
-
|
274
|
-
it "should respond to #enum_predicate" do
|
275
|
-
@enumerable.should respond_to(:enum_predicate)
|
260
|
+
describe "#enum_subject" do
|
261
|
+
subject {@enumerable.enum_subject}
|
262
|
+
it {should be_an_enumerator}
|
263
|
+
it {should be_countable}
|
264
|
+
it "should have all subjects" do
|
265
|
+
subject.to_a.should =~ @enumerable.each_subject.to_a
|
276
266
|
end
|
267
|
+
end
|
277
268
|
|
278
|
-
|
279
|
-
|
269
|
+
describe "#predicates" do
|
270
|
+
subject {@enumerable.predicates}
|
271
|
+
specify {subject.should be_an_enumerator}
|
272
|
+
specify {subject.each { |value| value.should be_a_resource }}
|
273
|
+
context ":unique => false" do
|
274
|
+
subject {@enumerable.predicates(:unique => false)}
|
280
275
|
specify {subject.should be_an_enumerator}
|
281
|
-
specify {subject.each { |value| value.should
|
282
|
-
context ":unique => false" do
|
283
|
-
subject {@enumerable.predicates(:unique => false)}
|
284
|
-
specify {subject.should be_an_enumerator}
|
285
|
-
specify {subject.each { |value| value.should be_a_resource }}
|
286
|
-
end
|
276
|
+
specify {subject.each { |value| value.should be_a_resource }}
|
287
277
|
end
|
278
|
+
end
|
288
279
|
|
289
|
-
|
280
|
+
describe "#has_predicate?" do
|
281
|
+
it "has all predicates" do
|
290
282
|
checked = []
|
291
283
|
@statements.each do |statement|
|
292
|
-
|
284
|
+
subject.should have_predicate(statement.predicate) unless checked.include?(statement.predicate)
|
293
285
|
checked << statement.predicate
|
294
286
|
end
|
295
287
|
uri = RDF::URI.new('http://example.org/does/not/have/this/uri')
|
296
|
-
|
288
|
+
subject.should_not have_predicate(uri)
|
297
289
|
end
|
290
|
+
end
|
298
291
|
|
299
|
-
|
292
|
+
describe "#each_predicate" do
|
293
|
+
subject {@enumerable.each_predicate}
|
294
|
+
it {should be_an_enumerator}
|
295
|
+
it "has all predicates" do
|
300
296
|
predicates = @statements.map { |s| s.predicate }.uniq
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
predicates.should include(value)
|
297
|
+
subject.to_a.size.should == predicates.size
|
298
|
+
subject do |term|
|
299
|
+
term.should be_a_term
|
300
|
+
predicates.should include(term)
|
306
301
|
end
|
307
302
|
end
|
308
|
-
|
309
|
-
it "should implement #enum_predicate" do
|
310
|
-
@enumerable.enum_predicate.should be_an_enumerator
|
311
|
-
@enumerable.enum_predicate.should be_countable
|
312
|
-
@enumerable.enum_predicate.to_a.should == @enumerable.each_predicate.to_a
|
313
|
-
end
|
314
303
|
end
|
315
304
|
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
@enumerable.should respond_to(:has_object?)
|
323
|
-
end
|
324
|
-
|
325
|
-
it "should respond to #each_object" do
|
326
|
-
@enumerable.should respond_to(:each_object)
|
327
|
-
end
|
328
|
-
|
329
|
-
it "should respond to #enum_object" do
|
330
|
-
@enumerable.should respond_to(:enum_object)
|
305
|
+
describe "#enum_predicate" do
|
306
|
+
subject {@enumerable.enum_predicate}
|
307
|
+
it {should be_an_enumerator}
|
308
|
+
it {should be_countable}
|
309
|
+
it "should have all predicates" do
|
310
|
+
subject.to_a.should =~ @enumerable.each_predicate.to_a
|
331
311
|
end
|
312
|
+
end
|
332
313
|
|
333
|
-
|
334
|
-
|
314
|
+
describe "#objects" do
|
315
|
+
subject {@enumerable.objects}
|
316
|
+
specify {subject.should be_an_enumerator}
|
317
|
+
specify {subject.each { |value| value.should be_a_term }}
|
318
|
+
context ":unique => false" do
|
319
|
+
subject {@enumerable.objects(:unique => false)}
|
335
320
|
specify {subject.should be_an_enumerator}
|
336
|
-
specify {subject.each { |value| value.should
|
337
|
-
context ":unique => false" do
|
338
|
-
subject {@enumerable.objects(:unique => false)}
|
339
|
-
specify {subject.should be_an_enumerator}
|
340
|
-
specify {subject.each { |value| value.should be_a_value }}
|
341
|
-
end
|
321
|
+
specify {subject.each { |value| value.should be_a_term }}
|
342
322
|
end
|
323
|
+
end
|
343
324
|
|
344
|
-
|
325
|
+
describe "#has_object?" do
|
326
|
+
it "has all objects" do
|
345
327
|
checked = []
|
346
328
|
@statements.each do |statement|
|
347
|
-
|
329
|
+
subject.should have_object(statement.object) unless checked.include?(statement.object)
|
348
330
|
checked << statement.object
|
349
331
|
end
|
350
332
|
uri = RDF::URI.new('http://example.org/does/not/have/this/uri')
|
351
|
-
|
333
|
+
subject.should_not have_object(uri)
|
352
334
|
end
|
335
|
+
end
|
353
336
|
|
354
|
-
|
337
|
+
describe "#each_object" do
|
338
|
+
subject {@enumerable.each_object}
|
339
|
+
it {should be_an_enumerator}
|
340
|
+
it "has all objects" do
|
355
341
|
objects = @statements.map { |s| s.object }.uniq
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
objects.should include(value)
|
342
|
+
subject.to_a.size.should == objects.size
|
343
|
+
subject do |term|
|
344
|
+
term.should be_a_term
|
345
|
+
objects.should include(term)
|
361
346
|
end
|
362
347
|
end
|
363
|
-
|
364
|
-
it "should implement #enum_object" do
|
365
|
-
@enumerable.enum_object.should be_an_enumerator
|
366
|
-
@enumerable.enum_object.should be_countable
|
367
|
-
@enumerable.enum_object.to_a.should == @enumerable.each_object.to_a
|
368
|
-
end
|
369
348
|
end
|
370
349
|
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
@enumerable.should respond_to(:has_context?)
|
378
|
-
end
|
379
|
-
|
380
|
-
it "should respond to #each_context" do
|
381
|
-
@enumerable.should respond_to(:each_context)
|
382
|
-
end
|
383
|
-
|
384
|
-
it "should respond to #enum_context" do
|
385
|
-
@enumerable.should respond_to(:enum_context)
|
350
|
+
describe "#enum_object" do
|
351
|
+
subject {@enumerable.enum_object}
|
352
|
+
it {should be_an_enumerator}
|
353
|
+
it {should be_countable}
|
354
|
+
it "should have all objects" do
|
355
|
+
subject.to_a.should =~ @enumerable.each_object.to_a
|
386
356
|
end
|
357
|
+
end
|
387
358
|
|
388
|
-
|
389
|
-
|
359
|
+
describe "#contexts" do
|
360
|
+
subject {@enumerable.contexts}
|
361
|
+
specify {subject.should be_an_enumerator}
|
362
|
+
specify {subject.each { |value| value.should be_a_resource }}
|
363
|
+
context ":unique => false" do
|
364
|
+
subject {@enumerable.contexts(:unique => false)}
|
390
365
|
specify {subject.should be_an_enumerator}
|
391
366
|
specify {subject.each { |value| value.should be_a_resource }}
|
392
|
-
context ":unique => false" do
|
393
|
-
subject {@enumerable.contexts(:unique => false)}
|
394
|
-
specify {subject.should be_an_enumerator}
|
395
|
-
specify {subject.each { |value| value.should be_a_resource }}
|
396
|
-
end
|
397
367
|
end
|
368
|
+
end
|
398
369
|
|
399
|
-
|
370
|
+
describe "#has_context?" do
|
371
|
+
it "has all contexts" do
|
372
|
+
checked = []
|
400
373
|
@statements.each do |statement|
|
401
|
-
if statement.has_context?
|
402
|
-
@enumerable.has_context?(statement.context).should be_true
|
403
|
-
end
|
374
|
+
subject.should have_context(statement.context) if statement.has_context?
|
404
375
|
end
|
405
376
|
uri = RDF::URI.new('http://example.org/does/not/have/this/uri')
|
406
|
-
|
377
|
+
subject.should_not have_context(uri)
|
407
378
|
end
|
379
|
+
end
|
408
380
|
|
409
|
-
|
381
|
+
describe "#each_context" do
|
382
|
+
subject {@enumerable.each_context}
|
383
|
+
it {should be_an_enumerator}
|
384
|
+
it "has all contexts" do
|
410
385
|
contexts = @statements.map { |s| s.context }.uniq
|
411
386
|
contexts.delete nil
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
contexts.should include(value)
|
387
|
+
subject.to_a.size.should == contexts.size
|
388
|
+
subject do |term|
|
389
|
+
term.should be_a_resource
|
390
|
+
contexts.should include(term)
|
417
391
|
end
|
418
392
|
end
|
419
|
-
|
420
|
-
it "should implement #enum_context" do
|
421
|
-
@enumerable.enum_context.should be_an_enumerator
|
422
|
-
@enumerable.enum_context.should be_countable
|
423
|
-
@enumerable.enum_context.to_a.should == @enumerable.each_context.to_a
|
424
|
-
end
|
425
393
|
end
|
426
394
|
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
@enumerable.should respond_to(:enum_graph)
|
434
|
-
end
|
435
|
-
|
436
|
-
describe "#each_graph" do
|
437
|
-
subject {@enumerable.each_graph}
|
438
|
-
specify {subject.should be_an_enumerator}
|
439
|
-
specify {subject.each { |value| value.should be_a_graph }}
|
395
|
+
describe "#enum_context" do
|
396
|
+
subject {@enumerable.enum_context}
|
397
|
+
it {should be_an_enumerator}
|
398
|
+
it {should be_countable}
|
399
|
+
it "should have all contexts" do
|
400
|
+
subject.to_a.should =~ @enumerable.each_context.to_a
|
440
401
|
end
|
402
|
+
end
|
441
403
|
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
404
|
+
describe "#each_graph" do
|
405
|
+
subject {@enumerable.each_graph}
|
406
|
+
it {should be_an_enumerator}
|
407
|
+
it "has all graphs" do
|
408
|
+
subject {|value| value.should be_a_graph}
|
446
409
|
end
|
447
410
|
end
|
448
411
|
|
449
|
-
|
450
|
-
|
451
|
-
|
412
|
+
describe "#enum_graph" do
|
413
|
+
subject {@enumerable.enum_graph}
|
414
|
+
it {should be_an_enumerator}
|
415
|
+
it {should be_countable}
|
416
|
+
it "should have all graphs" do
|
417
|
+
subject.to_a.should =~ @enumerable.each_graph.to_a
|
452
418
|
end
|
419
|
+
end
|
453
420
|
|
454
|
-
|
455
|
-
|
456
|
-
|
421
|
+
describe "#to_hash" do
|
422
|
+
subject {@enumerable.to_hash}
|
423
|
+
it {should be_a(Hash)}
|
424
|
+
it "should have keys for each subject" do
|
425
|
+
subject.keys.size.should == @enumerable.subjects.to_a.size
|
457
426
|
end
|
458
427
|
end
|
459
428
|
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
it "should implement #dump" do
|
466
|
-
@enumerable.dump(:ntriples).should == RDF::NTriples::Writer.buffer() {|w| w << @enumerable}
|
429
|
+
describe "#dump" do
|
430
|
+
subject {@enumerable.dump(:ntriples)}
|
431
|
+
it "has N-Triples representation" do
|
432
|
+
subject.should == RDF::NTriples::Writer.buffer() {|w| w << @enumerable}
|
467
433
|
end
|
468
|
-
|
434
|
+
|
469
435
|
it "raises error on unknown format" do
|
470
436
|
lambda {@enumerable.dump(:foobar)}.should raise_error(RDF::WriterError, /No writer found/)
|
471
437
|
end
|
472
438
|
end
|
439
|
+
|
440
|
+
context "#to_{writer}" do
|
441
|
+
it "should write to a writer" do
|
442
|
+
writer = mock("writer")
|
443
|
+
writer.should_receive(:buffer)
|
444
|
+
RDF::Writer.should_receive(:for).with(:a_writer).and_return(writer)
|
445
|
+
subject.send(:to_a_writer)
|
446
|
+
end
|
447
|
+
end
|
448
|
+
|
473
449
|
end
|
474
450
|
end
|
data/lib/rdf/spec/mutable.rb
CHANGED
@@ -17,6 +17,8 @@ module RDF_Mutable
|
|
17
17
|
end
|
18
18
|
|
19
19
|
describe RDF::Mutable do
|
20
|
+
subject {@mutable}
|
21
|
+
|
20
22
|
context "readability" do
|
21
23
|
require 'rdf/spec/readable'
|
22
24
|
|
@@ -37,119 +39,107 @@ module RDF_Mutable
|
|
37
39
|
include RDF_Writable
|
38
40
|
end
|
39
41
|
|
40
|
-
it
|
41
|
-
|
42
|
-
|
43
|
-
|
42
|
+
it {should be_empty}
|
43
|
+
it {should be_readable}
|
44
|
+
it {should be_writable}
|
45
|
+
it {should be_mutable}
|
46
|
+
it {should_not be_immutable}
|
47
|
+
it {should respond_to(:load)}
|
48
|
+
it {should respond_to(:clear)}
|
49
|
+
it {should respond_to(:delete)}
|
44
50
|
|
45
|
-
|
46
|
-
@mutable.readable?.should be_true
|
47
|
-
end
|
48
|
-
|
49
|
-
it "should be writable" do
|
50
|
-
@mutable.writable?.should be_true
|
51
|
-
end
|
52
|
-
|
53
|
-
it "should be mutable" do
|
54
|
-
@mutable.immutable?.should be_false
|
55
|
-
@mutable.mutable?.should be_true
|
56
|
-
end
|
57
|
-
|
58
|
-
it "should support #load" do
|
59
|
-
@mutable.respond_to?(:load).should be_true
|
60
|
-
end
|
51
|
+
its(:count) {should be_zero}
|
61
52
|
|
62
53
|
context "#load" do
|
63
54
|
it "should require an argument" do
|
64
|
-
lambda {
|
55
|
+
lambda { subject.load }.should raise_error(ArgumentError)
|
65
56
|
end
|
66
57
|
|
67
58
|
it "should accept a string filename argument" do
|
68
|
-
lambda {
|
59
|
+
lambda { subject.load(@filename) }.should_not raise_error(ArgumentError)
|
69
60
|
end
|
70
61
|
|
71
62
|
it "should accept an optional hash argument" do
|
72
|
-
lambda {
|
63
|
+
lambda { subject.load(@filename, {}) }.should_not raise_error(ArgumentError)
|
73
64
|
end
|
74
65
|
|
75
66
|
it "should load statements" do
|
76
|
-
|
77
|
-
|
78
|
-
|
67
|
+
subject.load @filename
|
68
|
+
subject.size.should == File.readlines(@filename).size
|
69
|
+
subject.should have_subject(@subject)
|
79
70
|
end
|
80
71
|
|
81
72
|
it "should load statements with a context override" do
|
82
73
|
if @supports_context
|
83
|
-
|
84
|
-
|
85
|
-
|
74
|
+
subject.load @filename, :context => @context
|
75
|
+
subject.should have_context(@context)
|
76
|
+
subject.query(:context => @context).size.should == subject.size
|
86
77
|
end
|
87
78
|
end
|
88
79
|
end
|
89
80
|
|
81
|
+
context "#from_{reader}" do
|
82
|
+
it "should instantiate a reader" do
|
83
|
+
reader = mock("reader")
|
84
|
+
reader.should_receive(:new).and_return(RDF::NTriples::Reader.new(""))
|
85
|
+
RDF::Reader.should_receive(:for).with(:a_reader).and_return(reader)
|
86
|
+
subject.send(:from_a_reader)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
90
|
context "when deleting statements" do
|
91
91
|
before :each do
|
92
92
|
@statements = RDF::NTriples::Reader.new(File.open(@filename)).to_a
|
93
|
-
|
94
|
-
end
|
95
|
-
|
96
|
-
it "should support #delete" do
|
97
|
-
@mutable.should respond_to(:delete)
|
93
|
+
subject.insert(*@statements)
|
98
94
|
end
|
99
95
|
|
100
96
|
it "should not raise errors" do
|
101
|
-
lambda {
|
97
|
+
lambda { subject.delete(@statements.first) }.should_not raise_error
|
102
98
|
end
|
103
99
|
|
104
100
|
it "should support deleting one statement at a time" do
|
105
|
-
|
106
|
-
|
101
|
+
subject.delete(@statements.first)
|
102
|
+
subject.should_not have_statement(@statements.first)
|
107
103
|
end
|
108
104
|
|
109
105
|
it "should support deleting multiple statements at a time" do
|
110
|
-
|
111
|
-
|
106
|
+
subject.delete(*@statements)
|
107
|
+
subject.find { |s| subject.has_statement?(s) }.should be_false
|
112
108
|
end
|
113
109
|
|
114
110
|
it "should support wildcard deletions" do
|
115
111
|
# nothing deleted
|
116
112
|
require 'digest/sha1'
|
117
|
-
count =
|
118
|
-
|
119
|
-
|
120
|
-
|
113
|
+
count = subject.count
|
114
|
+
subject.delete([nil, nil, random = Digest::SHA1.hexdigest(File.read(__FILE__))])
|
115
|
+
subject.should_not be_empty
|
116
|
+
subject.count.should == count
|
121
117
|
|
122
118
|
# everything deleted
|
123
|
-
|
124
|
-
|
119
|
+
subject.delete([nil, nil, nil])
|
120
|
+
subject.should be_empty
|
125
121
|
end
|
126
122
|
|
127
123
|
it "should only delete statements when the context matches" do
|
128
124
|
# Setup three statements identical except for context
|
129
|
-
count =
|
125
|
+
count = subject.count + (@supports_context ? 3 : 1)
|
130
126
|
s1 = RDF::Statement.new(@subject, RDF::URI.new("urn:predicate:1"), RDF::URI.new("urn:object:1"))
|
131
127
|
s2 = s1.dup
|
132
128
|
s2.context = RDF::URI.new("urn:context:1")
|
133
129
|
s3 = s1.dup
|
134
130
|
s3.context = RDF::URI.new("urn:context:2")
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
131
|
+
subject.insert(s1)
|
132
|
+
subject.insert(s2)
|
133
|
+
subject.insert(s3)
|
134
|
+
subject.count.should == count
|
139
135
|
|
140
136
|
# Delete one by one
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
context "when clearing all statements" do
|
151
|
-
it "should support #clear" do
|
152
|
-
@mutable.should respond_to(:clear)
|
137
|
+
subject.delete(s1)
|
138
|
+
subject.count.should == count - (@supports_context ? 1 : 1)
|
139
|
+
subject.delete(s2)
|
140
|
+
subject.count.should == count - (@supports_context ? 2 : 1)
|
141
|
+
subject.delete(s3)
|
142
|
+
subject.count.should == count - (@supports_context ? 3 : 1)
|
153
143
|
end
|
154
144
|
end
|
155
145
|
end
|
metadata
CHANGED
@@ -1,68 +1,67 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdf-spec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.5
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Arto Bendiken
|
9
9
|
- Ben Lavender
|
10
10
|
- Gregg Kellogg
|
11
|
-
autorequire:
|
11
|
+
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-
|
14
|
+
date: 2013-04-12 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rdf
|
18
|
-
|
19
|
-
none: false
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
19
|
requirements:
|
21
|
-
- - ~>
|
20
|
+
- - "~>"
|
22
21
|
- !ruby/object:Gem::Version
|
23
22
|
version: '1.0'
|
24
|
-
type: :development
|
25
|
-
prerelease: false
|
26
|
-
version_requirements: !ruby/object:Gem::Requirement
|
27
23
|
none: false
|
24
|
+
requirement: !ruby/object:Gem::Requirement
|
28
25
|
requirements:
|
29
|
-
- - ~>
|
26
|
+
- - "~>"
|
30
27
|
- !ruby/object:Gem::Version
|
31
28
|
version: '1.0'
|
29
|
+
none: false
|
30
|
+
prerelease: false
|
31
|
+
type: :development
|
32
32
|
- !ruby/object:Gem::Dependency
|
33
33
|
name: rspec
|
34
|
-
|
35
|
-
none: false
|
34
|
+
version_requirements: !ruby/object:Gem::Requirement
|
36
35
|
requirements:
|
37
|
-
- -
|
36
|
+
- - ">="
|
38
37
|
- !ruby/object:Gem::Version
|
39
38
|
version: '2.12'
|
40
|
-
type: :runtime
|
41
|
-
prerelease: false
|
42
|
-
version_requirements: !ruby/object:Gem::Requirement
|
43
39
|
none: false
|
40
|
+
requirement: !ruby/object:Gem::Requirement
|
44
41
|
requirements:
|
45
|
-
- -
|
42
|
+
- - ">="
|
46
43
|
- !ruby/object:Gem::Version
|
47
44
|
version: '2.12'
|
45
|
+
none: false
|
46
|
+
prerelease: false
|
47
|
+
type: :runtime
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: yard
|
50
|
-
|
51
|
-
none: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
51
|
requirements:
|
53
|
-
- -
|
52
|
+
- - ">="
|
54
53
|
- !ruby/object:Gem::Version
|
55
54
|
version: '0.8'
|
56
|
-
type: :development
|
57
|
-
prerelease: false
|
58
|
-
version_requirements: !ruby/object:Gem::Requirement
|
59
55
|
none: false
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
60
57
|
requirements:
|
61
|
-
- -
|
58
|
+
- - ">="
|
62
59
|
- !ruby/object:Gem::Version
|
63
60
|
version: '0.8'
|
64
|
-
|
65
|
-
|
61
|
+
none: false
|
62
|
+
prerelease: false
|
63
|
+
type: :development
|
64
|
+
description: RDF.rb plugin that provides RSpec matchers and shared examples for RDF objects.
|
66
65
|
email: public-rdf-ruby@w3.org
|
67
66
|
executables: []
|
68
67
|
extensions: []
|
@@ -86,6 +85,7 @@ files:
|
|
86
85
|
- etc/gkellogg.nt
|
87
86
|
- etc/gkellogg.ttl
|
88
87
|
- etc/test-data.nt
|
88
|
+
- lib/rdf/spec.rb
|
89
89
|
- lib/rdf/spec/countable.rb
|
90
90
|
- lib/rdf/spec/durable.rb
|
91
91
|
- lib/rdf/spec/enumerable.rb
|
@@ -102,32 +102,32 @@ files:
|
|
102
102
|
- lib/rdf/spec/version.rb
|
103
103
|
- lib/rdf/spec/writable.rb
|
104
104
|
- lib/rdf/spec/writer.rb
|
105
|
-
- lib/rdf/spec.rb
|
106
105
|
- spec/spec_helper.rb
|
107
106
|
- spec/version_spec.rb
|
108
107
|
homepage: http://github.com/ruby-rdf/rdf-spec/
|
109
108
|
licenses:
|
110
109
|
- Public Domain
|
111
|
-
post_install_message:
|
110
|
+
post_install_message:
|
112
111
|
rdoc_options: []
|
113
112
|
require_paths:
|
114
113
|
- lib
|
115
114
|
required_ruby_version: !ruby/object:Gem::Requirement
|
116
|
-
none: false
|
117
115
|
requirements:
|
118
|
-
- -
|
116
|
+
- - ">="
|
119
117
|
- !ruby/object:Gem::Version
|
120
118
|
version: 1.8.1
|
121
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
122
119
|
none: false
|
120
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
121
|
requirements:
|
124
|
-
- -
|
122
|
+
- - ">="
|
125
123
|
- !ruby/object:Gem::Version
|
126
|
-
version:
|
124
|
+
version: !binary |-
|
125
|
+
MA==
|
126
|
+
none: false
|
127
127
|
requirements: []
|
128
128
|
rubyforge_project: rdf
|
129
129
|
rubygems_version: 1.8.24
|
130
|
-
signing_key:
|
130
|
+
signing_key:
|
131
131
|
specification_version: 3
|
132
132
|
summary: RSpec extensions for RDF.rb.
|
133
133
|
test_files: []
|