rdf-spec 0.1.8 → 0.1.9
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/queryable.rb +228 -2
- data/lib/rdf/spec/version.rb +1 -1
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.9
|
data/lib/rdf/spec/queryable.rb
CHANGED
@@ -6,7 +6,7 @@ share_as :RDF_Queryable do
|
|
6
6
|
|
7
7
|
before :each do
|
8
8
|
# RDF::Queryable cares about the contents of this file too much to let someone set it
|
9
|
-
@filename
|
9
|
+
@filename = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'etc', 'doap.nt'))
|
10
10
|
raise '+@queryable+ must be defined in a before(:each) block' unless instance_variable_get('@queryable')
|
11
11
|
raise '+@subject+ must be defined in a before(:each) block' unless instance_variable_get('@subject')
|
12
12
|
if @queryable.empty?
|
@@ -18,6 +18,9 @@ share_as :RDF_Queryable do
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
+
##
|
22
|
+
# @see RDF::Queryable#query
|
23
|
+
|
21
24
|
it "should support #query" do
|
22
25
|
@queryable.respond_to?(:query).should be_true
|
23
26
|
end
|
@@ -71,10 +74,233 @@ share_as :RDF_Queryable do
|
|
71
74
|
end
|
72
75
|
|
73
76
|
it "should not alter a given hash argument" do
|
74
|
-
query = {
|
77
|
+
query = {:subject => @subject, :predicate => RDF::DOAP.name, :object => RDF::FOAF.Person}
|
75
78
|
original_query = query.dup
|
76
79
|
result = @queryable.query(query)
|
77
80
|
query.should == original_query
|
78
81
|
end
|
79
82
|
end
|
83
|
+
|
84
|
+
##
|
85
|
+
# @see RDF::Queryable#first
|
86
|
+
|
87
|
+
it "should support #first" do
|
88
|
+
@queryable.respond_to?(:first).should be_true
|
89
|
+
end
|
90
|
+
|
91
|
+
context "#first" do
|
92
|
+
before :all do
|
93
|
+
@failing_pattern = [RDF::Node.new] * 3
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should be callable without a pattern" do
|
97
|
+
lambda { @queryable.first }.should_not raise_error(ArgumentError)
|
98
|
+
@queryable.first.should == @queryable.each.first # uses an Enumerator
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should return the correct value when the pattern matches" do
|
102
|
+
matching_patterns = [[nil, nil, nil], @queryable.each.first]
|
103
|
+
matching_patterns.each do |matching_pattern|
|
104
|
+
@queryable.first(matching_pattern).should == @queryable.query(matching_pattern).each.first
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
it "should return nil when the pattern fails to match anything" do
|
109
|
+
@queryable.first(@failing_pattern).should be_nil
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should return nil when self is empty" do
|
113
|
+
queryable = [].extend(RDF::Queryable)
|
114
|
+
queryable.first.should be_nil
|
115
|
+
queryable.first(@failing_pattern).should be_nil
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
##
|
120
|
+
# @see RDF::Queryable#first_subject
|
121
|
+
|
122
|
+
it "should support #first_subject" do
|
123
|
+
@queryable.respond_to?(:first_subject).should be_true
|
124
|
+
end
|
125
|
+
|
126
|
+
context "#first_subject" do
|
127
|
+
before :all do
|
128
|
+
@failing_pattern = [RDF::Node.new, nil, nil]
|
129
|
+
end
|
130
|
+
|
131
|
+
it "should be callable without a pattern" do
|
132
|
+
lambda { @queryable.first_subject }.should_not raise_error(ArgumentError)
|
133
|
+
@queryable.first_subject.should == @queryable.first.subject
|
134
|
+
end
|
135
|
+
|
136
|
+
it "should return the correct value when the pattern matches" do
|
137
|
+
matching_patterns = [[nil, nil, nil], [@queryable.first.subject, nil, nil]]
|
138
|
+
matching_patterns.each do |matching_pattern|
|
139
|
+
@queryable.first_subject(matching_pattern).should == @queryable.query(matching_pattern).first.subject
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
it "should return nil when the pattern fails to match anything" do
|
144
|
+
@queryable.first_subject(@failing_pattern).should be_nil
|
145
|
+
end
|
146
|
+
|
147
|
+
it "should return nil when self is empty" do
|
148
|
+
queryable = [].extend(RDF::Queryable)
|
149
|
+
queryable.first_subject.should be_nil
|
150
|
+
queryable.first_subject(@failing_pattern).should be_nil
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
##
|
155
|
+
# @see RDF::Queryable#first_predicate
|
156
|
+
|
157
|
+
it "should support #first_predicate" do
|
158
|
+
@queryable.respond_to?(:first_predicate).should be_true
|
159
|
+
end
|
160
|
+
|
161
|
+
context "#first_predicate" do
|
162
|
+
before :all do
|
163
|
+
@failing_pattern = [nil, RDF::Node.new, nil]
|
164
|
+
end
|
165
|
+
|
166
|
+
it "should be callable without a pattern" do
|
167
|
+
lambda { @queryable.first_predicate }.should_not raise_error(ArgumentError)
|
168
|
+
@queryable.first_predicate.should == @queryable.first.predicate
|
169
|
+
end
|
170
|
+
|
171
|
+
it "should return the correct value when the pattern matches" do
|
172
|
+
matching_patterns = [[nil, nil, nil], [nil, @queryable.first.predicate, nil]]
|
173
|
+
matching_patterns.each do |matching_pattern|
|
174
|
+
@queryable.first_predicate(matching_pattern).should == @queryable.query(matching_pattern).first.predicate
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
it "should return nil when the pattern fails to match anything" do
|
179
|
+
@queryable.first_predicate(@failing_pattern).should be_nil
|
180
|
+
end
|
181
|
+
|
182
|
+
it "should return nil when self is empty" do
|
183
|
+
queryable = [].extend(RDF::Queryable)
|
184
|
+
queryable.first_predicate.should be_nil
|
185
|
+
queryable.first_predicate(@failing_pattern).should be_nil
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
##
|
190
|
+
# @see RDF::Queryable#first_object
|
191
|
+
|
192
|
+
it "should support #first_object" do
|
193
|
+
@queryable.respond_to?(:first_object).should be_true
|
194
|
+
end
|
195
|
+
|
196
|
+
context "#first_object" do
|
197
|
+
before :all do
|
198
|
+
@failing_pattern = [nil, nil, RDF::Node.new]
|
199
|
+
end
|
200
|
+
|
201
|
+
it "should be callable without a pattern" do
|
202
|
+
lambda { @queryable.first_object }.should_not raise_error(ArgumentError)
|
203
|
+
@queryable.first_object.should == @queryable.first.object
|
204
|
+
end
|
205
|
+
|
206
|
+
it "should return the correct value when the pattern matches" do
|
207
|
+
matching_patterns = [[nil, nil, nil], [nil, nil, @queryable.first.object]]
|
208
|
+
matching_patterns.each do |matching_pattern|
|
209
|
+
@queryable.first_object(matching_pattern).should == @queryable.query(matching_pattern).first.object
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
213
|
+
it "should return nil when the pattern fails to match anything" do
|
214
|
+
@queryable.first_object(@failing_pattern).should be_nil
|
215
|
+
end
|
216
|
+
|
217
|
+
it "should return nil when self is empty" do
|
218
|
+
queryable = [].extend(RDF::Queryable)
|
219
|
+
queryable.first_object.should be_nil
|
220
|
+
queryable.first_object(@failing_pattern).should be_nil
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
##
|
225
|
+
# @see RDF::Queryable#first_literal
|
226
|
+
|
227
|
+
it "should support #first_literal" do
|
228
|
+
@queryable.respond_to?(:first_literal).should be_true
|
229
|
+
end
|
230
|
+
|
231
|
+
context "#first_literal" do
|
232
|
+
before :each do
|
233
|
+
# FIXME: these tests should be using the provided @queryable, if possible.
|
234
|
+
@queryable = RDF::Graph.new do |graph|
|
235
|
+
@subject = RDF::Node.new
|
236
|
+
graph << [subject, RDF.type, RDF::DOAP.Project]
|
237
|
+
graph << [subject, RDF::DC.creator, RDF::URI.new('http://example.org/#jhacker')]
|
238
|
+
graph << [subject, RDF::DC.creator, @literal = RDF::Literal.new('J. Random Hacker')]
|
239
|
+
end
|
240
|
+
@failing_pattern = [nil, nil, RDF::Node.new]
|
241
|
+
end
|
242
|
+
|
243
|
+
it "should be callable without a pattern" do
|
244
|
+
lambda { @queryable.first_literal }.should_not raise_error(ArgumentError)
|
245
|
+
@queryable.first_literal.should == @literal
|
246
|
+
end
|
247
|
+
|
248
|
+
it "should return the correct value when the pattern matches" do
|
249
|
+
matching_patterns = [[nil, nil, nil], [@subject, nil, nil], [nil, RDF::DC.creator, nil], [nil, nil, @literal]]
|
250
|
+
matching_patterns.each do |matching_pattern|
|
251
|
+
@queryable.first_literal(matching_pattern).should == @literal
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
255
|
+
it "should return nil when the pattern fails to match anything" do
|
256
|
+
@queryable.first_literal(@failing_pattern).should be_nil
|
257
|
+
end
|
258
|
+
|
259
|
+
it "should return nil when self is empty" do
|
260
|
+
queryable = [].extend(RDF::Queryable)
|
261
|
+
queryable.first_literal.should be_nil
|
262
|
+
queryable.first_literal(@failing_pattern).should be_nil
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
##
|
267
|
+
# @see RDF::Queryable#first_value
|
268
|
+
|
269
|
+
it "should support #first_value" do
|
270
|
+
@queryable.respond_to?(:first_value).should be_true
|
271
|
+
end
|
272
|
+
|
273
|
+
context "#first_value" do
|
274
|
+
before :all do
|
275
|
+
@failing_pattern = [nil, nil, RDF::Node.new]
|
276
|
+
end
|
277
|
+
|
278
|
+
it "should be callable without a pattern" do
|
279
|
+
lambda { @queryable.first_value }.should_not raise_error(ArgumentError)
|
280
|
+
@queryable.first_value.should == @queryable.first_literal.value
|
281
|
+
end
|
282
|
+
|
283
|
+
it "should return the correct value when the pattern matches" do
|
284
|
+
matching_patterns = []
|
285
|
+
@queryable.each do |statement|
|
286
|
+
if statement.object.is_a?(RDF::Literal)
|
287
|
+
matching_pattern = [statement.subject, statement.predicate, nil]
|
288
|
+
unless matching_patterns.include?(matching_pattern)
|
289
|
+
matching_patterns << matching_pattern
|
290
|
+
@queryable.first_value(matching_pattern).should == @queryable.first_literal(matching_pattern).value
|
291
|
+
end
|
292
|
+
end
|
293
|
+
end
|
294
|
+
end
|
295
|
+
|
296
|
+
it "should return nil when the pattern fails to match anything" do
|
297
|
+
@queryable.first_value(@failing_pattern).should be_nil
|
298
|
+
end
|
299
|
+
|
300
|
+
it "should return nil when self is empty" do
|
301
|
+
queryable = [].extend(RDF::Queryable)
|
302
|
+
queryable.first_value.should be_nil
|
303
|
+
queryable.first_value(@failing_pattern).should be_nil
|
304
|
+
end
|
305
|
+
end
|
80
306
|
end
|
data/lib/rdf/spec/version.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 9
|
9
|
+
version: 0.1.9
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Arto Bendiken
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-04-
|
18
|
+
date: 2010-04-21 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|