[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