|
Packit Service |
b74dd5 |
# -*- coding: utf-8 -*-
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
"""
|
|
Packit Service |
b74dd5 |
Tests specific to the Python based class lookup.
|
|
Packit Service |
b74dd5 |
"""
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
import unittest, operator, os.path, sys
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
this_dir = os.path.dirname(__file__)
|
|
Packit Service |
b74dd5 |
if this_dir not in sys.path:
|
|
Packit Service |
b74dd5 |
sys.path.insert(0, this_dir) # needed for Py3
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
from common_imports import etree, StringIO, HelperTestCase, fileInTestDir
|
|
Packit Service |
b74dd5 |
from common_imports import SillyFileLike, canonicalize, doctest, _bytes
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
from lxml.etree import PythonElementClassLookup
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
xml_str = _bytes('''\
|
|
Packit Service |
b74dd5 |
<obj:root xmlns:obj="objectified" xmlns:other="otherNS">
|
|
Packit Service |
b74dd5 |
<obj:c1 a1="A1" a2="A2" other:a3="A3">
|
|
Packit Service |
b74dd5 |
<obj:c2>0</obj:c2>
|
|
Packit Service |
b74dd5 |
<obj:c2>1</obj:c2>
|
|
Packit Service |
b74dd5 |
<obj:c2>2</obj:c2>
|
|
Packit Service |
b74dd5 |
<other:c2>3</other:c2>
|
|
Packit Service |
b74dd5 |
<c2>3</c2>
|
|
Packit Service |
b74dd5 |
</obj:c1>
|
|
Packit Service |
b74dd5 |
</obj:root>''')
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
class PyClassLookupTestCase(HelperTestCase):
|
|
Packit Service |
b74dd5 |
"""Test cases for the lxml.pyclasslookup class lookup mechanism.
|
|
Packit Service |
b74dd5 |
"""
|
|
Packit Service |
b74dd5 |
etree = etree
|
|
Packit Service |
b74dd5 |
parser = etree.XMLParser()
|
|
Packit Service |
b74dd5 |
Element = parser.makeelement
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def tearDown(self):
|
|
Packit Service |
b74dd5 |
self.parser.set_element_class_lookup(None)
|
|
Packit Service |
b74dd5 |
super(PyClassLookupTestCase, self).tearDown()
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def _setClassLookup(self, lookup_function):
|
|
Packit Service |
b74dd5 |
class Lookup(PythonElementClassLookup):
|
|
Packit Service |
b74dd5 |
def lookup(self, *args):
|
|
Packit Service |
b74dd5 |
return lookup_function(*args)
|
|
Packit Service |
b74dd5 |
self.parser.set_element_class_lookup( Lookup() )
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def _buildElementClass(self):
|
|
Packit Service |
b74dd5 |
class LocalElement(etree.ElementBase):
|
|
Packit Service |
b74dd5 |
pass
|
|
Packit Service |
b74dd5 |
return LocalElement
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def XML(self, xml):
|
|
Packit Service |
b74dd5 |
return self.etree.XML(xml, self.parser)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
# --- Test cases
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
el_class.i = 1
|
|
Packit Service |
b74dd5 |
def lookup(*args):
|
|
Packit Service |
b74dd5 |
if el_class.i == 1:
|
|
Packit Service |
b74dd5 |
el_class.i = 2
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
self.assertEqual(2, el_class.i)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup_keep_ref_assertion(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
el_class.EL = None
|
|
Packit Service |
b74dd5 |
def lookup(doc, el):
|
|
Packit Service |
b74dd5 |
if el_class.EL is None:
|
|
Packit Service |
b74dd5 |
el_class.EL = el
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
self.assertNotEqual(None, el_class.EL)
|
|
Packit Service |
b74dd5 |
self.assertRaises(ReferenceError, el_class.EL.getchildren)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup_tag(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
el_class.TAG = None
|
|
Packit Service |
b74dd5 |
def lookup(doc, el):
|
|
Packit Service |
b74dd5 |
if el_class.TAG is None:
|
|
Packit Service |
b74dd5 |
el_class.TAG = el.tag
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
self.assertNotEqual(None, root.TAG)
|
|
Packit Service |
b74dd5 |
self.assertEqual(root.tag, root.TAG)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup_text(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
el_class.TEXT = None
|
|
Packit Service |
b74dd5 |
def lookup(doc, el):
|
|
Packit Service |
b74dd5 |
if el_class.TEXT is None:
|
|
Packit Service |
b74dd5 |
el_class.TEXT = el.text
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
self.assertNotEqual(None, root.TEXT)
|
|
Packit Service |
b74dd5 |
self.assertEqual(root.text, root.TEXT)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup_tail(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
el_class.TAIL = None
|
|
Packit Service |
b74dd5 |
def lookup(doc, el):
|
|
Packit Service |
b74dd5 |
if el_class.TAIL is None:
|
|
Packit Service |
b74dd5 |
el_class.TAIL = el.tail
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
self.assertEqual(root.tail, root.TAIL)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup_attrib(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
el_class.ATTRIB = None
|
|
Packit Service |
b74dd5 |
def lookup(doc, el):
|
|
Packit Service |
b74dd5 |
if el_class.ATTRIB is None:
|
|
Packit Service |
b74dd5 |
el_class.ATTRIB = el[0].attrib
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
items1 = list(root[0].attrib.items())
|
|
Packit Service |
b74dd5 |
items1.sort()
|
|
Packit Service |
b74dd5 |
items2 = list(root.ATTRIB.items())
|
|
Packit Service |
b74dd5 |
items2.sort()
|
|
Packit Service |
b74dd5 |
self.assertEqual(items1, items2)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup_prefix(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
el_class.PREFIX = None
|
|
Packit Service |
b74dd5 |
def lookup(doc, el):
|
|
Packit Service |
b74dd5 |
if el_class.PREFIX is None:
|
|
Packit Service |
b74dd5 |
el_class.PREFIX = el.prefix
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
self.assertEqual(root.prefix, root.PREFIX)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup_sourceline(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
el_class.LINE = None
|
|
Packit Service |
b74dd5 |
def lookup(doc, el):
|
|
Packit Service |
b74dd5 |
if el_class.LINE is None:
|
|
Packit Service |
b74dd5 |
el_class.LINE = el.sourceline
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
self.assertEqual(root.sourceline, root.LINE)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup_getitem(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
el_class.CHILD_TAG = None
|
|
Packit Service |
b74dd5 |
def lookup(doc, el):
|
|
Packit Service |
b74dd5 |
el_class.CHILD_TAG = el[0].tag
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
child_tag = root.CHILD_TAG
|
|
Packit Service |
b74dd5 |
self.assertNotEqual(None, child_tag)
|
|
Packit Service |
b74dd5 |
self.assertEqual(root[0].tag, child_tag)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup_getitem_neg(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
el_class.CHILD_TAG = None
|
|
Packit Service |
b74dd5 |
def lookup(doc, el):
|
|
Packit Service |
b74dd5 |
if el_class.CHILD_TAG is None:
|
|
Packit Service |
b74dd5 |
el_class.CHILD_TAG = el[-1].tag
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
child_tag = root.CHILD_TAG
|
|
Packit Service |
b74dd5 |
self.assertNotEqual(None, child_tag)
|
|
Packit Service |
b74dd5 |
self.assertEqual(root[-1].tag, child_tag)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup_getslice(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
el_class.CHILD_TAGS = None
|
|
Packit Service |
b74dd5 |
def lookup(doc, el):
|
|
Packit Service |
b74dd5 |
if el_class.CHILD_TAGS is None:
|
|
Packit Service |
b74dd5 |
el_class.CHILD_TAGS = [ c.tag for c in el[1:-1] ]
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
child_tags = root.CHILD_TAGS
|
|
Packit Service |
b74dd5 |
self.assertNotEqual(None, child_tags)
|
|
Packit Service |
b74dd5 |
self.assertEqual([ c.tag for c in root[1:-1] ],
|
|
Packit Service |
b74dd5 |
child_tags)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup_len(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
el_class.LEN = None
|
|
Packit Service |
b74dd5 |
def lookup(doc, el):
|
|
Packit Service |
b74dd5 |
if el_class.LEN is None:
|
|
Packit Service |
b74dd5 |
el_class.LEN = len(el)
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
self.assertEqual(1, el_class.LEN)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup_bool(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
el_class.TRUE = None
|
|
Packit Service |
b74dd5 |
def lookup(doc, el):
|
|
Packit Service |
b74dd5 |
if el_class.TRUE is None:
|
|
Packit Service |
b74dd5 |
el_class.TRUE = bool(el)
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
self.assertTrue(el_class.TRUE)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup_get(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
el_class.VAL = None
|
|
Packit Service |
b74dd5 |
def lookup(doc, el):
|
|
Packit Service |
b74dd5 |
if el_class.VAL is None:
|
|
Packit Service |
b74dd5 |
el_class.VAL = el[0].get('a1')
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
self.assertNotEqual(None, el_class.VAL)
|
|
Packit Service |
b74dd5 |
self.assertEqual(root[0].get('a1'), el_class.VAL)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup_get_default(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
default = str(id(el_class))
|
|
Packit Service |
b74dd5 |
el_class.VAL = None
|
|
Packit Service |
b74dd5 |
def lookup(doc, el):
|
|
Packit Service |
b74dd5 |
if el_class.VAL is None:
|
|
Packit Service |
b74dd5 |
el_class.VAL = el[0].get('unknownattribute', default)
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
self.assertEqual(default, el_class.VAL)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup_getchildren(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
el_class.CHILD_TAGS = None
|
|
Packit Service |
b74dd5 |
def lookup(doc, el):
|
|
Packit Service |
b74dd5 |
if el_class.CHILD_TAGS is None:
|
|
Packit Service |
b74dd5 |
el_class.CHILD_TAGS = [ c.tag for c in el.getchildren() ]
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
child_tags = root.CHILD_TAGS
|
|
Packit Service |
b74dd5 |
self.assertNotEqual(None, child_tags)
|
|
Packit Service |
b74dd5 |
self.assertEqual([ c.tag for c in root.getchildren() ],
|
|
Packit Service |
b74dd5 |
child_tags)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup_iter_children(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
el_class.CHILD_TAGS = None
|
|
Packit Service |
b74dd5 |
def lookup(doc, el):
|
|
Packit Service |
b74dd5 |
if el_class.CHILD_TAGS is None:
|
|
Packit Service |
b74dd5 |
el_class.CHILD_TAGS = [ c.tag for c in el ]
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
child_tags = root.CHILD_TAGS
|
|
Packit Service |
b74dd5 |
self.assertNotEqual(None, child_tags)
|
|
Packit Service |
b74dd5 |
self.assertEqual([ c.tag for c in root.getchildren() ],
|
|
Packit Service |
b74dd5 |
child_tags)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup_iterchildren(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
el_class.CHILD_TAGS = None
|
|
Packit Service |
b74dd5 |
def lookup(doc, el):
|
|
Packit Service |
b74dd5 |
if el_class.CHILD_TAGS is None:
|
|
Packit Service |
b74dd5 |
el_class.CHILD_TAGS = [ c.tag for c in el.iterchildren() ]
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
child_tags = root.CHILD_TAGS
|
|
Packit Service |
b74dd5 |
self.assertNotEqual(None, child_tags)
|
|
Packit Service |
b74dd5 |
self.assertEqual([ c.tag for c in root.getchildren() ],
|
|
Packit Service |
b74dd5 |
child_tags)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup_iterchildren_tag(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
el_class.CHILD_TAGS = None
|
|
Packit Service |
b74dd5 |
def lookup(doc, el):
|
|
Packit Service |
b74dd5 |
if not el_class.CHILD_TAGS:
|
|
Packit Service |
b74dd5 |
el_class.CHILD_TAGS = [
|
|
Packit Service |
b74dd5 |
c.tag for c in el.iterchildren(tag='{objectified}c2') ]
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
child_tags = root.CHILD_TAGS
|
|
Packit Service |
b74dd5 |
self.assertNotEqual(None, child_tags)
|
|
Packit Service |
b74dd5 |
self.assertEqual([], child_tags)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
c1 = root[0]
|
|
Packit Service |
b74dd5 |
child_tags = root.CHILD_TAGS
|
|
Packit Service |
b74dd5 |
self.assertNotEqual(None, child_tags)
|
|
Packit Service |
b74dd5 |
self.assertNotEqual([], child_tags)
|
|
Packit Service |
b74dd5 |
self.assertEqual(
|
|
Packit Service |
b74dd5 |
[ c.tag for c in root[0].iterchildren(tag='{objectified}c2') ],
|
|
Packit Service |
b74dd5 |
child_tags)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup_getparent(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
el_class.PARENT = None
|
|
Packit Service |
b74dd5 |
def lookup(doc, el):
|
|
Packit Service |
b74dd5 |
if el_class.PARENT is None:
|
|
Packit Service |
b74dd5 |
el_class.PARENT = el[0].getparent().tag
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
self.assertEqual(root.tag, root.PARENT)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup_getnext(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
el_class.NEXT = None
|
|
Packit Service |
b74dd5 |
def lookup(doc, el):
|
|
Packit Service |
b74dd5 |
if el_class.NEXT is None:
|
|
Packit Service |
b74dd5 |
el_class.NEXT = el[0][1].getnext().tag
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
self.assertNotEqual(None, el_class.NEXT)
|
|
Packit Service |
b74dd5 |
self.assertEqual(root[0][1].getnext().tag, el_class.NEXT)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_lookup_getprevious(self):
|
|
Packit Service |
b74dd5 |
el_class = self._buildElementClass()
|
|
Packit Service |
b74dd5 |
el_class.PREV = None
|
|
Packit Service |
b74dd5 |
def lookup(doc, el):
|
|
Packit Service |
b74dd5 |
if el_class.PREV is None:
|
|
Packit Service |
b74dd5 |
el_class.PREV = el[0][1].getprevious().tag
|
|
Packit Service |
b74dd5 |
return el_class
|
|
Packit Service |
b74dd5 |
self._setClassLookup(lookup)
|
|
Packit Service |
b74dd5 |
root = self.XML(xml_str)
|
|
Packit Service |
b74dd5 |
self.assertNotEqual(None, el_class.PREV)
|
|
Packit Service |
b74dd5 |
self.assertEqual(root[0][1].getprevious().tag, el_class.PREV)
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_comments_fallback(self):
|
|
Packit Service |
b74dd5 |
def return_none(*args):
|
|
Packit Service |
b74dd5 |
return None
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
self._setClassLookup(return_none)
|
|
Packit Service |
b74dd5 |
el = self.XML('')
|
|
Packit Service |
b74dd5 |
self.assertEqual(el[0].tag, self.etree.Comment)
|
|
Packit Service |
b74dd5 |
self.assertEqual(el[0].text, " hello world ")
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
def test_suite():
|
|
Packit Service |
b74dd5 |
suite = unittest.TestSuite()
|
|
Packit Service |
b74dd5 |
suite.addTests([unittest.makeSuite(PyClassLookupTestCase)])
|
|
Packit Service |
b74dd5 |
return suite
|
|
Packit Service |
b74dd5 |
|
|
Packit Service |
b74dd5 |
if __name__ == '__main__':
|
|
Packit Service |
b74dd5 |
print('to test use test.py %s' % __file__)
|