public function testConditionBuilderReturnsErrors() { $condition = $this->getMockForAbstractClass('\\SMW\\SPARQLStore\\QueryEngine\\Condition\\Condition'); $connection = $this->getMockBuilder('\\SMW\\SPARQLStore\\RepositoryConnection')->disableOriginalConstructor()->getMockForAbstractClass(); $store = $this->getMockBuilder('\\SMW\\Store')->disableOriginalConstructor()->getMockForAbstractClass(); $compoundConditionBuilder = $this->getMockBuilder('\\SMW\\SPARQLStore\\QueryEngine\\CompoundConditionBuilder')->disableOriginalConstructor()->getMock(); $compoundConditionBuilder->expects($this->any())->method('getErrors')->will($this->returnValue(array('bogus-error'))); $compoundConditionBuilder->expects($this->atLeastOnce())->method('buildCondition')->will($this->returnValue($condition)); $description = $this->getMockForAbstractClass('\\SMW\\Query\\Language\\Description'); $engineOptions = new EngineOptions(); $engineOptions->set('smwgIgnoreQueryErrors', false); $instance = new QueryEngine($connection, $compoundConditionBuilder, new QueryResultFactory($store), $engineOptions); $query = new Query($description); $this->assertInstanceOf('\\SMWQueryResult', $instance->getQueryResult($query)); $this->assertEmpty($instance->getQueryResult($query)->getResults()); $this->assertEquals(array('bogus-error'), $query->getErrors()); }
/** * @since 2.3 * * @param integer $queryFeatureFlag * * @return boolean */ public function canUseQFeature($queryFeatureFlag) { $canUse = true; // Adhere additional condition if ($queryFeatureFlag === SMW_SPARQL_QF_SUBP) { $canUse = $this->engineOptions->get('smwgQSubpropertyDepth') > 0; } if ($queryFeatureFlag === SMW_SPARQL_QF_SUBC) { $canUse = $this->engineOptions->get('smwgQSubcategoryDepth') > 0; } return $this->engineOptions->get('smwgSparqlQFeatures') === ($this->engineOptions->get('smwgSparqlQFeatures') | $queryFeatureFlag) && $canUse; }
/** * Get a SPARQL option array for the given query. * * @param Query $query * @param Condition $compoundCondition (storing order by variable names) * * @return array */ protected function getOptions(Query $query, Condition $compoundCondition) { $result = array('LIMIT' => $query->getLimit() + 1, 'OFFSET' => $query->getOffset()); // Build ORDER BY options using discovered sorting fields. if ($this->engineOptions->get('smwgQSortingSupport')) { $orderByString = ''; foreach ($query->sortkeys as $propkey => $order) { if (!is_string($propkey)) { throw new RuntimeException("Expected a string value as sortkey"); } if ($order != 'RANDOM' && array_key_exists($propkey, $compoundCondition->orderVariables)) { $orderByString .= "{$order}(?" . $compoundCondition->orderVariables[$propkey] . ") "; } elseif ($order == 'RANDOM' && $this->engineOptions->get('smwgQRandSortingSupport')) { // not supported in SPARQL; might be possible via function calls in some stores } } if ($orderByString !== '') { $result['ORDER BY'] = $orderByString; } } return $result; }
public function testUnregisteredKeyThrowsException() { $instance = new EngineOptions(); $this->setExpectedException('InvalidArgumentException'); $instance->get('Foo'); }