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 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: []