import pyRXP, traceback, sys
def goodTest(x,t,tb=0,**kw):
try:
P=pyRXP.Parser(**kw)
r = P(x)
rb = 0
except:
et, ev, None = sys.exc_info()
r = '%s %s' % (et.__name__, str(ev))
rb = 1
s = ''
for k,v in kw.items():
s = s+', %s=%s' % (k,str(v))
if type(t) is type(''):
t = t.replace('\r','\\r')
t = t.replace('\n','\\n')
if type(r) is type(''):
r = r.replace('\r','\\r')
r = r.replace('\n','\\n')
print 'Parser(%s)(%s)-->'%(s[2:],repr(x)),r,
if r==t and rb==tb:
print 'OK'
else:
print '!!!!!BAD!!!!! should --> ', t
def failTest(x,t,tb=1,**kw):
goodTest(x,t,tb,**kw)
if __name__=='__main__': #noruntests
if '__doc__' in sys.argv: print pyRXP.__doc__
else:
try:
for k,v in pyRXP.parser_flags.items(): eval('pyRXP.Parser(%s=%d)' % (k,v))
print 'Parser keywords OK'
except:
traceback.print_exc()
print 'Parser keywords BAD'
try:
for k,v in pyRXP.parser_flags.items(): eval('pyRXP.Parser()("",%s=%d)' % (k,v))
print 'Parser().parse keywords OK'
except:
traceback.print_exc()
print 'Parser().parse keywords BAD'
goodTest('',('a', None, [], None))
goodTest('',('a', {}, [], None),ExpandEmpty=1)
goodTest('',['a', None, [], None],MakeMutableTree=1)
goodTest('',('a', None, None, None))
goodTest('',('a', {}, [], None),ExpandEmpty=1)
goodTest('',['a', None, None, None],MakeMutableTree=1)
goodTest('',['a', {}, [], None],ExpandEmpty=1,MakeMutableTree=1)
failTest('',"Error Error: End tag outside of any element\n in unnamed entity at line 1 char 4 of [unknown]\n")
goodTest('A',('a', None, ['A'], None))
goodTest('A',('a', {}, ['A'], None),ExpandEmpty=1)
goodTest('A', ('a', None, ['A', ''], None), ReturnComments=1)
goodTest('A<&>',('a', None, ['A<&>'], None))
goodTest('A<&>',('a', None, ['A', '<', '&', '>'], None), MergePCData=0)
goodTest('',('a', None, None, None),ReturnComments=1)
goodTest('',['',('a', None, None, None)],ReturnComments=1,ReturnList=1)
goodTest('',('a', None, None, None),ReturnComments=1)
failTest('',"Error Unknown declared encoding LATIN-1\nInternal error, ParserPush failed!\n")