[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