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