diff -r 058bb3dc685f -r 0b59724cb3f2 test/unittest_spa2rql.py --- a/test/unittest_spa2rql.py Mon Jan 04 18:40:30 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,224 +0,0 @@ -# copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved. -# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr -# -# This file is part of CubicWeb. -# -# CubicWeb is free software: you can redistribute it and/or modify it under the -# terms of the GNU Lesser General Public License as published by the Free -# Software Foundation, either version 2.1 of the License, or (at your option) -# any later version. -# -# CubicWeb is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more -# details. -# -# You should have received a copy of the GNU Lesser General Public License along -# with CubicWeb. If not, see . -import unittest - -from logilab.common.testlib import TestCase, unittest_main -from cubicweb.devtools import TestServerConfiguration -from cubicweb.xy import xy - -SKIPCAUSE = None -try: - from cubicweb.spa2rql import Sparql2rqlTranslator -except ImportError as exc: - SKIPCAUSE = str(exc) - -xy.add_equivalence('Project', 'doap:Project') -xy.add_equivalence('Project creation_date', 'doap:Project doap:created') -xy.add_equivalence('Project name', 'doap:Project doap:name') -xy.add_equivalence('Project name', 'doap:Project dc:title') - - -config = TestServerConfiguration('data') -config.bootstrap_cubes() -schema = config.load_schema() - - -@unittest.skipIf(SKIPCAUSE, SKIPCAUSE) -class XYTC(TestCase): - def setUp(self): - self.tr = Sparql2rqlTranslator(schema) - - def _test(self, sparql, rql, args={}): - qi = self.tr.translate(sparql) - self.assertEqual(qi.finalize(), (rql, args)) - - def XXX_test_base_01(self): - self._test('SELECT * WHERE { }', 'Any X') - - - def test_base_is(self): - self._test(''' - PREFIX doap: - SELECT ?project - WHERE { - ?project a doap:Project; - }''', 'Any PROJECT WHERE PROJECT is Project') - - def test_base_rdftype(self): - self._test(''' - PREFIX doap: - PREFIX rdf: - SELECT ?project - WHERE { - ?project rdf:type doap:Project. - }''', 'Any PROJECT WHERE PROJECT is Project') - - def test_base_attr_sel(self): - self._test(''' - PREFIX doap: - SELECT ?created - WHERE { - ?project a doap:Project; - doap:created ?created. - }''', 'Any CREATED WHERE PROJECT creation_date CREATED, PROJECT is Project') - - - def test_base_attr_sel_distinct(self): - self._test(''' - PREFIX doap: - SELECT DISTINCT ?name - WHERE { - ?project a doap:Project; - doap:name ?name. - }''', 'DISTINCT Any NAME WHERE PROJECT name NAME, PROJECT is Project') - - - def test_base_attr_sel_reduced(self): - self._test(''' - PREFIX doap: - SELECT REDUCED ?name - WHERE { - ?project a doap:Project; - doap:name ?name. - }''', 'Any NAME WHERE PROJECT name NAME, PROJECT is Project') - - - def test_base_attr_sel_limit_offset(self): - self._test(''' - PREFIX doap: - SELECT ?name - WHERE { - ?project a doap:Project; - doap:name ?name. - } - LIMIT 20''', 'Any NAME LIMIT 20 WHERE PROJECT name NAME, PROJECT is Project') - self._test(''' - PREFIX doap: - SELECT ?name - WHERE { - ?project a doap:Project; - doap:name ?name. - } - LIMIT 20 OFFSET 10''', 'Any NAME LIMIT 20 OFFSET 10 WHERE PROJECT name NAME, PROJECT is Project') - - - def test_base_attr_sel_orderby(self): - self._test(''' - PREFIX doap: - SELECT ?name - WHERE { - ?project a doap:Project; - doap:name ?name; - doap:created ?created. - } - ORDER BY ?name DESC(?created)''', 'Any NAME ORDERBY NAME ASC, CREATED DESC WHERE PROJECT name NAME, PROJECT creation_date CREATED, PROJECT is Project') - - - def test_base_any_attr_sel(self): - self._test(''' - PREFIX dc: - SELECT ?x ?cd - WHERE { - ?x dc:date ?cd; - }''', 'Any X, CD WHERE X creation_date CD') - - - def test_base_any_attr_sel_amb(self): - xy.add_equivalence('Version publication_date', 'doap:Version dc:date') - try: - self._test(''' - PREFIX dc: - SELECT ?x ?cd - WHERE { - ?x dc:date ?cd; - }''', '(Any X, CD WHERE , X creation_date CD) UNION (Any X, CD WHERE , X publication_date CD, X is Version)') - finally: - xy.remove_equivalence('Version publication_date', 'doap:Version dc:date') - - - def test_base_any_attr_sel_amb_limit_offset(self): - xy.add_equivalence('Version publication_date', 'doap:Version dc:date') - try: - self._test(''' - PREFIX dc: - SELECT ?x ?cd - WHERE { - ?x dc:date ?cd; - } - LIMIT 20 OFFSET 10''', 'Any X, CD LIMIT 20 OFFSET 10 WITH X, CD BEING ((Any X, CD WHERE , X creation_date CD) UNION (Any X, CD WHERE , X publication_date CD, X is Version))') - finally: - xy.remove_equivalence('Version publication_date', 'doap:Version dc:date') - - - def test_base_any_attr_sel_amb_orderby(self): - xy.add_equivalence('Version publication_date', 'doap:Version dc:date') - try: - self._test(''' - PREFIX dc: - SELECT ?x ?cd - WHERE { - ?x dc:date ?cd; - } - ORDER BY DESC(?cd)''', 'Any X, CD ORDERBY CD DESC WITH X, CD BEING ((Any X, CD WHERE , X creation_date CD) UNION (Any X, CD WHERE , X publication_date CD, X is Version))') - finally: - xy.remove_equivalence('Version publication_date', 'doap:Version dc:date') - - - def test_restr_attr(self): - self._test(''' - PREFIX doap: - SELECT ?project - WHERE { - ?project a doap:Project; - doap:name "cubicweb". - }''', 'Any PROJECT WHERE PROJECT name %(a)s, PROJECT is Project', {'a': 'cubicweb'}) - - def test_dctitle_both_project_cwuser(self): - self._test(''' - PREFIX doap: - PREFIX dc: - SELECT ?project ?title - WHERE { - ?project a doap:Project; - dc:title ?title. - }''', 'Any PROJECT, TITLE WHERE PROJECT name TITLE, PROJECT is Project') - -# # Two elements in the group -# PREFIX : -# SELECT * -# { :p :q :r OPTIONAL { :a :b :c } -# :p :q :r OPTIONAL { :a :b :c } -# } - -# PREFIX : -# SELECT * -# { -# { ?s ?p ?o } UNION { ?a ?b ?c } -# } - -# PREFIX dob: -# PREFIX time: -# PREFIX dc: -# SELECT ?desc -# WHERE { -# dob:1D a time:ProperInterval; -# dc:description ?desc. -# } - -if __name__ == '__main__': - unittest_main()