function testResultParser()
 {
     echo "<b>ResultParser tests</b><br/>\n";
     foreach ($_SESSION['sparql_result'] as $name) {
         $_SESSION['test'] = $name . ' test';
         $parser = new SparqlResultParser();
         $qs = file_get_contents(SPARQL_TESTFILES . 'data/' . $name . '.xml', 'r');
         $res = file_get_contents(SPARQL_TESTFILES . 'result/' . $name . '.res', 'r');
         eval($res);
         $q = $parser->parse($qs);
         $this->assertTrue(SparqlTestHelper::resultCheck($q, $result));
     }
 }
 function testParseNested()
 {
     //echo "<b>Nested queries tests</b><br/>\n";
     foreach ($GLOBALS['testSparqlParserTestsNested'] as $arNestedTest) {
         list($query, $strExpected) = $arNestedTest;
         $p = new SparqlParser();
         $q = $p->parse($query);
         $qs = new SparqlEngineDb_QuerySimplifier();
         $qs->simplify($q);
         $strRendResult = SparqlTestHelper::renderResult($q);
         $this->assertEqual($strExpected, $strRendResult);
     }
 }
Example #3
0
 function testArqTestcases()
 {
     foreach ($_SESSION['sparql_arq_tests'] as $name) {
         $_SESSION['test'] = $name['query'] . " test";
         $parser = new SparqlParser();
         $graphset = ModelFactory::getDatasetMem('Dataset1');
         $def = $graphset->getDefaultGraph();
         $def->load(SPARQL_TESTFILES . 'data/' . $name['data']);
         $qs = file_get_contents(SPARQL_TESTFILES . 'query/' . $name['query'] . ".rq", 'r');
         $res = file_get_contents(SPARQL_TESTFILES . 'result/' . $name['result'] . ".res", 'r');
         eval($res);
         $q = $parser->parse($qs);
         $engine = SparqlEngine::factory();
         $t = $engine->queryModel($graphset, $q, false);
         if ($t instanceof MemModel) {
             $bOk = $t->equals($result);
         } else {
             $bOk = SparqlTestHelper::resultCheck($t, $result);
         }
         $this->assertTrue($bOk);
         if (!$bOk) {
             echo $name['query'] . "\n";
         }
     }
 }
 public function testAllTestgroupsNoReload()
 {
     echo "<b>SparqlDbTests</b><br/>\n";
     //prepare
     $parser = new SparqlParser();
     $strLastDataFile = null;
     foreach ($_SESSION['sparqlTestGroups'] as $arGroup) {
         if (isset($arGroup['deact'])) {
             continue;
         }
         //echo count($_SESSION[$arGroup['tests']]) . " tests\n";
         foreach ($_SESSION[$arGroup['tests']] as $name) {
             if (isset($name['type']) && ($name['type'] == 'syntax-negative' || $name['type'] == 'syntax-positive')) {
                 //skip syntax tests; they are run in SparqlParserTests
                 continue;
             }
             $checkfunc = $arGroup['checkfunc'];
             $fileData = null;
             $fileResult = null;
             $fileQuery = null;
             if (is_array($name)) {
                 if (isset($name['data'])) {
                     if (!file_exists(SPARQL_TESTFILES . $name['data'])) {
                         $fileData = 'data/' . $name['data'];
                     } else {
                         $fileData = $name['data'];
                     }
                 }
                 if (!file_exists(SPARQL_TESTFILES . $name['query'])) {
                     $fileQuery = 'query/' . $name['query'] . '.rq';
                 } else {
                     $fileQuery = $name['query'];
                 }
                 if (isset($name['result'])) {
                     if (!file_exists(SPARQL_TESTFILES . $name['result'])) {
                         $fileResult = 'result/' . $name['result'] . '.res';
                     } else {
                         $fileResult = $name['result'];
                     }
                 }
                 if (isset($name['title'])) {
                     $title = $name['title'];
                 } else {
                     $title = $name['query'];
                 }
             } else {
                 $fileData = 'data/' . $name . '.n3';
                 $fileQuery = 'query/' . $name . '.rq';
                 $fileResult = 'result/' . $name . '.res';
                 $title = $name;
             }
             if (in_array($title, $_SESSION['testSparqlDbTestsIgnores'])) {
                 if (isset($GLOBALS['debugTests'])) {
                     echo Console_Color::convert('%y');
                     echo '  ignoring ' . $title . "\n";
                     echo Console_Color::convert('%n');
                 }
                 continue;
             }
             //echo '  ' . $title . "\n";
             $_SESSION['test'] = $title . ' test';
             $e = null;
             if (isset($name['earl:name'])) {
                 //fix some weird issue with simpletest
                 $earlname = $name['earl:name'];
                 $this->signal('earl:name', $earlname);
             }
             if ($fileData != null && $fileData != $strLastDataFile) {
                 //re-use database if not changed
                 list($database, $dbModel) = $this->prepareDatabase();
                 //import statements into database
                 $dbModel->load(SPARQL_TESTFILES . $fileData, 'n3');
                 $strLastDataFile = $fileData;
             }
             $qs = file_get_contents(SPARQL_TESTFILES . $fileQuery);
             if ($fileResult !== null) {
                 $res = file_get_contents(SPARQL_TESTFILES . $fileResult);
                 if (substr($fileResult, -4) == '.srx') {
                     //Sparql XML result
                     $resParser = new SparqlResultParser();
                     $result = $resParser->parse($res);
                 } else {
                     if (substr($fileResult, -4) == '.rdf') {
                         //same format as .ttl, but serialized as xml
                         //rdf xml sorted
                         $resModel = new MemModel();
                         $resModel->load(SPARQL_TESTFILES . $fileResult, 'rdf');
                         $result = SparqlTestHelper::convertModelToResultArray($resModel);
                         unset($resModel);
                         $checkfunc = 'resultCheckSort';
                     } else {
                         if (substr($fileResult, -4) == '.res') {
                             //our own php code
                             unset($result);
                             eval($res);
                         } else {
                             if (substr($fileResult, -4) == '.ttl') {
                                 //N3
                                 $resModel = new MemModel();
                                 $resModel->load(SPARQL_TESTFILES . $fileResult, 'n3');
                                 $result = SparqlTestHelper::convertModelToResultArray($resModel);
                                 unset($resModel);
                             } else {
                                 throw new Exception('Unknown result format in ' . $fileResult);
                             }
                         }
                     }
                 }
             }
             try {
                 $q = $parser->parse($qs);
             } catch (Exception $e) {
                 //normal query failed to be parsed
                 $this->assertTrue(false, 'Query failed to be parsed');
                 if (!isset($GLOBALS['debugTests'])) {
                     //echo '  ' . $title . "\n";
                 } else {
                     echo Console_Color::convert('%RTest failed: ' . $title . "%n\n");
                     if (isset($e)) {
                         echo $e->getMessage() . "\n";
                         //var_dump($e);
                     }
                     echo $strQuery . "\n";
                     die;
                 }
             }
             try {
                 $t = $dbModel->sparqlQuery($qs);
                 if ($t instanceof MemModel) {
                     $bOk = $t->equals($result);
                 } else {
                     $bOk = SparqlTestHelper::$checkfunc($t, $result);
                 }
                 $this->assertTrue($bOk);
             } catch (Exception $e) {
                 $bOk = false;
                 $t = null;
                 //an exception is an error
                 if (isset($GLOBALS['debugTests'])) {
                     var_dump($e->getMessage());
                 }
                 $this->assertTrue(false);
             }
             if (!$bOk) {
                 if (!isset($GLOBALS['debugTests'])) {
                     //echo '  ' . $title . "\n";
                 } else {
                     echo Console_Color::convert('%RTest failed: ' . $title . "%n\n");
                     if ($e != null) {
                         echo get_class($e) . ': ' . $e->getMessage() . "\n";
                     }
                     echo ' Data: ' . $fileData . "\n";
                     echo 'Query string: ' . $qs . "\n";
                     echo "Expected:\n";
                     echo Console_Color::convert('%p');
                     var_dump($result);
                     echo Console_Color::convert('%n');
                     echo "Result:\n";
                     echo Console_Color::convert('%r');
                     var_dump($t);
                     echo Console_Color::convert('%n');
                     //var_dump($q);
                     die;
                 }
             }
             /**/
         }
         //            echo $arGroup['title'] . " done\n";
     }
 }