danielebarchiesi@4
|
1 <?php
|
danielebarchiesi@4
|
2
|
danielebarchiesi@4
|
3 require_once '../ARC2_TestCase.php';
|
danielebarchiesi@4
|
4
|
danielebarchiesi@4
|
5 class ARC2_GraphTest extends ARC2_TestCase {
|
danielebarchiesi@4
|
6
|
danielebarchiesi@4
|
7 public function setUp() {
|
danielebarchiesi@4
|
8 $this->obj = ARC2::getGraph();
|
danielebarchiesi@4
|
9 $this->res1 = array(
|
danielebarchiesi@4
|
10 'http://example.com/s1' => array(
|
danielebarchiesi@4
|
11 'http://example.com/p1' => array(
|
danielebarchiesi@4
|
12 array('value' => 'o1', 'type' => 'literal'),
|
danielebarchiesi@4
|
13 array('value' => 'http://example.com/o1', 'type' => 'uri'),
|
danielebarchiesi@4
|
14 ),
|
danielebarchiesi@4
|
15 ),
|
danielebarchiesi@4
|
16 );
|
danielebarchiesi@4
|
17 $this->res2 = array(
|
danielebarchiesi@4
|
18 'http://example.com/s2' => array(
|
danielebarchiesi@4
|
19 'http://example.com/p2' => array(
|
danielebarchiesi@4
|
20 array('value' => 'o2', 'type' => 'literal'),
|
danielebarchiesi@4
|
21 array('value' => 'http://example.com/o2', 'type' => 'uri'),
|
danielebarchiesi@4
|
22 ),
|
danielebarchiesi@4
|
23 ),
|
danielebarchiesi@4
|
24 );
|
danielebarchiesi@4
|
25 $this->res3 = array(
|
danielebarchiesi@4
|
26 'http://example.com/s1' => array(
|
danielebarchiesi@4
|
27 'http://example.com/p3' => array(
|
danielebarchiesi@4
|
28 array('value' => 'o3', 'type' => 'literal'),
|
danielebarchiesi@4
|
29 ),
|
danielebarchiesi@4
|
30 ),
|
danielebarchiesi@4
|
31 );
|
danielebarchiesi@4
|
32 }
|
danielebarchiesi@4
|
33
|
danielebarchiesi@4
|
34 public function testSetIndex() {
|
danielebarchiesi@4
|
35 $actual = $this->obj->setIndex($this->res1);
|
danielebarchiesi@4
|
36 $this->assertSame($this->obj, $actual);
|
danielebarchiesi@4
|
37
|
danielebarchiesi@4
|
38 $actual = $this->obj->getIndex();
|
danielebarchiesi@4
|
39 $this->assertEquals($this->res1, $actual);
|
danielebarchiesi@4
|
40 }
|
danielebarchiesi@4
|
41
|
danielebarchiesi@4
|
42 public function testGetIndex() {
|
danielebarchiesi@4
|
43 $actual = $this->obj->getIndex();
|
danielebarchiesi@4
|
44 $this->assertTrue(is_array($actual), 'should return array');
|
danielebarchiesi@4
|
45 }
|
danielebarchiesi@4
|
46
|
danielebarchiesi@4
|
47 public function testAddIndex() {
|
danielebarchiesi@4
|
48 $actual = $this->obj->addIndex($this->res1);
|
danielebarchiesi@4
|
49 $this->assertSame($this->obj, $actual);
|
danielebarchiesi@4
|
50
|
danielebarchiesi@4
|
51 $actual = $this->obj->getIndex();
|
danielebarchiesi@4
|
52 $this->assertEquals($this->res1, $actual);
|
danielebarchiesi@4
|
53
|
danielebarchiesi@4
|
54 $this->obj->addIndex($this->res1);
|
danielebarchiesi@4
|
55 $actual = $this->obj->getIndex();
|
danielebarchiesi@4
|
56 $this->assertEquals($this->res1, $actual);
|
danielebarchiesi@4
|
57
|
danielebarchiesi@4
|
58 $this->obj->addIndex($this->res2);
|
danielebarchiesi@4
|
59 $actual = $this->obj->getIndex();
|
danielebarchiesi@4
|
60 $this->assertEquals(array_merge($this->res1, $this->res2), $actual);
|
danielebarchiesi@4
|
61
|
danielebarchiesi@4
|
62 $this->obj->addIndex($this->res3);
|
danielebarchiesi@4
|
63 $actual = $this->obj->getIndex();
|
danielebarchiesi@4
|
64 $this->assertEquals(2, count(array_keys($actual['http://example.com/s1'])));
|
danielebarchiesi@4
|
65 $this->assertEquals(1, count(array_keys($actual['http://example.com/s2'])));
|
danielebarchiesi@4
|
66 }
|
danielebarchiesi@4
|
67
|
danielebarchiesi@4
|
68 public function testAddGraph() {
|
danielebarchiesi@4
|
69 $this->obj->addIndex($this->res1);
|
danielebarchiesi@4
|
70 $g2 = ARC2::getGraph()->addIndex($this->res2);
|
danielebarchiesi@4
|
71
|
danielebarchiesi@4
|
72 $actual = $this->obj->addGraph($g2);
|
danielebarchiesi@4
|
73 $this->assertSame($this->obj, $actual);
|
danielebarchiesi@4
|
74
|
danielebarchiesi@4
|
75 $actual = $this->obj->getIndex();
|
danielebarchiesi@4
|
76 $this->assertEquals(array_merge($this->res1, $this->res2), $actual);
|
danielebarchiesi@4
|
77 }
|
danielebarchiesi@4
|
78
|
danielebarchiesi@4
|
79 public function testAddGraphWithNamespaces() {
|
danielebarchiesi@4
|
80 $g2 = ARC2::getGraph()->setPrefix('ex', 'http://example.com/');
|
danielebarchiesi@4
|
81
|
danielebarchiesi@4
|
82 $actual = $this->obj->addGraph($g2);
|
danielebarchiesi@4
|
83 $this->assertArrayHasKey('ex', $actual->ns);
|
danielebarchiesi@4
|
84 }
|
danielebarchiesi@4
|
85
|
danielebarchiesi@4
|
86 public function testAddRdf() {
|
danielebarchiesi@4
|
87 $rdf = $this->obj->toTurtle($this->res1);
|
danielebarchiesi@4
|
88 $this->obj->addRdf($rdf, 'turtle');
|
danielebarchiesi@4
|
89 $actual = $this->obj->getIndex();
|
danielebarchiesi@4
|
90 $this->assertEquals($this->res1, $actual);
|
danielebarchiesi@4
|
91
|
danielebarchiesi@4
|
92 $rdf = json_encode($this->res2);
|
danielebarchiesi@4
|
93 $this->obj->addRdf($rdf, 'json');
|
danielebarchiesi@4
|
94 $actual = $this->obj->getIndex();
|
danielebarchiesi@4
|
95 $this->assertEquals(array_merge($this->res1, $this->res2), $actual);
|
danielebarchiesi@4
|
96 }
|
danielebarchiesi@4
|
97
|
danielebarchiesi@4
|
98 public function testHasSubject() {
|
danielebarchiesi@4
|
99 $actual = $this->obj->setIndex($this->res1);
|
danielebarchiesi@4
|
100 $this->assertTrue($actual->hasSubject('http://example.com/s1'));
|
danielebarchiesi@4
|
101 $this->assertFalse($actual->hasSubject('http://example.com/s2'));
|
danielebarchiesi@4
|
102 }
|
danielebarchiesi@4
|
103
|
danielebarchiesi@4
|
104 public function testHasTriple() {
|
danielebarchiesi@4
|
105 $actual = $this->obj->setIndex($this->res1);
|
danielebarchiesi@4
|
106 $this->assertTrue($actual->hasTriple('http://example.com/s1', 'http://example.com/p1', 'o1'));
|
danielebarchiesi@4
|
107 $this->assertFalse($actual->hasTriple('http://example.com/s1', 'http://example.com/p1', 'o2'));
|
danielebarchiesi@4
|
108 $this->assertTrue($actual->hasTriple('http://example.com/s1', 'http://example.com/p1', array('value' => 'o1', 'type' => 'literal')));
|
danielebarchiesi@4
|
109 $this->assertFalse($actual->hasTriple('http://example.com/s1', 'http://example.com/p1', array('value' => 'o1', 'type' => 'uri')));
|
danielebarchiesi@4
|
110 }
|
danielebarchiesi@4
|
111
|
danielebarchiesi@4
|
112 public function testHasLiteralTriple() {
|
danielebarchiesi@4
|
113 $actual = $this->obj->setIndex($this->res2);
|
danielebarchiesi@4
|
114 $this->assertTrue($actual->hasLiteralTriple('http://example.com/s2', 'http://example.com/p2', 'o2'));
|
danielebarchiesi@4
|
115 $this->assertFalse($actual->hasLiteralTriple('http://example.com/s1', 'http://example.com/p1', 'o2'));
|
danielebarchiesi@4
|
116 }
|
danielebarchiesi@4
|
117
|
danielebarchiesi@4
|
118 public function testHasLinkTriple() {
|
danielebarchiesi@4
|
119 $actual = $this->obj->setIndex($this->res2);
|
danielebarchiesi@4
|
120 $this->assertTrue($actual->hasLinkTriple('http://example.com/s2', 'http://example.com/p2', 'http://example.com/o2'));
|
danielebarchiesi@4
|
121 $this->assertFalse($actual->hasLinkTriple('http://example.com/s2', 'http://example.com/p2', 'o2'));
|
danielebarchiesi@4
|
122 }
|
danielebarchiesi@4
|
123
|
danielebarchiesi@4
|
124 public function testAddTriple() {
|
danielebarchiesi@4
|
125 $actual = $this->obj->addTriple('_:s1', '_:p1', 'o1');
|
danielebarchiesi@4
|
126 $this->assertTrue($actual->hasLiteralTriple('_:s1', '_:p1', 'o1'));
|
danielebarchiesi@4
|
127
|
danielebarchiesi@4
|
128 $actual = $this->obj->addTriple('_:s1', '_:p1', 'o1', 'bnode');
|
danielebarchiesi@4
|
129 $this->assertTrue($actual->hasLinkTriple('_:s1', '_:p1', 'o1'));
|
danielebarchiesi@4
|
130 }
|
danielebarchiesi@4
|
131
|
danielebarchiesi@4
|
132 public function testGetSubjects() {
|
danielebarchiesi@4
|
133 $g = $this->obj->setIndex($this->res1);
|
danielebarchiesi@4
|
134
|
danielebarchiesi@4
|
135 $actual = $g->getSubjects();
|
danielebarchiesi@4
|
136 $this->assertEquals(array('http://example.com/s1'), $actual);
|
danielebarchiesi@4
|
137
|
danielebarchiesi@4
|
138 $actual = $g->getSubjects('p');
|
danielebarchiesi@4
|
139 $this->assertEquals(array(), $actual);
|
danielebarchiesi@4
|
140
|
danielebarchiesi@4
|
141 $actual = $g->getSubjects('http://example.com/p1');
|
danielebarchiesi@4
|
142 $this->assertEquals(array('http://example.com/s1'), $actual);
|
danielebarchiesi@4
|
143
|
danielebarchiesi@4
|
144 $actual = $g->getSubjects(null, 'o');
|
danielebarchiesi@4
|
145 $this->assertEquals(array(), $actual);
|
danielebarchiesi@4
|
146
|
danielebarchiesi@4
|
147 $actual = $g->getSubjects(null, 'o1');
|
danielebarchiesi@4
|
148 $this->assertEquals(array('http://example.com/s1'), $actual);
|
danielebarchiesi@4
|
149
|
danielebarchiesi@4
|
150 $actual = $g->getSubjects(null, array('value' => 'http://example.com/o1', 'type' => 'uri'));
|
danielebarchiesi@4
|
151 $this->assertEquals(array('http://example.com/s1'), $actual);
|
danielebarchiesi@4
|
152
|
danielebarchiesi@4
|
153 $actual = $g->getSubjects('http://example.com/p1', 'o');
|
danielebarchiesi@4
|
154 $this->assertEquals(array(), $actual);
|
danielebarchiesi@4
|
155
|
danielebarchiesi@4
|
156 $actual = $g->getSubjects('http://example.com/p1', 'o1');
|
danielebarchiesi@4
|
157 $this->assertEquals(array('http://example.com/s1'), $actual);
|
danielebarchiesi@4
|
158
|
danielebarchiesi@4
|
159 }
|
danielebarchiesi@4
|
160
|
danielebarchiesi@4
|
161 public function testGetPredicates() {
|
danielebarchiesi@4
|
162 $g = $this->obj->setIndex($this->res1)->addIndex($this->res2);
|
danielebarchiesi@4
|
163
|
danielebarchiesi@4
|
164 $actual = $g->getPredicates();
|
danielebarchiesi@4
|
165 $this->assertEquals(array('http://example.com/p1', 'http://example.com/p2'), $actual);
|
danielebarchiesi@4
|
166
|
danielebarchiesi@4
|
167 $actual = $g->getPredicates('http://example.com/s2');
|
danielebarchiesi@4
|
168 $this->assertEquals(array('http://example.com/p2'), $actual);
|
danielebarchiesi@4
|
169 }
|
danielebarchiesi@4
|
170
|
danielebarchiesi@4
|
171 public function testGetObjects() {
|
danielebarchiesi@4
|
172 $actual = $this->obj->setIndex($this->res1)->getObjects('http://example.com/s1', 'http://example.com/p1', true);
|
danielebarchiesi@4
|
173 $this->assertEmpty(array_diff(array('http://example.com/o1', 'o1'), $actual));
|
danielebarchiesi@4
|
174 $this->assertEmpty(array_diff($actual, array('http://example.com/o1', 'o1')));
|
danielebarchiesi@4
|
175
|
danielebarchiesi@4
|
176 $actual = $this->obj->setIndex($this->res3)->getObjects('http://example.com/s1', 'http://example.com/p3');
|
danielebarchiesi@4
|
177 $this->assertEquals(array(array('value' => 'o3', 'type' => 'literal')), $actual);
|
danielebarchiesi@4
|
178 }
|
danielebarchiesi@4
|
179
|
danielebarchiesi@4
|
180 public function testGetObject() {
|
danielebarchiesi@4
|
181 $actual = $this->obj->setIndex($this->res1)->getObject('http://example.com/s1', 'http://example.com/p1', true);
|
danielebarchiesi@4
|
182 $this->assertEquals('o1', $actual);
|
danielebarchiesi@4
|
183
|
danielebarchiesi@4
|
184 $actual = $this->obj->setIndex($this->res3)->getObject('http://example.com/s1', 'http://example.com/p3');
|
danielebarchiesi@4
|
185 $this->assertEquals(array('value' => 'o3', 'type' => 'literal'), $actual);
|
danielebarchiesi@4
|
186 }
|
danielebarchiesi@4
|
187
|
danielebarchiesi@4
|
188 public function testGetNtriples() {
|
danielebarchiesi@4
|
189 $actual = $this->obj->setIndex($this->res3)->getNTriples();
|
danielebarchiesi@4
|
190 $this->assertContains('<http://example.com/s1> <http://example.com/p3> "o3"', $actual);
|
danielebarchiesi@4
|
191 }
|
danielebarchiesi@4
|
192
|
danielebarchiesi@4
|
193 public function testGetTurtle() {
|
danielebarchiesi@4
|
194 $actual = $this->obj->setIndex($this->res3)->setPrefix('ex', 'http://example.com/')->getTurtle();
|
danielebarchiesi@4
|
195 $this->assertContains('<http://example.com/s1> ex:p3 "o3"', $actual);
|
danielebarchiesi@4
|
196 }
|
danielebarchiesi@4
|
197
|
danielebarchiesi@4
|
198 public function testGetRDFXML() {
|
danielebarchiesi@4
|
199 $actual = $this->obj->setIndex($this->res3)->getRDFXML();
|
danielebarchiesi@4
|
200 $this->assertContains('<rdf:Description rdf:about="http://example.com/s1">', $actual);
|
danielebarchiesi@4
|
201 }
|
danielebarchiesi@4
|
202
|
danielebarchiesi@4
|
203 public function testGetJSON() {
|
danielebarchiesi@4
|
204 $actual = $this->obj->setIndex($this->res3)->getJSON();
|
danielebarchiesi@4
|
205 $this->assertContains('{"http:\/\/example.com\/s1":', $actual);
|
danielebarchiesi@4
|
206 }
|
danielebarchiesi@4
|
207
|
danielebarchiesi@4
|
208 }
|