[Checkins] SVN: Sandbox/adamg/ocql/trunk/src/ocql/ add tests to improve code coverage

Charith Paranaliyanage paranaliyanage at gmail.com
Sun Aug 10 23:16:35 EDT 2008


Log message for revision 89624:
  add tests to improve code coverage

Changed:
  U   Sandbox/adamg/ocql/trunk/src/ocql/compiler/compiler.py
  U   Sandbox/adamg/ocql/trunk/src/ocql/database/metadata.py
  U   Sandbox/adamg/ocql/trunk/src/ocql/parser/parser.txt
  U   Sandbox/adamg/ocql/trunk/src/ocql/parser/queryparser.py
  U   Sandbox/adamg/ocql/trunk/src/ocql/queryobject/queryobject.py
  U   Sandbox/adamg/ocql/trunk/src/ocql/rewriter/rewriter.txt
  U   Sandbox/adamg/ocql/trunk/src/ocql/tests/test_zope.py

-=-
Modified: Sandbox/adamg/ocql/trunk/src/ocql/compiler/compiler.py
===================================================================
--- Sandbox/adamg/ocql/trunk/src/ocql/compiler/compiler.py	2008-08-11 02:51:03 UTC (rev 89623)
+++ Sandbox/adamg/ocql/trunk/src/ocql/compiler/compiler.py	2008-08-11 03:16:35 UTC (rev 89624)
@@ -98,7 +98,7 @@
 
     def __call__(self):
         if self.context.func is LambdaCompiler and \
-        self.context.call is set and \
+        self.context.coll is set and \
         self.context.expr is IfCompiler:
 
             if self.context.klass == set:

Modified: Sandbox/adamg/ocql/trunk/src/ocql/database/metadata.py
===================================================================
--- Sandbox/adamg/ocql/trunk/src/ocql/database/metadata.py	2008-08-11 02:51:03 UTC (rev 89623)
+++ Sandbox/adamg/ocql/trunk/src/ocql/database/metadata.py	2008-08-11 03:16:35 UTC (rev 89624)
@@ -94,8 +94,6 @@
                         obj_list = [intids.getObject(result) for result in results]
                         return obj_list
 
-        return None
-
     def getFromIndex(self, klass, property, operator, value):
         catalogs = getUtilitiesFor(ICatalog)
         intids = getUtility(IIntIds)

Modified: Sandbox/adamg/ocql/trunk/src/ocql/parser/parser.txt
===================================================================
--- Sandbox/adamg/ocql/trunk/src/ocql/parser/parser.txt	2008-08-11 02:51:03 UTC (rev 89623)
+++ Sandbox/adamg/ocql/trunk/src/ocql/parser/parser.txt	2008-08-11 03:16:35 UTC (rev 89624)
@@ -11,26 +11,41 @@
     >>> QueryParser("set [ | 1 ]")(None)
     Query(<type 'set'>, , Constant(1))
 
-    #FAILS, why?
     >>> QueryParser("list [ | 1 ]")(None)
     Query(<type 'list'>, , Constant(1))
 
     >>> QueryParser("set [ | 1 ] union set [|2]")(None)
     Union(Query(<type 'set'>, , Constant(1)), Query(<type 'set'>, , Constant(2)))
 
+    >>> QueryParser("list [ | 1 ] union list [|2]")(None)
+    Union(Query(<type 'list'>, , Constant(1)), Query(<type 'list'>, , Constant(2)))
+
     >>> QueryParser("set [ | 1 ] differ set [|2]")(None)
     Differ(Query(<type 'set'>, , Constant(1)), Query(<type 'set'>, , Constant(2)))
 
+    >>> QueryParser("list [ | 1 ] differ list [|2]")(None)
+    Differ(Query(<type 'list'>, , Constant(1)), Query(<type 'list'>, , Constant(2)))
+
     >>> QueryParser("set [ i in ICourse | i ]")(None)
     Query(<type 'set'>, In(Identifier(i), Identifier(ICourse)), Identifier(i))
 
+    >>> QueryParser("list [ i in ICourse | i ]")(None)
+    Query(<type 'list'>, In(Identifier(i), Identifier(ICourse)), Identifier(i))
+
     >>> QueryParser("len ( set [ i in ICourse | i ] )")(None)
     Count(Query(<type 'set'>, In(Identifier(i), Identifier(ICourse)), Identifier(i)))
 
+    >>> QueryParser("len ( list [ i in ICourse | i ] )")(None)
+    Count(Query(<type 'list'>, In(Identifier(i), Identifier(ICourse)), Identifier(i)))
+
     #FAILS, see raise "Help"
     #>>> QueryParser("set [ d in IDepartments; every set [ c in ICourse; some c.runBy == d | c.credits ] == 2 | d.name ]")(None)
 
-    #>>> QueryParser("set [ c in ICourse; c.credits>3 | c.code ]")(None)
+    >>> QueryParser("set [ c in ICourse; c.credits > 3 | c.code ]")(None)
+    Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)); Gt(Property(Identifier(c), Identifier(credits)), Constant(3)), Property(Identifier(c), Identifier(code)))
 
-    #>>> QueryParser("set [ c in ICourse | c.code ]")(None)
-    #Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)), Property(Identifier(c), Identifier(code)))
\ No newline at end of file
+    >>> QueryParser("list [ c in ICourse; c.credits > 3 | c.code ]")(None)
+    Query(<type 'list'>, In(Identifier(c), Identifier(ICourse)); Gt(Property(Identifier(c), Identifier(credits)), Constant(3)), Property(Identifier(c), Identifier(code)))
+
+    >>> QueryParser("set [ c in ICourse | c.code ]")(None)
+    Query(<type 'set'>, In(Identifier(c), Identifier(ICourse)), Property(Identifier(c), Identifier(code)))

Modified: Sandbox/adamg/ocql/trunk/src/ocql/parser/queryparser.py
===================================================================
--- Sandbox/adamg/ocql/trunk/src/ocql/parser/queryparser.py	2008-08-11 02:51:03 UTC (rev 89623)
+++ Sandbox/adamg/ocql/trunk/src/ocql/parser/queryparser.py	2008-08-11 03:16:35 UTC (rev 89624)
@@ -168,7 +168,7 @@
 
 #this may be != sign
     def t_NOT_EQUAL(self, t):
-        r'~=='
+        r'!='
         return t
 
     def t_LT(self, t):
@@ -372,8 +372,13 @@
     def p_qualifier_qualifier(self, t):
         r'''qualifier : qualifier SEMI_COLON qualifier
         '''
-        t[0] = t[0].extend(t[1])
-        t[0] = t[0].extend(t[3])
+        if t[0]:
+            t[0].extend(t[1])
+            t[0].extend(t[3])
+        else:
+            t[0] = t[1]
+            t[0].extend(t[3])
+            
         if DEBUG: print 'reducing "qualifier SEMI_COLON qualifier" to "qualifier"', t[0]
 
 #    def p_qualifier_6(self, t):

Modified: Sandbox/adamg/ocql/trunk/src/ocql/queryobject/queryobject.py
===================================================================
--- Sandbox/adamg/ocql/trunk/src/ocql/queryobject/queryobject.py	2008-08-11 02:51:03 UTC (rev 89623)
+++ Sandbox/adamg/ocql/trunk/src/ocql/queryobject/queryobject.py	2008-08-11 03:16:35 UTC (rev 89624)
@@ -400,6 +400,12 @@
         self.setProp('left', left)
         self.setProp('right', right)
 
+    def __repr__(self):
+        return "%s(%s, %s)" % (
+            self.__class__.__name__,
+            str(self.left), str(self.right)
+            )
+
 class Eq(Condition):
     implements(IEq)
 
@@ -416,4 +422,4 @@
     implements(ILe)
 
 class Ge(Condition):
-    implements(IGe)
\ No newline at end of file
+    implements(IGe)

Modified: Sandbox/adamg/ocql/trunk/src/ocql/rewriter/rewriter.txt
===================================================================
--- Sandbox/adamg/ocql/trunk/src/ocql/rewriter/rewriter.txt	2008-08-11 02:51:03 UTC (rev 89623)
+++ Sandbox/adamg/ocql/trunk/src/ocql/rewriter/rewriter.txt	2008-08-11 03:16:35 UTC (rev 89624)
@@ -58,11 +58,11 @@
     >>> print str(alg)
     Iter(<type 'set'>, Lambda i: Single(<type 'set'>, i), Make(<type 'set'>, <type 'set'>, ICourse))
 
-#    >>> qo = QueryParser("list [ i in ICourse | i ]")(TestMetadata())
-#    >>> opt = QueryOptimizer(qo)()
-#    >>> alg = Rewriter(opt)()
-#    >>> print str(alg)
-#    Iter(<type 'list'>,Lambda i: Single(<type 'list'>,i),Make(<type 'list'>,<type 'list'>,ICourse))
+    >>> qo = QueryParser("list [ i in ICourse | i ]")(TestMetadata())
+    >>> opt = QueryOptimizer(qo)()
+    >>> alg = Rewriter(opt)()
+    >>> print str(alg)
+    Iter(<type 'list'>, Lambda i: Single(<type 'list'>, i), Make(<type 'list'>, <type 'set'>, ICourse))
 
     #>>> qo = QueryParser("set [ c in ICourse; c.credits>3 | c.code ]")(TestMetadata())
     #>>> opt = QueryOptimizer(qo)()
@@ -72,8 +72,3 @@
 
 
     #bag not implemented
-    #>>> qo = QueryParser("size set [ i in ICourse | i ]")(TestMetadata())
-    #>>> opt = QueryOptimizer(qo)()
-    #>>> alg = Rewriter(opt)()
-    #>>> print str(alg)
-    #Iter(<type 'set'>, Lambda i: Single(<type 'set'>, i), Make(<type 'set'>, <type 'set'>, ICourse))

Modified: Sandbox/adamg/ocql/trunk/src/ocql/tests/test_zope.py
===================================================================
--- Sandbox/adamg/ocql/trunk/src/ocql/tests/test_zope.py	2008-08-11 02:51:03 UTC (rev 89623)
+++ Sandbox/adamg/ocql/trunk/src/ocql/tests/test_zope.py	2008-08-11 03:16:35 UTC (rev 89624)
@@ -86,6 +86,22 @@
 
         symbols = SymbolContainer()
         #
+        # Simple empty query
+        #
+        # list [ ]
+        #
+        query = "list [ ]"
+        qo=Head(Query(metadata, symbols,
+                 list,
+                 [] ,
+                 Identifier(metadata, symbols,
+                            '') ))
+
+        self.doit(query, qo, [])
+
+
+        symbols = SymbolContainer()
+        #
         # Simple SELECT ALL
         #
         # set [ c in IStudent | c ]
@@ -171,6 +187,126 @@
         self.doit(query, qo, set([metadata.getFromIndex('IStudent', 'country','==', 'USA')[0].name]))
 
 
+        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')),
+                        Ne(
+                           metadata,symbols,
+                           Identifier(metadata, symbols, 'c.country'),
+                           Identifier(metadata, symbols, '"USA"'))
+                   ], Identifier(metadata, symbols, 'c.name')))
+
+        self.doit(query, qo, set([i.name for i in metadata.getFromIndex('IStudent', 'country','!=', 'USA')]))
+
+
+        symbols = SymbolContainer()
+        #
+        # Filtering --one result using optimization
+        #
+        # set [ c in IStudent , c.country <= "Sri Lanka" | c.name]
+        #
+        query = "[c in IStudent , c.country <= 'Sri Lanka' | c.name]"
+        qo = Head(Query(
+                   metadata, symbols,
+                   set,
+                   [
+                        In(
+                           metadata, symbols,
+                           Identifier(metadata,symbols,'c'),
+                           Identifier(metadata,symbols, 'IStudent')),
+                        Le(
+                           metadata,symbols,
+                           Identifier(metadata, symbols, 'c.country'),
+                           Identifier(metadata, symbols, '"Sri Lanka"'))
+                   ], Identifier(metadata, symbols, 'c.name')))
+
+        self.doit(query, qo, set([i.name for i in metadata.getFromIndex('IStudent', 'country','<=', 'Sri Lanka')]))
+
+
+        symbols = SymbolContainer()
+        #
+        # Filtering --one result using optimization
+        #
+        # set [ c in IStudent , c.country >= "Sri Lanka" | c.name]
+        #
+        query = "[c in IStudent , c.country >= 'Sri Lanka' | c.name]"
+        qo = Head(Query(
+                   metadata, symbols,
+                   set,
+                   [
+                        In(
+                           metadata, symbols,
+                           Identifier(metadata,symbols,'c'),
+                           Identifier(metadata,symbols, 'IStudent')),
+                        Ge(
+                           metadata,symbols,
+                           Identifier(metadata, symbols, 'c.country'),
+                           Identifier(metadata, symbols, '"Sri Lanka"'))
+                   ], Identifier(metadata, symbols, 'c.name')))
+
+        self.doit(query, qo, set([i.name for i in metadata.getFromIndex('IStudent', 'country','>=', 'Sri Lanka')]))
+
+
+        symbols = SymbolContainer()
+        #
+        # Filtering --one result using optimization
+        #
+        # set [ c in IStudent , c.country < "Sri Lanka" | c.name]
+        #
+        query = "[c in IStudent , c.country < 'Sri Lanka' | c.name]"
+        qo = Head(Query(
+                   metadata, symbols,
+                   set,
+                   [
+                        In(
+                           metadata, symbols,
+                           Identifier(metadata,symbols,'c'),
+                           Identifier(metadata,symbols, 'IStudent')),
+                        Lt(
+                           metadata,symbols,
+                           Identifier(metadata, symbols, 'c.country'),
+                           Identifier(metadata, symbols, '"Sri Lanka"'))
+                   ], Identifier(metadata, symbols, 'c.name')))
+
+        self.doit(query, qo, set([i.name for i in metadata.getFromIndex('IStudent', 'country','<', 'Sri Lanka')]))
+
+
+        symbols = SymbolContainer()
+        #
+        # Filtering --one result using optimization
+        #
+        # set [ c in IStudent , c.country > "Sri Lanka" | c.name]
+        #
+        query = "[c in IStudent , c.country > 'Sri Lanka' | c.name]"
+        qo = Head(Query(
+                   metadata, symbols,
+                   set,
+                   [
+                        In(
+                           metadata, symbols,
+                           Identifier(metadata,symbols,'c'),
+                           Identifier(metadata,symbols, 'IStudent')),
+                        Gt(
+                           metadata,symbols,
+                           Identifier(metadata, symbols, 'c.country'),
+                           Identifier(metadata, symbols, '"Sri Lanka"'))
+                   ], Identifier(metadata, symbols, 'c.name')))
+
+        self.doit(query, qo, set([i.name for i in metadata.getFromIndex('IStudent', 'country','>', 'Sri Lanka')]))
+
+
 def test_suite():
     flags =  doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS
     return unittest.TestSuite((



More information about the Checkins mailing list