xref: /llvm-project/clang/bindings/python/tests/cindex/test_access_specifiers.py (revision 71cfa381ef8c4fe659c67e8b2901d767e10f2aff)
1import os
2
3from clang.cindex import AccessSpecifier, Config
4
5if "CLANG_LIBRARY_PATH" in os.environ:
6    Config.set_library_path(os.environ["CLANG_LIBRARY_PATH"])
7
8import unittest
9
10from .util import get_cursor, get_tu
11
12
13class TestAccessSpecifiers(unittest.TestCase):
14    def test_access_specifiers(self):
15        """Ensure that C++ access specifiers are available on cursors"""
16
17        tu = get_tu(
18            """
19class test_class {
20public:
21  void public_member_function();
22protected:
23  void protected_member_function();
24private:
25  void private_member_function();
26};
27""",
28            lang="cpp",
29        )
30
31        test_class = get_cursor(tu, "test_class")
32        self.assertEqual(test_class.access_specifier, AccessSpecifier.INVALID)
33
34        public = get_cursor(tu.cursor, "public_member_function")
35        self.assertEqual(public.access_specifier, AccessSpecifier.PUBLIC)
36
37        protected = get_cursor(tu.cursor, "protected_member_function")
38        self.assertEqual(protected.access_specifier, AccessSpecifier.PROTECTED)
39
40        private = get_cursor(tu.cursor, "private_member_function")
41        self.assertEqual(private.access_specifier, AccessSpecifier.PRIVATE)
42