[Checkins] SVN: Sandbox/adamg/ocql/trunk/src/ocql/tests/test_metadata.py add test class to test metadata

Charith Paranaliyanage paranaliyanage at gmail.com
Wed Aug 13 01:23:33 EDT 2008


Log message for revision 89781:
  add test class to test metadata

Changed:
  A   Sandbox/adamg/ocql/trunk/src/ocql/tests/test_metadata.py

-=-
Added: Sandbox/adamg/ocql/trunk/src/ocql/tests/test_metadata.py
===================================================================
--- Sandbox/adamg/ocql/trunk/src/ocql/tests/test_metadata.py	                        (rev 0)
+++ Sandbox/adamg/ocql/trunk/src/ocql/tests/test_metadata.py	2008-08-13 05:23:33 UTC (rev 89781)
@@ -0,0 +1,100 @@
+# -*- coding: UTF-8 -*-
+
+import unittest
+import doctest
+
+from zope.component import getUtilitiesFor
+from zope.app.catalog.interfaces import ICatalog
+from zope.component import getUtility, provideAdapter
+from zope.app.intid import IIntIds
+from zope.app.catalog.field import FieldIndex
+
+from ocql.aoptimizer.aoptimizer import AlgebraOptimizer
+from ocql.compiler.compiler import AlgebraCompiler
+from ocql.compiler.compiler import registerAdapters
+from ocql.database import metadata
+from ocql.database.metadata import Metadata
+from ocql.engine import OCQLEngine
+from ocql.interfaces import IDB
+from ocql.parser.queryparser import QueryParser, SymbolContainer
+from ocql.qoptimizer.qoptimizer import QueryOptimizer
+from ocql.queryobject.queryobject import *
+from ocql.rewriter.rewriter import Rewriter
+from ocql.testing.utils import setupInterfaces, setupCatalog
+from ocql.tests.test_old import QueryNullParser
+from ocql.testing.sample.student import Student
+import ocql.compiler.compiler
+import ocql.rewriter.rewriter
+
+class testMetadata(unittest.TestCase):
+    def setUp(self):
+        provideAdapter(QueryParser)
+        provideAdapter(QueryNullParser)
+        provideAdapter(QueryOptimizer)
+        provideAdapter(Rewriter)
+        provideAdapter(AlgebraOptimizer)
+        provideAdapter(AlgebraCompiler)
+        provideAdapter(Metadata)
+        ocql.compiler.compiler.registerAdapters()
+        ocql.rewriter.rewriter.registerAdapters()
+        setupInterfaces(self)
+        setupCatalog(self)
+
+        self.engine = OCQLEngine()
+
+    def compare(self, qo, expected):
+        run = self.engine.compile(qo)
+        self.delete_index()
+        result = run.execute()
+
+        #self.assertEqual(expected, result)
+
+    def test_metadata(self):
+        metadata = IDB(None)
+
+        symbols = SymbolContainer()
+        #
+        # Filtering --one result using optimization
+        #
+        # set [ c in IStudent , c.country="USA" | c.name]
+        #
+        query = "[c in IStudent , c.country=USA | c.name]"
+        qo = Head(Query(
+                   metadata, symbols,
+                   set,
+                   [
+                        In(
+                           metadata, symbols,
+                           Identifier(metadata,symbols,'c'),
+                           Identifier(metadata,symbols, 'IStudent')),
+                        Eq(
+                           metadata,symbols,
+                           Identifier(metadata, symbols, 'c.country'),
+                           Identifier(metadata, symbols, '"USA"'))
+                   ], Identifier(metadata, symbols, 'c.name')))
+
+        self.compare(qo, "Traceback (most recent call last): ....")
+#set([metadata.getFromIndex('IStudent', 'country','==', 'USA')[0].name])
+
+    def delete_index(self):
+        """
+        >>> delete_index()
+        Traceback (most recent call last):
+        ...
+        """
+        metadata = IDB(None)
+        catalogs = getUtilitiesFor(ICatalog)
+        intids = getUtility(IIntIds)
+        for name, catalog in catalogs:
+            for iname, index in catalog.items():
+                if iname == 'student_country':
+                    del catalog[iname]
+
+def test_suite():
+    flags =  doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS
+    return unittest.TestSuite((
+        unittest.makeSuite(testMetadata),
+        ))
+
+if __name__ == '__main__':
+    unittest.main(defaultTest='test_suite')
\ No newline at end of file



More information about the Checkins mailing list