annotate sites/all/libraries/ARC2/arc/tests/unit/ARC2_GraphTest.php @ 4:ce11bbd8f642

added modules
author danieleb <danielebarchiesi@me.com>
date Thu, 19 Sep 2013 10:38:44 +0100
parents
children
rev   line source
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 }