https://github.com/fenderglass/Ragout
Tip revision: d3f213f733f5d80a62f00d4967b26edb7a06ba72 authored by Mikhail Kolmogorov on 22 March 2015, 19:11:36 UTC
1.1 release
1.1 release
Tip revision: d3f213f
lexertest.py
import unittest
import tokens
from lexer import *
class LexerTest(unittest.TestCase):
''' Test of the Lexer class. '''
def test_tokens(self):
''' Test recognition of tokens. '''
lexer = Lexer("()'foo' bar :0.00,;")
lexer.read_token(tokens.LParen)
lexer.read_token(tokens.RParen)
identifier = lexer.read_token(tokens.ID)
identifier = lexer.read_token(tokens.ID)
lexer.read_token(tokens.Colon)
n = lexer.read_token(tokens.Number)
lexer.read_token(tokens.Comma)
lexer.read_token(tokens.SemiColon)
def test_identifiers(self):
''' Test that identifiers are correctly identified. '''
lexer = Lexer("'foo' bar \"baz\"")
identifier = lexer.read_token(tokens.ID)
self.assertEqual(identifier.get_name(), 'foo')
identifier = lexer.read_token(tokens.ID)
self.assertEqual(identifier.get_name(), 'bar')
identifier = lexer.read_token(tokens.ID)
self.assertEqual(identifier.get_name(), 'baz')
def test_numbers(self):
''' Test that numbers are recognized correctly. '''
lexer = Lexer("0 0.0 0.00 1 1.0 1.11")
n = lexer.read_token(tokens.Number)
self.assertEqual(n.get_number(), 0.00)
test_suite = unittest.makeSuite(LexerTest)
if __name__ == '__main__':
unittest.TextTestRunner(verbosity=2).run(test_suite)