"""Low-level matching tests for mx.TextTools"""
import unittest, pprint
from simpleparse.stt.TextTools import *
import string
from simpleparse.stt import TextTools
mxVersion = tuple(string.split( TextTools.__version__, '.')[:3])
from genericvalues import AnyInt,NullResult
class MXLowTests(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 testAllIn1( self ):
"""Test simple AllIn command"""
self.doBasicTest(
(
( "ab", AllIn, "ab", 0 ),
),
"abbaab",
( 1,[("ab",0,6,None)],6),
)
def testAllIn2( self ):
"""Test simple AllIn command ignore fail"""
self.doBasicTest(
(
( "ab", AllIn, "ab", 1,1 ),
),
"c",
( 1,[],0),
)
def testAllIn3( self ):
"""Test simple AllIn command w 2 items"""
self.doBasicTest(
(
( "ab", AllIn, "ab", 1,1 ),
( "c", AllIn, "cde", 0 ),
),
"abbaabccdd",
( 1,[
("ab",0,6,None),
("c",6,10,None),
],10),
)
def testAllIn4( self ):
"""Test simple AllIn command fail on second
This should truncate the results list back to [], as well
as returning 0 as length. This is broken under
mx.TextTools 2.1.0b1!
"""
self.doBasicTest(
(
( "ab", AllIn, "ab", 1,1 ),
( "c", AllIn, "cde", 0 ),
),
"abbaab",
( 0,[
],AnyInt),
)
def testAllIn5( self ):
"""Test simple AllIn command with None tagobj"""
self.doBasicTest(
(
( None, AllIn, "ab", 0 ),
),
"abbaab",
( 1,[],6),
)
def testAllNotIn1( self ):
"""Test simple AllNotIn command"""
self.doBasicTest(
(
( "ab", AllNotIn, "ab", 0 ),
),
"ccddee",
( 1,[("ab",0,6,None)],6),
)
def testAllNotIn2( self ):
"""Test simple AllNotIn command ignore fail"""
self.doBasicTest(
(
( "ab", AllNotIn, "ab", 1,1 ),
),
"a",
( 1,[],0),
)
def testAllNotIn3( self ):
"""Test simple AllNotIn command w 2 items"""
self.doBasicTest(
(
( "ab", AllNotIn, "ab", 1,1 ),
( "c", AllNotIn, "cde", 0 ),
),
"ccddabbaab",
( 1,[
("ab",0,4,None),
("c",4,10,None),
],10),
)
def testIs1( self ):
"""Test simple Is command"""
self.doBasicTest(
(
( "ab", Is, "a", 0 ),
),
"abbaab",
( 1,[("ab",0,1,None)],1),
)
def testIs2( self ):
"""Test simple Is command ignore fail"""
self.doBasicTest(
(
( "ab", Is, "a", 1,1),
),
"c",
( 1,[],0),
)
def testIsIn1( self ):
"""Test simple IsIn command"""
self.doBasicTest(
(
( "ab", IsIn, "ab", 0 ),
),
"abbaab",
( 1,[("ab",0,1,None)],1),
)
def testIsIn2( self ):
"""Test simple IsIn command ignore fail"""
self.doBasicTest(
(
( "ab", IsIn, "ab", 1,1),
),
"c",
( 1,[],0),
)
def testIsNotIn1( self ):
"""Test simple IsNotIn command"""
self.doBasicTest(
(
( "ab", IsNotIn, "ab", 0 ),
),
"ccddee",
( 1,[("ab",0,1,None)],1),
)
def testIsNotIn2( self ):
"""Test simple IsNotIn command ignore fail"""
self.doBasicTest(
(
( "ab", IsNotIn, "ab", 1,1),
),
"abb",
( 1,[],0),
)
def testWord1( self ):
"""Test simple Word command"""
self.doBasicTest(
(
( "ab", Word, "ab", 0 ),
),
"ab",
( 1,[("ab",0,2,None)],2),
)
def testWord2( self ):
"""Test simple Word command ignore fail"""
self.doBasicTest(
(
( "ab", Word, "ab", 1,1),
),
"cd",
( 1,[],0),
)
def testWordStart1( self ):
"""Test simple WordStart command"""
self.doBasicTest(
(
( "ab", WordStart, "ab", 0 ),
),
"ddeeffab",
( 1,[("ab",0,6,None)],6),
)
def testWordStart2( self ):
"""Test simple WordStart command ignore fail"""
self.doBasicTest(
(
( "ab", WordStart, "ab", 1,1),
),
"cdffgg",
( 1,[],0),
)
def testWordEnd1( self ):
"""Test simple WordEnd command"""
self.doBasicTest(
(
( "ab", WordEnd, "ab", 0 ),
),
"ddeeffab",
( 1,[("ab",0,8,None)],8),
)
def testWordEnd2( self ):
"""Test simple WordEnd command ignore fail"""
self.doBasicTest(
(
( "ab", WordEnd, "ab", 1,1),
),
"cdffgg",
( 1,[],0),
)
def testAllInSet1( self ):
"""Test simple AllInSet command"""
self.doBasicTest(
(
( "ab", AllInSet, set("ab"), 0 ),
),
"abbaab",
( 1,[("ab",0,6,None)],6),
)
def testAllInSet2( self ):
"""Test simple AllInSet command ignore fail"""
self.doBasicTest(
(
( "ab", AllInSet, set("ab"), 1,1 ),
),
"c",
( 1,[],0),
)
def testIsInSet1( self ):
"""Test simple IsInSet command"""
self.doBasicTest(
(
( "ab", IsInSet, set("ab"), 0 ),
),
"abbaab",
( 1,[("ab",0,1,None)],1),
)
def testIsInSet2( self ):
"""Test simple IsInSet command ignore fail"""
self.doBasicTest(
(
( "ab", IsInSet, set("ab"), 1,1),
),
"c",
( 1,[],0),
)
if mxVersion >= ('2','1'):
def testIsInCharSet1( self ):
"""Test simple IsInCharSet command"""
self.doBasicTest(
(
( "ab", IsInCharSet, CharSet("ab"), 0 ),
),
"abbaab",
( 1,[("ab",0,1,None)],1),
)
def testIsInCharSet2( self ):
"""Test simple IsInCharSet command ignore fail"""
self.doBasicTest(
(
( "ab", IsInCharSet, CharSet("ab"), 1,1),
),
"c",
( 1,[],0),
)
def testAllInCharSet1( self ):
"""Test simple AllInSet command w/ CharSet object"""
self.doBasicTest(
(
( "ab", AllInCharSet, CharSet("ab"), 0 ),
),
"abbaab",
( 1,[("ab",0,6,None)],6),
)
def testAllInCharSet2( self ):
"""Test simple AllInSet command ignore fail"""
self.doBasicTest(
(
( "ab", AllInCharSet, CharSet("ab"), 1,1),
),
"ccd",
( 1,[],0),
)
def getSuite():
return unittest.makeSuite(MXLowTests,'test')
if __name__ == "__main__":
unittest.main(defaultTest="getSuite")
|