"""Low-level matching tests for mx.TextTools"""
import unittest, pprint
from simpleparse.stt.TextTools import *
ab = (
( "ab", Word, "ab", 0 ),
)
cdef = (
( "cd", Word, "cd", 0 ),
( "ef", Word, "ef", 1,1 ),
)
tableList = [ ab, cdef ]
class MXRecursiveTests(unittest.TestCase):
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 )
def testAB( self ):
"""Test AB testing command"""
self.doBasicTest(
ab,
"abcdef",
( 1,[
("ab",0,2,None),
],2),
)
def testCDEF( self ):
"""Test CDEF testing command"""
self.doBasicTest(
cdef,
"cdef",
( 1,[
("cd",0,2,None),
("ef",2,4,None),
],4),
)
def testABCDEF( self ):
"""Test abcdef all together"""
self.doBasicTest(
ab+cdef,
"abcdef",
( 1,[
("ab",0,2,None),
("cd",2,4,None),
("ef",4,6,None),
],6),
)
def testTable1( self ):
"""Test Table command"""
self.doBasicTest(
(
("first", Table, ab),
("second", Table, cdef),
),
"abcdef",
( 1,[
("first",0,2,[
("ab",0,2,None),
]),
("second",2,6,[
("cd",2,4,None),
("ef",4,6,None),
]),
],6),
)
def testTableInList1( self ):
"""Test TableInList command"""
self.doBasicTest(
(
("first", TableInList, (tableList,0)),
("second", TableInList,(tableList,1)),
),
"abcdef",
( 1,[
("first",0,2,[
("ab",0,2,None),
]),
("second",2,6,[
("cd",2,4,None),
("ef",4,6,None),
]),
],6),
)
def testSubTable1( self ):
"""Test SubTable command"""
self.doBasicTest(
(
("first", SubTable, ab),
("second", SubTable, cdef),
),
"abcdef",
( 1,[
("ab",0,2,None),
("first", 0,2, None),
("cd",2,4,None),
("ef",4,6,None),
("second", 2,6, None),
],6),
)
def testSubTable2( self ):
"""Test SubTable command with no reporting of st groups"""
self.doBasicTest(
(
(None, SubTable, ab),
(None, SubTable, cdef),
),
"abcdef",
( 1,[
("ab",0,2,None),
("cd",2,4,None),
("ef",4,6,None),
],6),
)
def testSubTableInList1( self ):
"""Test SubTableInList command"""
self.doBasicTest(
(
("first", SubTableInList, (tableList,0)),
("second", SubTableInList, (tableList,1)),
),
"abcdef",
( 1,[
("ab",0,2,None),
("first", 0,2, None),
("cd",2,4,None),
("ef",4,6,None),
("second", 2,6, None),
],6),
)
def testSubTableNotReturnRecursive( self ):
"""Test that SubTable calls don't return a recursive structure"""
result = tag( "abcdef", (
("first", SubTableInList, (tableList,0)),
("second", SubTableInList, (tableList,1)),
), 0)
assert result [1] is not result[1][1][3], """Subtable results list was the same list as the list enclosing it, looped data structure created"""
def testSubTableInList2( self ):
"""Test SubTable command with no reporting of st groups"""
self.doBasicTest(
(
(None, SubTableInList, (tableList,0)),
(None, SubTableInList, (tableList,1)),
),
"abcdef",
( 1,[
("ab",0,2,None),
("cd",2,4,None),
("ef",4,6,None),
],6),
)
def getSuite():
return unittest.makeSuite(MXRecursiveTests,'test')
if __name__ == "__main__":
unittest.main(defaultTest="getSuite")
|