1
2from clang.cindex import AccessSpecifier
3from clang.cindex import Cursor
4from clang.cindex import TranslationUnit
5
6from .util import get_cursor
7from .util import get_tu
8
9import unittest
10
11
12class TestAccessSpecifiers(unittest.TestCase):
13    def test_access_specifiers(self):
14        """Ensure that C++ access specifiers are available on cursors"""
15
16        tu = get_tu("""
17class test_class {
18public:
19  void public_member_function();
20protected:
21  void protected_member_function();
22private:
23  void private_member_function();
24};
25""", lang = 'cpp')
26
27        test_class = get_cursor(tu, "test_class")
28        self.assertEqual(test_class.access_specifier, AccessSpecifier.INVALID)
29
30        public = get_cursor(tu.cursor, "public_member_function")
31        self.assertEqual(public.access_specifier, AccessSpecifier.PUBLIC)
32
33        protected = get_cursor(tu.cursor, "protected_member_function")
34        self.assertEqual(protected.access_specifier, AccessSpecifier.PROTECTED)
35
36        private = get_cursor(tu.cursor, "private_member_function")
37        self.assertEqual(private.access_specifier, AccessSpecifier.PRIVATE)
38