def testESCAPESTRING(self): case = "''[[test.sql]]''" lexer.input(case) t = lexer.token() self.assertEqual(1, t.lexer.lineno) self.assertEqual('ESCAPESTRING', t.type) self.assertEqual('[[test.sql]]', t.value) case = '''字元塊1''[[test.sql]]'' 字元塊2 ''' lexer.input(case) t = lexer.token() self.assertEqual(1, t.lexer.lineno) self.assertEqual('CBLOCK', t.type) self.assertEqual('字元塊1', t.value) t = lexer.token() self.assertEqual(1, t.lexer.lineno) self.assertEqual('ESCAPESTRING', t.type) self.assertEqual('[[test.sql]]', t.value) # non-greedy test case = """除描述子外''__getattr__'',''__setattr__'' 及''__delattr__''也與屬性的取值有關,建議對應屬性不要為描述子。""" lexer.input(case) t = lexer.token() self.assertEqual(1, t.lexer.lineno) self.assertEqual('CBLOCK', t.type) self.assertEqual('除描述子外', t.value) t = lexer.token() self.assertEqual(1, t.lexer.lineno) self.assertEqual('ESCAPESTRING', t.type) self.assertEqual('__getattr__', t.value) t = lexer.token() self.assertEqual(1, t.lexer.lineno) self.assertEqual('CBLOCK', t.type) self.assertEqual(',', t.value) t = lexer.token() self.assertEqual(1, t.lexer.lineno) self.assertEqual('ESCAPESTRING', t.type) self.assertEqual('__setattr__', t.value) t = lexer.token() self.assertEqual(2, t.lexer.lineno) self.assertEqual('CBLOCK', t.type) self.assertEqual('及', t.value) t = lexer.token() self.assertEqual(2, t.lexer.lineno) self.assertEqual('ESCAPESTRING', t.type) self.assertEqual('__delattr__', t.value)
def testPARA(self): case = '字元塊[[test.sql]]__強調詞__' lexer.input(case) t = lexer.token() self.assertEqual(1, t.lexer.lineno) self.assertEqual('CBLOCK', t.type) self.assertEqual('字元塊', t.value) #import pdb #pdb.set_trace() t = lexer.token() self.assertEqual(1, t.lexer.lineno) self.assertEqual('REFERENCE', t.type) self.assertEqual('test.sql', t.value.address) t = lexer.token() self.assertEqual('EMPHASIS', t.type) self.assertEqual('強調詞', t.value.value)
def testNEWLINE(self): case = '''字元塊1 字元塊2 [[test.sql]] ''' lexer.input(case) t = lexer.token() self.assertEqual(1, t.lexer.lineno) self.assertEqual('CBLOCK', t.type) self.assertEqual('字元塊1', t.value) t = lexer.token() self.assertEqual(2, t.lexer.lineno) self.assertEqual('CBLOCK', t.type) self.assertEqual('字元塊2', t.value) t = lexer.token() self.assertEqual(3, t.lexer.lineno) self.assertEqual('REFERENCE', t.type) self.assertEqual('test.sql', t.value.address)
def testCBLOCK(self): case = r'符號={數字, +, -, *, /}' lexer.input(case) t = lexer.token() self.assertEqual('CBLOCK', t.type)
def testREFERENCE(self): case = '[[test.sql]]' lexer.input(case) t = lexer.token() self.assertEqual(1, t.lexer.lineno) self.assertEqual('REFERENCE', t.type)
class UnitTest(unittest.TestCase): def setUp(self): lexer.begin('INITIAL') lexer.lineno = 1 lexer.sourcefile = '__string__' def testESCAPESTRING(self): case = "''[[test.sql]]''" lexer.input(case) t = lexer.token() self.assertEqual(1, t.lexer.lineno) self.assertEqual('ESCAPESTRING', t.type) self.assertEqual('[[test.sql]]', t.value) case = '''字元塊1''[[test.sql]]'' 字元塊2 ''' lexer.input(case) t = lexer.token() self.assertEqual(1, t.lexer.lineno) self.assertEqual('CBLOCK', t.type) self.assertEqual('字元塊1', t.value) t = lexer.token() self.assertEqual(1, t.lexer.lineno) self.assertEqual('ESCAPESTRING', t.type) self.assertEqual('[[test.sql]]', t.value) # non-greedy test case = """除描述子外''__getattr__'',''__setattr__'' 及''__delattr__''也與屬性的取值有關,建議對應屬性不要為描述子。""" lexer.input(case) t = lexer.token() self.assertEqual(1, t.lexer.lineno) self.assertEqual('CBLOCK', t.type) self.assertEqual('除描述子外', t.value) t = lexer.token() self.assertEqual(1, t.lexer.lineno) self.assertEqual('ESCAPESTRING', t.type) self.assertEqual('__getattr__', t.value) t = lexer.token() self.assertEqual(1, t.lexer.lineno) self.assertEqual('CBLOCK', t.type) self.assertEqual(',', t.value) t = lexer.token() self.assertEqual(1, t.lexer.lineno) self.assertEqual('ESCAPESTRING', t.type) self.assertEqual('__setattr__', t.value) t = lexer.token() self.assertEqual(2, t.lexer.lineno) self.assertEqual('CBLOCK', t.type) self.assertEqual('及', t.value) t = lexer.token() self.assertEqual(2, t.lexer.lineno) self.assertEqual('ESCAPESTRING', t.type) self.assertEqual('__delattr__', t.value)
self.assertEqual('__setattr__', t.value) t = lexer.token() self.assertEqual(2, t.lexer.lineno) self.assertEqual('CBLOCK', t.type) self.assertEqual('及', t.value) t = lexer.token() self.assertEqual(2, t.lexer.lineno) self.assertEqual('ESCAPESTRING', t.type) self.assertEqual('__delattr__', t.value) def testREFERENCE(self): case = '[[test.sql]]' lexer.input(case) t = lexer.token() self.assertEqual(1, t.lexer.lineno) self.assertEqual('REFERENCE', t.type) def testCBLOCK(self): case = r'符號={數字, +, -, *, /}' lexer.input(case) t = lexer.token() self.assertEqual('CBLOCK', t.type) def testNEWLINE(self): case = '''字元塊1 字元塊2 [[test.sql]] ''' lexer.input(case)