"""Tests for SOX"""
from unittest import TestCase, makeSuite, TestSuite
from cStringIO import StringIO
from xml.sax import InputSource
from peak.util import SOX
def stream(str):
inpsrc = InputSource()
inpsrc.setByteStream(StringIO(str))
return inpsrc
class SOXTest(TestCase):
text = ""
useNS = False
def setUp(self):
self.object = ob = SOX.load(stream(self.text), namespaces=self.useNS)
self.de = ob.documentElement
class Simple(SOXTest):
text = """TEXT"""
def checkTop(self):
assert self.de._name == 'top'
def checkNodelist(self):
object = self.object
top = object._get('top')
assert len(top)==1
assert object.top is top
def checkText(self):
t = []
for n in self.de._allNodes:
if n == str(n): t.append(n)
assert ''.join(t) == 'TEXT'
def checkAttrs(self):
assert self.de.foo=='bar'
assert self.de.baz=='spam'
class NSTest(SOXTest):
text = """
[0]
[1]
[2]
"""
useNS = True
def checkModel(self):
node = self.de._subNodes[1]
assert node.ns2uri['Model']=='http://omg.org/MOF/1.3'
node = self.de._subNodes[2]
assert 'Model' not in node.ns2uri
assert node.ns2uri[''] == "www.zope.org"
TestClasses = (
Simple, NSTest
)
def test_suite():
s = []
for t in TestClasses:
s.append(makeSuite(t,'check'))
return TestSuite(s)