1from fontTools.voltLib.error import VoltLibError 2from fontTools.voltLib.lexer import Lexer 3import unittest 4 5 6def lex(s): 7 return [(typ, tok) for (typ, tok, _) in Lexer(s, "test.vtp")] 8 9 10class LexerTest(unittest.TestCase): 11 def __init__(self, methodName): 12 unittest.TestCase.__init__(self, methodName) 13 14 def test_empty(self): 15 self.assertEqual(lex(""), []) 16 self.assertEqual(lex("\t"), []) 17 18 def test_string(self): 19 self.assertEqual( 20 lex('"foo" "bar"'), [(Lexer.STRING, "foo"), (Lexer.STRING, "bar")] 21 ) 22 self.assertRaises(VoltLibError, lambda: lex('"foo\n bar"')) 23 24 def test_name(self): 25 self.assertEqual( 26 lex("DEF_FOO bar.alt1"), [(Lexer.NAME, "DEF_FOO"), (Lexer.NAME, "bar.alt1")] 27 ) 28 29 def test_number(self): 30 self.assertEqual(lex("123 -456"), [(Lexer.NUMBER, 123), (Lexer.NUMBER, -456)]) 31 32 33if __name__ == "__main__": 34 import sys 35 36 sys.exit(unittest.main()) 37