Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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)
Пример #4
0
 def testCBLOCK(self):
     case = r'符號={數字, +, -, *, /}'
     lexer.input(case)
     t = lexer.token()
     self.assertEqual('CBLOCK', t.type)
Пример #5
0
 def testREFERENCE(self):
     case = '[[test.sql]]'
     lexer.input(case)
     t = lexer.token()
     self.assertEqual(1, t.lexer.lineno)
     self.assertEqual('REFERENCE', t.type)
Пример #6
0
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)
Пример #7
0
        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)