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(lex('"foo" "bar"'), 20 [(Lexer.STRING, "foo"), (Lexer.STRING, "bar")]) 21 self.assertRaises(VoltLibError, lambda: lex('"foo\n bar"')) 22 23 def test_name(self): 24 self.assertEqual(lex('DEF_FOO bar.alt1'), 25 [(Lexer.NAME, "DEF_FOO"), (Lexer.NAME, "bar.alt1")]) 26 27 def test_number(self): 28 self.assertEqual(lex("123 -456"), 29 [(Lexer.NUMBER, 123), (Lexer.NUMBER, -456)]) 30 31if __name__ == "__main__": 32 import sys 33 sys.exit(unittest.main()) 34