~ubuntu-branches/ubuntu/breezy/redland-bindings/breezy

« back to all changes in this revision

Viewing changes to ruby/test/test_model.rb

  • Committer: Bazaar Package Importer
  • Author(s): Fabio M. Di Nitto
  • Date: 2005-06-21 12:56:49 UTC
  • mfrom: (1.1.1 upstream) (0.1.2 sarge)
  • Revision ID: james.westby@ubuntu.com-20050621125649-1uwxez1hdyzw6vzd
Tags: 1.0.2.1-1ubuntu1
* Resynchronise with Debian.

* Fix FTBFS: Add python2.4-dev Build-Dep.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
require 'test/unit'
2
 
require 'rdf'
3
 
require 'rdf/constants'
4
 
require 'rdf/model'
5
 
require 'rdf/foaf'
6
 
 
7
 
class TestModel < Test::Unit::TestCase
8
 
  include Redland
9
 
  include FOAF
10
 
  def setup
11
 
    @foaf = Namespace.new('http://xmlns.com/foaf/0.1/')
12
 
    @faa = Namespace.new("http://www.faa.gov/faa#")
13
 
  end
14
 
 
15
 
  def test_initialize()
16
 
    model = Model.new()
17
 
    assert_equal(0,model.size)
18
 
    st = Statement.new(Uri.new("http://foo"),Uri.new("http://bar"),"baz")
19
 
    st2 = Statement.new(Uri.new("http://xmlns/"),Uri.new("http://name"),"bar")
20
 
    model.add_statement(st)
21
 
    model.add_statement(st2)
22
 
    assert_equal(2,model.size)
23
 
  end
24
 
 
25
 
  def test_api()
26
 
    model = Model.new()
27
 
    foaf = Namespace.new('http://xmlns.com/foaf/0.1/')
28
 
    faa = Namespace.new('http://www.faa.gov/people#')
29
 
    model.add_statement(Statement.new(@faa['dom@some.gov'],@foaf['name'],"Dominic"))
30
 
    model.add_statement Statement.new(@faa['kris'],@foaf['firstName'],"Kris")
31
 
    model.add_statement Statement.new(@faa['kris'],@foaf['phone'],"333-123-2387")
32
 
    model.add(@faa['kris'],@foaf['name'],"Kris Frame")
33
 
    model.add( Uri.new('dom'),Uri.new('project'),'2334')
34
 
    domnode = model.subject(@foaf['name'],"Dominic")
35
 
    assert_equal(@faa['dom@some.gov'], domnode)
36
 
    assert_equal('333-123-2387',model.object(@faa['kris'],@foaf['phone']).to_s)
37
 
    
38
 
 
39
 
    #model.predicates(@faa['kris'],"Kris"){|p| puts p }
40
 
    #model.triples{|s,p,o| puts "subject: #{s}, pred: #{p}, object: #{o}"}
41
 
    model.find( nil,@foaf['name'],nil){|s,p,o| puts o }
42
 
    
43
 
    #model.save('out3.rdf')
44
 
 
45
 
    serializer = Serializer.new()
46
 
    serializer.to_file('out2.rdf',model,Uri.new("http://www.faa.gov/people#"))
47
 
    #  serializer.namespace(@foaf,'foaf')
48
 
    
49
 
 
50
 
  end
51
 
 
52
 
  def test_delete()
53
 
    model = Model.new()
54
 
    dom = BNode.new('dom')
55
 
    model.add(dom,@foaf['firstName'],'Dominic')
56
 
    model.add(dom,@foaf['surname'],'Sisneros')
57
 
    assert_equal(2,model.size)
58
 
    st = Statement.new(dom,@foaf['firstName'],'Dominic')
59
 
    assert(model.include_statement?(st))
60
 
    model.delete_statement(st)
61
 
    assert(!model.include_statement?(st),"model should not include statement")
62
 
    assert_equal(1,model.size)
63
 
    model.delete(dom,@foaf['surname'],'Bogus')
64
 
    assert_equal(1,model.size)
65
 
    model.delete(dom,@foaf['surname'],'Sisneros')
66
 
    assert_equal(0,model.size)
67
 
  end
68
 
 
69
 
  def test_add_statements(model)
70
 
    dom = BNode.new('dom')
71
 
    kris = BNode.new('kris')
72
 
    model.add(dom,@foaf['firstName'],'Dominic')
73
 
    model.add(dom,@foaf['surname'],'Sisneros')
74
 
    model.add_statement Statement.new(kris,@foaf['firstName'],"Kris")
75
 
    model.add_statement Statement.new(kris,@foaf['phone'],"425-227-2387")
76
 
  end
77
 
  
78
 
  def test_delete()
79
 
    model = Model.new
80
 
    dom = BNode.new('dom')
81
 
    kris = BNode.new('kris')
82
 
    model.add(dom,@foaf['firstName'],'Dominic')
83
 
    model.add(dom,@foaf['surname'],'Sisneros')
84
 
    model.add_statement Statement.new(kris,@foaf['firstName'],"Kris")
85
 
    model.add_statement Statement.new(kris,@foaf['phone'],"192-192-192")
86
 
    assert_equal(4,model.size)
87
 
    to_delete =model.find(dom,nil,nil) # delete all dom nodes
88
 
    to_delete.each{|st| model.delete_statement(st)}
89
 
    assert_equal(2,model.size)
90
 
    assert_equal(0, model.find(dom,nil,nil).size)
91
 
    assert_equal(2, model.find(kris,nil,nil).size)
92
 
  end
93
 
  
94
 
 
95
 
  def testcontext()
96
 
    store = HashStore.new('bdb','thestore')
97
 
    model = Model.new(store)
98
 
    model.add_statement(Statement.new(Uri.new('dom'),Uri.new('project'),'10892'),Node.new(Uri.new('http://mycontext/dom')))
99
 
    model.add(Uri.new('dom'),Uri.new('name'),'Dominic',Uri.new('http://mycontext/dom'))
100
 
    model.statements(){|s| puts s}
101
 
    contexts = []
102
 
    model.contexts{|c| contexts << c}
103
 
    assert_equal(1,contexts.size)
104
 
    #assert_equal(contexts[0],model.create_resource('http://mycontext/dom'))
105
 
    #model.add(Uri.new('dom'),Uri.new('surname'),'Sisneros',Uri.new('http://newcontext/dom'))
106
 
    #contexts = model.contexts()
107
 
    #puts "## CONTEXTS ARE #{contexts}"
108
 
    #assert_equal(2,contexts.size)    
109
 
  end
110
 
 
111
 
  def test_smush()
112
 
    model = Model.new()
113
 
    foaf = Namespace.new("http://xmlns.com/foaf/0.1/")
114
 
    rdfs = Namespace.new("http://www.23.org/2000/01/rdf-schema#")
115
 
    dom = Node.new(:blank=>'dom')
116
 
    model.add(dom,rdfs['type'],foaf['Person'])
117
 
    model.add(dom,foaf['mbox'],Uri.new('mailto:dom@sisna.com'))
118
 
    model.add(dom,foaf['firstName'],'Dominic')
119
 
    dom2 = Node.new(:blank=>'dom2')
120
 
    model.add_statement(Statement.new(dom2,rdfs['type'],foaf['Person']))
121
 
    model.add_statement(Statement.new(dom2,foaf['mbox'],Uri.new('mailto:dom@sisna.com')))
122
 
    model.add_statement(Statement.new(dom2,foaf['surname'],'Sisneros'))
123
 
    assert_equal(6,model.size)
124
 
    subjects = []
125
 
    model.subjects(foaf['mbox'],Uri.new('mailto:dom@sisna.com')){|s|
126
 
      subjects << s
127
 
    }
128
 
    assert_equal(2,subjects.size)
129
 
    model.smush(foaf['mbox'])
130
 
    assert_equal(2,model.subjects(foaf['mbox'],Uri.new('mailto:dom@sisna.com')).size)        
131
 
    
132
 
  end
133
 
 
134
 
  def test_parse_and_merge()
135
 
    model = Model.new()
136
 
    dom = BNode.new('dom')
137
 
    model.add(dom,FOAF::MBOX,Node.new(:uri_string=>'mailto:dominic@bogus.com'))
138
 
    model.add(dom,FOAF::NAME,'Dominic Sisneros')
139
 
    parser = Parser.new()
140
 
    model.parse_and_merge(parser,'file:./triples.rdf',[FOAF::MBOX])
141
 
    assert_equal('Electronic Engineer',model.object(dom,FOAF::TITLE).to_s)
142
 
    assert_equal('Sisneros',model.object(dom,FOAF::SURNAME).to_s)
143
 
  end
144
 
end
145
 
 
 
1
require 'test/unit'
 
2
require 'rdf/redland'
 
3
require 'rdf/redland/constants'
 
4
require 'rdf/redland/schemas/foaf'
 
5
 
 
6
class TestModel < Test::Unit::TestCase
 
7
  include Redland
 
8
 
 
9
  def setup
 
10
    @foaf = Namespace.new('http://xmlns.com/foaf/0.1/')
 
11
    @faa = Namespace.new("http://www.faa.gov/faa#")
 
12
  end
 
13
 
 
14
  def test_initialize()
 
15
    model = Model.new()
 
16
    assert_equal(0,model.size)
 
17
    st = Statement.new(Uri.new("http://foo"),Uri.new("http://bar"),"baz")
 
18
    st2 = Statement.new(Uri.new("http://xmlns/"),Uri.new("http://name"),"bar")
 
19
    model.add_statement(st)
 
20
    model.add_statement(st2)
 
21
    assert_equal(2,model.size)
 
22
  end
 
23
 
 
24
  def test_api()
 
25
    model = Model.new()
 
26
    foaf = Namespace.new('http://xmlns.com/foaf/0.1/')
 
27
    faa = Namespace.new('http://www.faa.gov/people#')
 
28
    model.add_statement(Statement.new(@faa['dom@some.gov'],@foaf['name'],"Dominic"))
 
29
    model.add_statement Statement.new(@faa['kris'],@foaf['firstName'],"Kris")
 
30
    model.add_statement Statement.new(@faa['kris'],@foaf['phone'],"333-123-2387")
 
31
    model.add(@faa['kris'],@foaf['name'],"Kris Frame")
 
32
    model.add( Uri.new('dom'),Uri.new('project'),'2334')
 
33
    domnode = model.subject(@foaf['name'],"Dominic")
 
34
    assert_equal(@faa['dom@some.gov'], domnode)
 
35
    assert_equal('333-123-2387',model.object(@faa['kris'],@foaf['phone']).to_s)
 
36
    
 
37
 
 
38
    #model.predicates(@faa['kris'],"Kris"){|p| puts p }
 
39
    #model.triples{|s,p,o| puts "subject: #{s}, pred: #{p}, object: #{o}"}
 
40
    model.find( nil,@foaf['name'],nil){|s,p,o| puts o }
 
41
    
 
42
    #model.save('out3.rdf')
 
43
 
 
44
    serializer = Serializer.new()
 
45
    serializer.to_file('out2.rdf',model,Uri.new("http://www.faa.gov/people#"))
 
46
    #  serializer.namespace(@foaf,'foaf')
 
47
    
 
48
 
 
49
  end
 
50
 
 
51
  def test_delete()
 
52
    model = Model.new()
 
53
    dom = BNode.new('dom')
 
54
    model.add(dom,@foaf['firstName'],'Dominic')
 
55
    model.add(dom,@foaf['surname'],'Sisneros')
 
56
    assert_equal(2,model.size)
 
57
    st = Statement.new(dom,@foaf['firstName'],'Dominic')
 
58
    assert(model.include_statement?(st))
 
59
    model.delete_statement(st)
 
60
    assert(!model.include_statement?(st),"model should not include statement")
 
61
    assert_equal(1,model.size)
 
62
    model.delete(dom,@foaf['surname'],'Bogus')
 
63
    assert_equal(1,model.size)
 
64
    model.delete(dom,@foaf['surname'],'Sisneros')
 
65
    assert_equal(0,model.size)
 
66
  end
 
67
 
 
68
  def test_add_statements(model)
 
69
    dom = BNode.new('dom')
 
70
    kris = BNode.new('kris')
 
71
    model.add(dom,@foaf['firstName'],'Dominic')
 
72
    model.add(dom,@foaf['surname'],'Sisneros')
 
73
    model.add_statement Statement.new(kris,@foaf['firstName'],"Kris")
 
74
    model.add_statement Statement.new(kris,@foaf['phone'],"425-227-2387")
 
75
  end
 
76
  
 
77
  def test_delete()
 
78
    model = Model.new
 
79
    dom = BNode.new('dom')
 
80
    kris = BNode.new('kris')
 
81
    model.add(dom,@foaf['firstName'],'Dominic')
 
82
    model.add(dom,@foaf['surname'],'Sisneros')
 
83
    model.add_statement Statement.new(kris,@foaf['firstName'],"Kris")
 
84
    model.add_statement Statement.new(kris,@foaf['phone'],"192-192-192")
 
85
    assert_equal(4,model.size)
 
86
    to_delete =model.find(dom,nil,nil) # delete all dom nodes
 
87
    to_delete.each{|st| model.delete_statement(st)}
 
88
    assert_equal(2,model.size)
 
89
    assert_equal(0, model.find(dom,nil,nil).size)
 
90
    assert_equal(2, model.find(kris,nil,nil).size)
 
91
  end
 
92
  
 
93
 
 
94
  def testcontext()
 
95
    store = HashStore.new('bdb','thestore')
 
96
    model = Model.new(store)
 
97
    model.add_statement(Statement.new(Uri.new('dom'),Uri.new('project'),'10892'),Node.new(Uri.new('http://mycontext/dom')))
 
98
    model.add(Uri.new('dom'),Uri.new('name'),'Dominic',Uri.new('http://mycontext/dom'))
 
99
    model.statements(){|s| puts s}
 
100
    contexts = []
 
101
    model.contexts{|c| contexts << c}
 
102
    assert_equal(1,contexts.size)
 
103
    #assert_equal(contexts[0],model.create_resource('http://mycontext/dom'))
 
104
    #model.add(Uri.new('dom'),Uri.new('surname'),'Sisneros',Uri.new('http://newcontext/dom'))
 
105
    #contexts = model.contexts()
 
106
    #puts "## CONTEXTS ARE #{contexts}"
 
107
    #assert_equal(2,contexts.size)    
 
108
  end
 
109
 
 
110
  def test_smush()
 
111
    model = Model.new()
 
112
    foaf = Namespace.new("http://xmlns.com/foaf/0.1/")
 
113
    rdfs = Namespace.new("http://www.23.org/2000/01/rdf-schema#")
 
114
    dom = Node.new(:blank=>'dom')
 
115
    model.add(dom,rdfs['type'],foaf['Person'])
 
116
    model.add(dom,foaf['mbox'],Uri.new('mailto:dom@sisna.com'))
 
117
    model.add(dom,foaf['firstName'],'Dominic')
 
118
    dom2 = Node.new(:blank=>'dom2')
 
119
    model.add_statement(Statement.new(dom2,rdfs['type'],foaf['Person']))
 
120
    model.add_statement(Statement.new(dom2,foaf['mbox'],Uri.new('mailto:dom@sisna.com')))
 
121
    model.add_statement(Statement.new(dom2,foaf['surname'],'Sisneros'))
 
122
    assert_equal(6,model.size)
 
123
    subjects = []
 
124
    model.subjects(foaf['mbox'],Uri.new('mailto:dom@sisna.com')){|s|
 
125
      subjects << s
 
126
    }
 
127
    assert_equal(2,subjects.size)
 
128
    model.smush(foaf['mbox'])
 
129
    assert_equal(2,model.subjects(foaf['mbox'],Uri.new('mailto:dom@sisna.com')).size)        
 
130
    
 
131
  end
 
132
 
 
133
  def test_parse_and_merge()
 
134
    store = HashStore.new(hash_type='memory', options="contexts='yes'")
 
135
    model = Model.new(store)
 
136
    dom = BNode.new('dom')
 
137
    model.add(dom,FOAF::MBOX,Node.new(:uri_string=>'mailto:dominic@bogus.com'))
 
138
    model.add(dom,FOAF::NAME,'Dominic Sisneros')
 
139
    parser = Parser.new()
 
140
    model.parse_and_merge(parser,'file:./triples.rdf',[FOAF::MBOX])
 
141
    assert_equal('Electronic Engineer',model.object(dom,FOAF::TITLE).to_s)
 
142
    assert_equal('Sisneros',model.object(dom,FOAF::SURNAME).to_s)
 
143
  end
 
144
end
 
145