rdf-spec 1.0.0 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.0.5
@@ -22,453 +22,429 @@ module RDF_Enumerable
22
22
  end
23
23
 
24
24
  describe RDF::Enumerable do
25
- describe "#supports?" do
26
- it "responds to #supports?" do
27
- @enumerable.respond_to?(:support?)
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
- describe "valid?" do
32
- it "returns true if all statements are valid" do
33
- @enumerable.should be_valid
34
- end
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
- context "when counting statements" do
49
- it "should respond to #empty?" do
50
- @enumerable.should respond_to(:empty?)
51
- end
52
-
53
- it "should respond to #count and #size" do
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
- @enumerable.has_statement?(statement).should be_true
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
- @enumerable.has_statement?(s).should be_false
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 implement #each_statement" do
111
- @enumerable.each_statement.should be_an_enumerator
112
- @enumerable.each_statement { |statement| statement.should be_a_statement }
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
- context "when enumerating triples" do
125
- it "should respond to #triples" do
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
- @enumerable.has_triple?(statement.to_triple).should be_true
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
- context "when enumerating quads" do
166
- it "should respond to #quads" do
167
- @enumerable.should respond_to(:quads)
168
- end
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
- it "should respond to #each_quad" do
175
- @enumerable.should respond_to(:each_quad)
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
- it "should respond to #enum_quad" do
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
- it "should implement #quads" do
183
- @enumerable.quads.should be_an_enumerator
184
- @enumerable.quads.to_a.size.should == @statements.size
185
- @enumerable.quads.each { |quad| quad.should be_a_quad }
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
- it "should implement #has_quad?" do
161
+ describe "#has_triple?" do
162
+ it "has all triples" do
189
163
  @statements.each do |statement|
190
- @enumerable.has_quad?(statement.to_quad).should be_true
164
+ subject.should have_triple(statement.to_triple)
191
165
  end
192
166
  end
167
+ end
193
168
 
194
- it "should implement #each_quad" do
195
- @enumerable.each_quad.should be_an_enumerator
196
- @enumerable.each_quad { |*quad| quad.should be_a_quad }
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
- it "should implement #enum_quad" do
200
- @enumerable.enum_quad.should be_an_enumerator
201
- @enumerable.enum_quad.should be_countable
202
- @enumerable.enum_quad.to_a.should == @enumerable.each_quad.to_a
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
- context "when enumerating subjects" do
207
- it "should respond to #subjects" do
208
- @enumerable.should respond_to(:subjects)
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
- it "should respond to #has_subject?" do
212
- @enumerable.should respond_to(:has_subject?)
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
- it "should respond to #each_subject" do
216
- @enumerable.should respond_to(:each_subject)
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
- it "should respond to #enum_subject" do
220
- @enumerable.should respond_to(:enum_subject)
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
- describe "#subjects" do
224
- subject {@enumerable.subjects}
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
- it "should implement #has_subject?" do
235
+ describe "#has_subject?" do
236
+ it "has all subjects" do
235
237
  checked = []
236
238
  @statements.each do |statement|
237
- @enumerable.has_subject?(statement.subject).should be_true unless checked.include?(statement.subject)
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
- @enumerable.has_predicate?(uri).should be_false
243
+ subject.should_not have_subject(uri)
242
244
  end
245
+ end
243
246
 
244
- it "should implement #each_subject" do
245
- @enumerable.each_subject.should be_an_enumerator
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
- @enumerable.each_subject.to_a.size.should == subjects.size
248
- @enumerable.each_subject do |value|
249
- value.should be_a_value
250
- subjects.should include(value)
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
- context "when enumerating predicates" do
262
- it "should respond to #predicates" do
263
- @enumerable.should respond_to(:predicates)
264
- end
265
-
266
- it "should respond to #has_predicate?" do
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
- describe "#predicates" do
279
- subject {@enumerable.predicates}
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 be_a_uri }}
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
- it "should implement #has_predicate?" do
280
+ describe "#has_predicate?" do
281
+ it "has all predicates" do
290
282
  checked = []
291
283
  @statements.each do |statement|
292
- @enumerable.has_predicate?(statement.predicate).should be_true unless checked.include?(statement.object)
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
- @enumerable.has_predicate?(uri).should be_false
288
+ subject.should_not have_predicate(uri)
297
289
  end
290
+ end
298
291
 
299
- it "should implement #each_predicate" do
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
- @enumerable.each_predicate.should be_an_enumerator
302
- @enumerable.each_predicate.to_a.size.should == predicates.size
303
- @enumerable.each_predicate do |value|
304
- value.should be_a_uri
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
- context "when enumerating objects" do
317
- it "should respond to #objects" do
318
- @enumerable.should respond_to(:objects)
319
- end
320
-
321
- it "should respond to #has_object?" do
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
- describe "#objects" do
334
- subject {@enumerable.objects}
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 be_a_value }}
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
- it "should implement #has_object?" do
325
+ describe "#has_object?" do
326
+ it "has all objects" do
345
327
  checked = []
346
328
  @statements.each do |statement|
347
- @enumerable.has_object?(statement.object).should be_true unless checked.include?(statement.object)
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
- @enumerable.has_object?(uri).should be_false
333
+ subject.should_not have_object(uri)
352
334
  end
335
+ end
353
336
 
354
- it "should implement #each_object" do
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
- @enumerable.each_object.should be_an_enumerator
357
- @enumerable.each_object.to_a.size.should == objects.size
358
- @enumerable.each_object do |value|
359
- value.should be_a_value
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
- context "when enumerating contexts" do
372
- it "should respond to #contexts" do
373
- @enumerable.should respond_to(:contexts)
374
- end
375
-
376
- it "should respond to #has_context?" do
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
- describe "#contexts" do
389
- subject {@enumerable.contexts}
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
- it "should implement #has_context?" do
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
- @enumerable.has_context?(uri).should be_false
377
+ subject.should_not have_context(uri)
407
378
  end
379
+ end
408
380
 
409
- it "should implement #each_context" do
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
- @enumerable.each_context.should be_an_enumerator
413
- @enumerable.each_context.to_a.size.should == contexts.size
414
- @enumerable.each_context do |value|
415
- value.should be_a_resource
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
- context "when enumerating graphs" do
428
- it "should respond to #each_graph" do
429
- @enumerable.should respond_to(:enum_graph)
430
- end
431
-
432
- it "should respond to #enum_graph" do
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
- it "should implement #enum_graph" do
443
- @enumerable.enum_graph.should be_an_enumerator
444
- @enumerable.enum_graph.should be_countable
445
- @enumerable.enum_graph.to_a.should == @enumerable.each_graph.to_a
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
- context "when converting" do
450
- it "should respond to #to_hash" do
451
- @enumerable.should respond_to(:to_hash)
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
- it "should implement #to_hash" do
455
- @enumerable.to_hash.should be_instance_of(Hash)
456
- @enumerable.to_hash.keys.size.should == @enumerable.subjects.to_a.size
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
- context "when dumping" do
461
- it "should respond to #dump" do
462
- @enumerable.should respond_to(:dump)
463
- end
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
@@ -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 "should be empty initially" do
41
- @mutable.empty?.should be_true
42
- @mutable.count.should be_zero
43
- end
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
- it "should be readable" do
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 { @mutable.load }.should raise_error(ArgumentError)
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 { @mutable.load(@filename) }.should_not raise_error(ArgumentError)
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 { @mutable.load(@filename,{}) }.should_not raise_error(ArgumentError)
63
+ lambda { subject.load(@filename, {}) }.should_not raise_error(ArgumentError)
73
64
  end
74
65
 
75
66
  it "should load statements" do
76
- @mutable.load @filename
77
- @mutable.size.should == File.readlines(@filename).size
78
- @mutable.should have_subject(@subject)
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
- @mutable.load @filename, :context => @context
84
- @mutable.should have_context(@context)
85
- @mutable.query(:context => @context).size.should == @mutable.size
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
- @mutable.insert(*@statements)
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 { @mutable.delete(@statements.first) }.should_not raise_error
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
- @mutable.delete(@statements.first)
106
- @mutable.should_not have_statement(@statements.first)
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
- @mutable.delete(*@statements)
111
- @statements.find { |s| @mutable.has_statement?(s) }.should be_false
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 = @mutable.count
118
- @mutable.delete([nil, nil, random = Digest::SHA1.hexdigest(File.read(__FILE__))])
119
- @mutable.should_not be_empty
120
- @mutable.count.should == count
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
- @mutable.delete([nil, nil, nil])
124
- @mutable.should be_empty
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 = @mutable.count + (@supports_context ? 3 : 1)
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
- @mutable.insert(s1)
136
- @mutable.insert(s2)
137
- @mutable.insert(s3)
138
- @mutable.count.should == count
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
- @mutable.delete(s1)
142
- @mutable.count.should == count - (@supports_context ? 1 : 1)
143
- @mutable.delete(s2)
144
- @mutable.count.should == count - (@supports_context ? 2 : 1)
145
- @mutable.delete(s3)
146
- @mutable.count.should == count - (@supports_context ? 3 : 1)
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.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-01-19 00:00:00.000000000 Z
14
+ date: 2013-04-12 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rdf
18
- requirement: !ruby/object:Gem::Requirement
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
- requirement: !ruby/object:Gem::Requirement
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
- requirement: !ruby/object:Gem::Requirement
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
- description: RDF.rb plugin that provides RSpec matchers and shared examples for RDF
65
- objects.
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: '0'
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: []