1import os 2from clang.cindex import Config 3if 'CLANG_LIBRARY_PATH' in os.environ: 4 Config.set_library_path(os.environ['CLANG_LIBRARY_PATH']) 5 6from clang.cindex import TokenKind 7 8import unittest 9 10 11class TestTokenKind(unittest.TestCase): 12 def test_constructor(self): 13 """Ensure TokenKind constructor works as expected.""" 14 15 t = TokenKind(5, 'foo') 16 17 self.assertEqual(t.value, 5) 18 self.assertEqual(t.name, 'foo') 19 20 def test_bad_register(self): 21 """Ensure a duplicate value is rejected for registration.""" 22 23 with self.assertRaises(ValueError): 24 TokenKind.register(2, 'foo') 25 26 def test_unknown_value(self): 27 """Ensure trying to fetch an unknown value raises.""" 28 29 with self.assertRaises(ValueError): 30 TokenKind.from_value(-1) 31 32 def test_registration(self): 33 """Ensure that items registered appear as class attributes.""" 34 self.assertTrue(hasattr(TokenKind, 'LITERAL')) 35 literal = TokenKind.LITERAL 36 37 self.assertIsInstance(literal, TokenKind) 38 39 def test_from_value(self): 40 """Ensure registered values can be obtained from from_value().""" 41 t = TokenKind.from_value(3) 42 self.assertIsInstance(t, TokenKind) 43 self.assertEqual(t, TokenKind.LITERAL) 44 45 def test_repr(self): 46 """Ensure repr() works.""" 47 48 r = repr(TokenKind.LITERAL) 49 self.assertEqual(r, 'TokenKind.LITERAL') 50