[Checkins] SVN: zope.index/trunk/src/zope/index/text/tests/test_parsetree.py Partial coverage for zope.index.text.parsetree module.
Tres Seaver
tseaver at palladion.com
Wed Jun 10 20:50:46 EDT 2009
Log message for revision 100825:
Partial coverage for zope.index.text.parsetree module.
Changed:
A zope.index/trunk/src/zope/index/text/tests/test_parsetree.py
-=-
Added: zope.index/trunk/src/zope/index/text/tests/test_parsetree.py
===================================================================
--- zope.index/trunk/src/zope/index/text/tests/test_parsetree.py (rev 0)
+++ zope.index/trunk/src/zope/index/text/tests/test_parsetree.py 2009-06-11 00:50:45 UTC (rev 100825)
@@ -0,0 +1,147 @@
+##############################################################################
+#
+# Copyright (c) 2009 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+
+import unittest
+
+class ConformsToIQueryParseTree:
+
+ def test_class_conforms_to_IQueryParseTree(self):
+ from zope.interface.verify import verifyClass
+ from zope.index.text.interfaces import IQueryParseTree
+ verifyClass(IQueryParseTree, self._getTargetClass())
+
+ def test_instance_conforms_to_IQueryParseTree(self):
+ from zope.interface.verify import verifyObject
+ from zope.index.text.interfaces import IQueryParseTree
+ verifyObject(IQueryParseTree, self._makeOne())
+
+class ParseTreeNodeTests(unittest.TestCase, ConformsToIQueryParseTree):
+
+ def _getTargetClass(self):
+ from zope.index.text.parsetree import ParseTreeNode
+ return ParseTreeNode
+
+ def _makeOne(self, value=None):
+ if value is None:
+ value = [FauxValue('XXX')]
+ return self._getTargetClass()(value)
+
+ def test_nodeType(self):
+ node = self._makeOne()
+ self.assertEqual(node.nodeType(), None)
+
+ def test_getValue(self):
+ value = [FauxValue('XXX')]
+ node = self._makeOne(value)
+ self.assertEqual(node.getValue(), value)
+
+ def test___repr__(self):
+ node = self._makeOne()
+ self.assertEqual(repr(node), "ParseTreeNode([FV:XXX])")
+
+ def test_terms(self):
+ node = self._makeOne()
+ self.assertEqual(list(node.terms()), ['XXX'])
+
+ def test_executeQuery_raises(self):
+ node = self._makeOne()
+ self.assertRaises(NotImplementedError, node.executeQuery, FauxIndex())
+
+class NotNodeTests(unittest.TestCase, ConformsToIQueryParseTree):
+
+ def _getTargetClass(self):
+ from zope.index.text.parsetree import NotNode
+ return NotNode
+
+ def _makeOne(self, value=None):
+ if value is None:
+ value = [FauxValue('XXX')]
+ return self._getTargetClass()(value)
+
+ def test_nodeType(self):
+ node = self._makeOne()
+ self.assertEqual(node.nodeType(), 'NOT')
+
+ def test___repr__(self):
+ node = self._makeOne()
+ self.assertEqual(repr(node), "NotNode([FV:XXX])")
+
+ def test_terms(self):
+ node = self._makeOne()
+ self.assertEqual(list(node.terms()), [])
+
+ def test_executeQuery_raises(self):
+ from zope.index.text.parsetree import QueryError
+ node = self._makeOne()
+ self.assertRaises(QueryError, node.executeQuery, FauxIndex())
+
+class AndNodeTests(unittest.TestCase, ConformsToIQueryParseTree):
+
+ def _getTargetClass(self):
+ from zope.index.text.parsetree import AndNode
+ return AndNode
+
+ def _makeOne(self, value=None):
+ if value is None:
+ value = [FauxValue('XXX')]
+ return self._getTargetClass()(value)
+
+ def test_nodeType(self):
+ node = self._makeOne()
+ self.assertEqual(node.nodeType(), 'AND')
+
+ def test___repr__(self):
+ node = self._makeOne()
+ self.assertEqual(repr(node), "AndNode([FV:XXX])")
+
+ def test_executeQuery_no_results(self):
+ from zope.index.text.parsetree import QueryError
+ node = self._makeOne([FauxSubnode('FOO', None)])
+ result = node.executeQuery(FauxIndex())
+ self.assertEqual(dict(result), {})
+
+class FauxIndex(object):
+
+ def _get_family(self):
+ import BTrees
+ return BTrees.family32
+
+ family = property(_get_family,)
+
+class FauxValue:
+ def __init__(self, *terms):
+ self._terms = terms[:]
+ def terms(self):
+ return self._terms
+ def __eq__(self, other):
+ return self._terms == other._terms
+ def __repr__(self):
+ return 'FV:%s' % ' '.join(self._terms)
+
+
+class FauxSubnode:
+ def __init__(self, node_type, query_results):
+ self._nodeType = node_type
+ self._query_results = query_results
+ def nodeType(self):
+ return self._nodeType
+ def executeQuery(self, index):
+ return self._query_results
+
+def test_suite():
+ return unittest.TestSuite((
+ unittest.makeSuite(ParseTreeNodeTests),
+ unittest.makeSuite(NotNodeTests),
+ unittest.makeSuite(AndNodeTests),
+ ))
More information about the Checkins
mailing list