rdf-spec 0.3.8 → 0.3.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.rb +2 -2
- data/lib/rdf/spec/countable.rb +3 -2
- data/lib/rdf/spec/durable.rb +20 -18
- data/lib/rdf/spec/enumerable.rb +337 -314
- data/lib/rdf/spec/format.rb +31 -28
- data/lib/rdf/spec/indexable.rb +19 -16
- data/lib/rdf/spec/inferable.rb +5 -2
- data/lib/rdf/spec/matchers.rb +6 -6
- data/lib/rdf/spec/mutable.rb +110 -107
- data/lib/rdf/spec/queryable.rb +331 -330
- data/lib/rdf/spec/readable.rb +10 -7
- data/lib/rdf/spec/reader.rb +119 -116
- data/lib/rdf/spec/repository.rb +39 -36
- data/lib/rdf/spec/transaction.rb +44 -40
- data/lib/rdf/spec/writable.rb +86 -57
- data/lib/rdf/spec/writer.rb +126 -123
- metadata +4 -6
- data/lib/rdf/spec/query.rb +0 -7
- data/lib/rdf/spec/vocab.rb +0 -7
data/lib/rdf/spec/readable.rb
CHANGED
@@ -1,17 +1,20 @@
|
|
1
1
|
require 'rdf/spec'
|
2
2
|
|
3
|
-
|
3
|
+
module RDF_Readable
|
4
|
+
extend RSpec::SharedContext
|
4
5
|
include RDF::Spec::Matchers
|
5
6
|
|
6
7
|
before :each do
|
7
8
|
raise '+@readable+ must be defined in a before(:each) block' unless instance_variable_get('@readable')
|
8
9
|
end
|
10
|
+
|
11
|
+
describe RDF::Readable do
|
12
|
+
it "responds to #readable?" do
|
13
|
+
@readable.respond_to?(:readable?)
|
14
|
+
end
|
9
15
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
it "implements #readable?" do
|
15
|
-
!!@readable.readable?.should == @readable.readable?
|
16
|
+
it "implements #readable?" do
|
17
|
+
!!@readable.readable?.should == @readable.readable?
|
18
|
+
end
|
16
19
|
end
|
17
20
|
end
|
data/lib/rdf/spec/reader.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'rdf/spec'
|
2
2
|
|
3
|
-
|
3
|
+
module RDF_Reader
|
4
|
+
extend RSpec::SharedContext
|
4
5
|
include RDF::Spec::Matchers
|
5
6
|
|
6
7
|
before(:each) do
|
@@ -8,161 +9,163 @@ share_as :RDF_Reader do
|
|
8
9
|
@reader_class = @reader.class
|
9
10
|
end
|
10
11
|
|
11
|
-
describe
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
describe RDF::Reader do
|
13
|
+
describe ".each" do
|
14
|
+
it "yields each reader" do
|
15
|
+
@reader_class.each do |r|
|
16
|
+
r.should_not be_nil
|
17
|
+
end
|
15
18
|
end
|
16
19
|
end
|
17
|
-
end
|
18
|
-
|
19
|
-
describe ".open" do
|
20
|
-
before(:each) do
|
21
|
-
RDF::Util::File.stub!(:open_file).and_yield(StringIO.new("foo"))
|
22
|
-
end
|
23
20
|
|
24
|
-
|
25
|
-
|
21
|
+
describe ".open" do
|
22
|
+
before(:each) do
|
26
23
|
RDF::Util::File.stub!(:open_file).and_yield(StringIO.new("foo"))
|
27
|
-
f.file_extensions.each_pair do |sym, content_type|
|
28
|
-
reader_mock = mock("reader")
|
29
|
-
reader_mock.should_receive(:got_here)
|
30
|
-
@reader_class.should_receive(:for).with(:file_name => "foo.#{sym}").and_return(@reader_class)
|
31
|
-
@reader_class.open("foo.#{sym}") do |r|
|
32
|
-
r.should be_a(RDF::Reader)
|
33
|
-
reader_mock.got_here
|
34
|
-
end
|
35
|
-
end
|
36
24
|
end
|
37
|
-
end
|
38
25
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
26
|
+
it "yields reader given file_name" do
|
27
|
+
@reader_class.format.each do |f|
|
28
|
+
RDF::Util::File.stub!(:open_file).and_yield(StringIO.new("foo"))
|
29
|
+
f.file_extensions.each_pair do |sym, content_type|
|
30
|
+
reader_mock = mock("reader")
|
31
|
+
reader_mock.should_receive(:got_here)
|
32
|
+
@reader_class.should_receive(:for).with(:file_name => "foo.#{sym}").and_return(@reader_class)
|
33
|
+
@reader_class.open("foo.#{sym}") do |r|
|
34
|
+
r.should be_a(RDF::Reader)
|
35
|
+
reader_mock.got_here
|
36
|
+
end
|
37
|
+
end
|
49
38
|
end
|
50
39
|
end
|
51
|
-
end
|
52
40
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
41
|
+
it "yields reader given symbol" do
|
42
|
+
@reader_class.format.each do |f|
|
43
|
+
RDF::Util::File.stub!(:open_file).and_yield(StringIO.new("foo"))
|
44
|
+
sym = f.to_sym # Like RDF::NTriples::Format => :ntriples
|
57
45
|
reader_mock = mock("reader")
|
58
46
|
reader_mock.should_receive(:got_here)
|
59
|
-
@reader_class.should_receive(:for).with(
|
60
|
-
@reader_class.open("foo.#{sym}", :
|
47
|
+
@reader_class.should_receive(:for).with(sym).and_return(@reader_class)
|
48
|
+
@reader_class.open("foo.#{sym}", :format => sym) do |r|
|
61
49
|
r.should be_a(RDF::Reader)
|
62
50
|
reader_mock.got_here
|
63
51
|
end
|
64
52
|
end
|
65
53
|
end
|
66
|
-
end
|
67
54
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
55
|
+
it "yields reader given {:file_name => file_name}" do
|
56
|
+
@reader_class.format.each do |f|
|
57
|
+
RDF::Util::File.stub!(:open_file).and_yield(StringIO.new("foo"))
|
58
|
+
f.file_extensions.each_pair do |sym, content_type|
|
59
|
+
reader_mock = mock("reader")
|
60
|
+
reader_mock.should_receive(:got_here)
|
61
|
+
@reader_class.should_receive(:for).with(:file_name => "foo.#{sym}").and_return(@reader_class)
|
62
|
+
@reader_class.open("foo.#{sym}", :file_name => "foo.#{sym}") do |r|
|
63
|
+
r.should be_a(RDF::Reader)
|
64
|
+
reader_mock.got_here
|
65
|
+
end
|
78
66
|
end
|
79
67
|
end
|
80
68
|
end
|
81
|
-
end
|
82
|
-
end
|
83
69
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
70
|
+
it "yields reader given {:content_type => 'a/b'}" do
|
71
|
+
@reader_class.format.each do |f|
|
72
|
+
RDF::Util::File.stub!(:open_file).and_yield(StringIO.new("foo"))
|
73
|
+
f.content_types.each_pair do |content_type, formats|
|
74
|
+
reader_mock = mock("reader")
|
75
|
+
reader_mock.should_receive(:got_here)
|
76
|
+
@reader_class.should_receive(:for).with(:content_type => content_type, :file_name => "foo").and_return(@reader_class)
|
77
|
+
@reader_class.open("foo", :content_type => content_type) do |r|
|
78
|
+
r.should be_a(RDF::Reader)
|
79
|
+
reader_mock.got_here
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
88
84
|
end
|
89
|
-
end
|
90
85
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
@reader_class.new("string") do |r|
|
96
|
-
reader_mock.got_here
|
97
|
-
r.instance_variable_get(:@input).should be_a(StringIO)
|
86
|
+
describe ".format" do
|
87
|
+
it "returns itself even if given explicit format" do
|
88
|
+
other_format = @reader_class == RDF::NTriples::Reader ? :nquads : :ntriples
|
89
|
+
@reader_class.for(other_format).should == @reader_class
|
98
90
|
end
|
99
91
|
end
|
92
|
+
|
93
|
+
describe ".new" do
|
94
|
+
it "sets @input to StringIO given a string" do
|
95
|
+
reader_mock = mock("reader")
|
96
|
+
reader_mock.should_receive(:got_here)
|
97
|
+
@reader_class.new("string") do |r|
|
98
|
+
reader_mock.got_here
|
99
|
+
r.instance_variable_get(:@input).should be_a(StringIO)
|
100
|
+
end
|
101
|
+
end
|
100
102
|
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
103
|
+
it "sets @input to input given something other than a string" do
|
104
|
+
reader_mock = mock("reader")
|
105
|
+
reader_mock.should_receive(:got_here)
|
106
|
+
file = StringIO.new("")
|
107
|
+
@reader_class.new(file) do |r|
|
108
|
+
reader_mock.got_here
|
109
|
+
r.instance_variable_get(:@input).should == file
|
110
|
+
end
|
108
111
|
end
|
109
|
-
end
|
110
112
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
113
|
+
it "sets validate given :validate => true" do
|
114
|
+
# Either set validate, or through error, due to invalid input (null input may be invalid)
|
115
|
+
begin
|
116
|
+
@reader_class.new("string", :validate => true) do |r|
|
117
|
+
r.send(:validate?).should be_true
|
118
|
+
end
|
119
|
+
rescue
|
120
|
+
$!.should be_a(RDF::ReaderError) # An error is acceptable
|
116
121
|
end
|
117
|
-
rescue
|
118
|
-
$!.should be_a(RDF::ReaderError) # An error is acceptable
|
119
122
|
end
|
120
|
-
end
|
121
123
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
124
|
+
it "sets canonicalize given :canonicalize => true" do
|
125
|
+
reader_mock = mock("reader")
|
126
|
+
reader_mock.should_receive(:got_here)
|
127
|
+
@reader_class.new("string", :canonicalize => true) do |r|
|
128
|
+
reader_mock.got_here
|
129
|
+
r.send(:canonicalize?).should be_true
|
130
|
+
end
|
128
131
|
end
|
129
|
-
end
|
130
132
|
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
133
|
+
it "sets intern given :intern => true" do
|
134
|
+
reader_mock = mock("reader")
|
135
|
+
reader_mock.should_receive(:got_here)
|
136
|
+
@reader_class.new("string", :intern => true) do |r|
|
137
|
+
reader_mock.got_here
|
138
|
+
r.send(:intern?).should be_true
|
139
|
+
end
|
137
140
|
end
|
138
|
-
end
|
139
141
|
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
142
|
+
it "sets prefixes given :prefixes => {}" do
|
143
|
+
reader_mock = mock("reader")
|
144
|
+
reader_mock.should_receive(:got_here)
|
145
|
+
@reader_class.new("string", :prefixes => {:a => "b"}) do |r|
|
146
|
+
reader_mock.got_here
|
147
|
+
r.prefixes.should == {:a => "b"}
|
148
|
+
end
|
146
149
|
end
|
147
150
|
end
|
148
|
-
end
|
149
151
|
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
152
|
+
describe "#prefixes=" do
|
153
|
+
it "sets prefixes from hash" do
|
154
|
+
@reader.prefixes = {:a => "b"}
|
155
|
+
@reader.prefixes.should == {:a => "b"}
|
156
|
+
end
|
154
157
|
end
|
155
|
-
end
|
156
158
|
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
159
|
+
describe "#prefix" do
|
160
|
+
{
|
161
|
+
nil => "nil",
|
162
|
+
:a => "b",
|
163
|
+
"foo" => "bar",
|
164
|
+
}.each_pair do |pfx, uri|
|
165
|
+
it "sets prefix(#{pfx}) to #{uri}" do
|
166
|
+
@reader.prefix(pfx, uri).should == uri
|
167
|
+
@reader.prefix(pfx).should == uri
|
168
|
+
end
|
166
169
|
end
|
167
170
|
end
|
168
171
|
end
|
data/lib/rdf/spec/repository.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'rdf/spec'
|
2
2
|
|
3
|
-
|
3
|
+
module RDF_Repository
|
4
|
+
extend RSpec::SharedContext
|
4
5
|
include RDF::Spec::Matchers
|
5
6
|
|
6
7
|
before :each do
|
@@ -10,58 +11,60 @@ share_as :RDF_Repository do
|
|
10
11
|
@enumerable = @repository
|
11
12
|
end
|
12
13
|
|
13
|
-
|
14
|
-
|
14
|
+
describe RDF::Repository do
|
15
|
+
context "when counting statements" do
|
16
|
+
require 'rdf/spec/countable'
|
15
17
|
|
16
|
-
|
17
|
-
|
18
|
-
|
18
|
+
before :each do
|
19
|
+
@countable = @repository
|
20
|
+
@countable.insert(*@statements)
|
21
|
+
end
|
22
|
+
|
23
|
+
include RDF_Countable
|
19
24
|
end
|
20
25
|
|
21
|
-
|
22
|
-
|
26
|
+
context "when enumerating statements" do
|
27
|
+
require 'rdf/spec/enumerable'
|
23
28
|
|
24
|
-
|
25
|
-
|
29
|
+
before :each do
|
30
|
+
@enumerable = @repository
|
31
|
+
@enumerable.insert(*@statements)
|
32
|
+
end
|
26
33
|
|
27
|
-
|
28
|
-
@enumerable = @repository
|
29
|
-
@enumerable.insert(*@statements)
|
34
|
+
include RDF_Enumerable
|
30
35
|
end
|
31
36
|
|
32
|
-
|
33
|
-
|
37
|
+
context "when querying statements" do
|
38
|
+
require 'rdf/spec/queryable'
|
34
39
|
|
35
|
-
|
36
|
-
|
40
|
+
before :each do
|
41
|
+
@queryable = @repository
|
42
|
+
@subject = RDF::URI.new('http://rubygems.org/gems/rdf')
|
43
|
+
end
|
37
44
|
|
38
|
-
|
39
|
-
@queryable = @repository
|
40
|
-
@subject = RDF::URI.new('http://rubygems.org/gems/rdf')
|
45
|
+
include RDF_Queryable
|
41
46
|
end
|
42
47
|
|
43
|
-
|
44
|
-
|
48
|
+
context "when updating" do
|
49
|
+
require 'rdf/spec/mutable'
|
45
50
|
|
46
|
-
|
47
|
-
|
51
|
+
before :each do
|
52
|
+
@mutable = @repository
|
53
|
+
@subject = RDF::URI.new('http://rubygems.org/gems/rdf')
|
54
|
+
@context = RDF::URI.new('http://example.org/context')
|
55
|
+
end
|
48
56
|
|
49
|
-
|
50
|
-
@mutable = @repository
|
51
|
-
@subject = RDF::URI.new('http://rubygems.org/gems/rdf')
|
52
|
-
@context = RDF::URI.new('http://example.org/context')
|
57
|
+
include RDF_Mutable
|
53
58
|
end
|
54
59
|
|
55
|
-
|
56
|
-
|
60
|
+
context "as a durable repository" do
|
61
|
+
require 'rdf/spec/durable'
|
57
62
|
|
58
|
-
|
59
|
-
|
63
|
+
before :each do
|
64
|
+
@load_durable ||= lambda { @repository }
|
65
|
+
end
|
60
66
|
|
61
|
-
|
62
|
-
@load_durable ||= lambda { @repository }
|
67
|
+
include RDF_Durable
|
63
68
|
end
|
64
|
-
|
65
|
-
it_should_behave_like RDF_Durable
|
66
69
|
end
|
67
70
|
end
|
data/lib/rdf/spec/transaction.rb
CHANGED
@@ -1,58 +1,62 @@
|
|
1
1
|
require 'rdf/spec'
|
2
2
|
|
3
|
-
|
3
|
+
module RDF_Transaction
|
4
|
+
extend RSpec::SharedContext
|
4
5
|
include RDF::Spec::Matchers
|
5
6
|
|
6
7
|
before :each do
|
7
8
|
raise '+@transaction+ must be defined in a before(:each) block' unless instance_variable_get('@transaction')
|
8
9
|
end
|
9
10
|
|
10
|
-
describe
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
describe RDF::Transaction do
|
12
|
+
#TODO
|
13
|
+
describe "#initialize" do
|
14
|
+
it "accepts a graph"
|
15
|
+
it "accepts a context"
|
16
|
+
it "accepts inserts"
|
17
|
+
it "accepts deletes"
|
18
|
+
end
|
16
19
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
+
describe "#graph" do
|
21
|
+
it "is mutable"
|
22
|
+
end
|
20
23
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
+
describe "#deletes" do
|
25
|
+
it "is mutable"
|
26
|
+
end
|
24
27
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
+
describe "#inserts" do
|
29
|
+
it "is mutable"
|
30
|
+
end
|
28
31
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
+
describe "#readable?" do
|
33
|
+
it "returns false" do
|
34
|
+
@transaction.readable?.should be_false
|
35
|
+
end
|
32
36
|
end
|
33
|
-
end
|
34
37
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
38
|
+
describe "#execute" do
|
39
|
+
it "deletes statements"
|
40
|
+
it "inserts statements"
|
41
|
+
it "calls before_execute"
|
42
|
+
it "calls after_execute"
|
43
|
+
it "returns self"
|
44
|
+
it "does not delete statements on failures"
|
45
|
+
it "does not insert statements on failures"
|
46
|
+
end
|
44
47
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
48
|
+
describe "#delete_statement" do
|
49
|
+
it "adds statement to #deletes"
|
50
|
+
it "does not remove statement from graph"
|
51
|
+
end
|
49
52
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
53
|
+
describe "#insert_statement" do
|
54
|
+
it "adds statement to #inserts"
|
55
|
+
it "does not add statement to graph"
|
56
|
+
end
|
54
57
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
+
it "does not respond to #load"
|
59
|
+
it "does not respond to #update"
|
60
|
+
it "does not respond to #clear"
|
61
|
+
end
|
58
62
|
end
|