import unittest, pprint
from simpleparse.stt.TextTools import *
import string
from simpleparse.stt import TextTools
mxVersion = tuple(string.split( TextTools.__version__, '.')[:3])
class MXFlagTests(unittest.TestCase):
"""Test Flags for returning/calling different functions on success"""
def doBasicTest(self, table, testvalue, expected, startPosition=0 ):
result = tag( testvalue, table , startPosition)
assert result == expected, '''\n\texpected:%s\n\tgot:%s\n'''%( expected, result )
### Return-type handling tests...
def testCallTag1( self ):
"""Test CallTag"""
def function (parentList, text, l,r,children):
parentList.append( (text[l:r], children) )
self.doBasicTest(
(
( function, AllIn + CallTag, "ab", 0 ),
),
"abbaabccd",
( 1,[
("abbaab",None),
],6),
)
def testCallTag2( self ):
"""Test CallTag with a class instance"""
class A:
def __call__(self, parentList, text, l,r,children):
parentList.append( (text[l:r], children) )
self.doBasicTest(
(
( A(), AllIn + CallTag, "ab", 0 ),
),
"abbaabccd",
( 1,[
("abbaab",None),
],6),
)
def testAppendMatch1( self ):
"""Test AppendMatch"""
def function (parentList, text, l,r,children):
parentList.append( (text[l:r], children) )
self.doBasicTest(
(
( function, AllIn + AppendMatch, "ab", 0 ),
),
"abbaabccd",
( 1,[
"abbaab",
],6),
)
def testAppendToTagobj1( self ):
"""Test AppendToTagobj"""
class X:
successful = ""
def append(self, value):
self.successful = value
tag = X()
self.doBasicTest(
(
( tag, AllIn + AppendToTagobj, "ab", 0 ),
),
"abbaabccd",
( 1,[
],6),
)
assert tag.successful == (None,0,6,None), "TagObject's append was called with %s"%(repr(tag.successful),)
def testAppendToTagobj2( self ):
"""Test AppendToTagobj with a simple list"""
tag = []
self.doBasicTest(
(
( tag, AllIn + AppendToTagobj, "ab", 0 ),
),
"abbaabccd",
( 1,[
],6),
)
assert tag[0] == (None,0,6,None), "TagObject's append was called with %s"%(repr(tag.successful),)
def testAppendTagobj1( self ):
"""Test AppendTagobj"""
self.doBasicTest(
(
( "Hi there world!", AllIn + AppendTagobj, "ab", 0 ),
),
"abbaabccd",
( 1,[
"Hi there world!",
],6),
)
if mxVersion >= ('2','1'):
def testLookAhead1( self ):
"""Test LookAhead"""
self.doBasicTest(
(
( "whatever", AllIn + LookAhead, "ab", 0 ),
),
"abbaabccd",
( 1,[
("whatever",0,6,None),
],0),
)
def testLookAhead2( self ):
"""Test LookAhead"""
self.doBasicTest(
(
( "whatever", AllIn + LookAhead, "ab", 0 ),
( "whatever2", AllIn, "ab", 0 ),
),
"abbaabccd",
( 1,[
("whatever",0,6,None),
("whatever2",0,6,None),
],6),
)
def getSuite():
return unittest.makeSuite(MXFlagTests,'test')
if __name__ == "__main__":
unittest.main(defaultTest="getSuite")
|