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