danielebarchiesi@4: t('CIA Factbook'), danielebarchiesi@4: 'description' => t('Executes queries against the CIA Factbook\'s SPARQL endpoint, attempting to parse resultsets in both JSON and XML format.'), danielebarchiesi@4: 'group' => t('SPARQL'), danielebarchiesi@4: ); danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: function setup() { danielebarchiesi@4: parent::setup('rdf', 'sparql'); danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: public function test_json_query() { danielebarchiesi@4: $this->query_classes(t('JSON'), array('format' => 'application/sparql-results+json', 'output' => 'json')); danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: public function test_xml_query() { danielebarchiesi@4: $this->query_classes(t('XML'), array('format' => 'application/sparql-results+xml', 'output' => 'xml')); danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: private function query_classes($format, array $options = array()) { danielebarchiesi@4: $results = $this->query('SELECT DISTINCT ?class WHERE { [] a ?class } ORDER BY ?class', $options); danielebarchiesi@4: $this->assertTrue(empty($this->errors), t('@format: No errors', array('@format' => $format))); danielebarchiesi@4: $this->assertNotNull($results, t('@format: Has results', array('@format' => $format))); danielebarchiesi@4: $this->assertEqual(count($results), 1, t('@format: Has one result', array('@format' => $format))); danielebarchiesi@4: $this->assertTrue(isset($results[0]['class']), t('@format: Contains ?class column', array('@format' => $format))); danielebarchiesi@4: $this->assertEqual((string)$results[0]['class'], self::COUNTRY, t('@format: Correct answer', array('@format' => $format))); danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: private function query($query, array $options = array()) { danielebarchiesi@4: $this->errors = array(); danielebarchiesi@4: return sparql_query($query, array_merge(array('endpoint' => self::ENDPOINT), $options), $this->errors); danielebarchiesi@4: } danielebarchiesi@4: }