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