1*1b4d5b3bSMed Ismail Bennani""" 2*1b4d5b3bSMed Ismail BennaniTest that SBCompileUnit::FindLineEntryIndex works correctly. 3*1b4d5b3bSMed Ismail Bennani""" 4*1b4d5b3bSMed Ismail Bennani 5*1b4d5b3bSMed Ismail Bennaniimport lldb 6*1b4d5b3bSMed Ismail Bennaniimport lldbsuite.test.lldbutil as lldbutil 7*1b4d5b3bSMed Ismail Bennanifrom lldbsuite.test.lldbtest import * 8*1b4d5b3bSMed Ismail Bennani 9*1b4d5b3bSMed Ismail Bennaniclass FindLineEntry(TestBase): 10*1b4d5b3bSMed Ismail Bennani 11*1b4d5b3bSMed Ismail Bennani def test_compile_unit_find_line_entry_index(self): 12*1b4d5b3bSMed Ismail Bennani """ Test the CompileUnit LineEntryIndex lookup API """ 13*1b4d5b3bSMed Ismail Bennani self.build() 14*1b4d5b3bSMed Ismail Bennani exe = self.getBuildArtifact("a.out") 15*1b4d5b3bSMed Ismail Bennani self.target = self.dbg.CreateTarget(exe) 16*1b4d5b3bSMed Ismail Bennani self.assertTrue(self.target.IsValid(), "Target is not valid") 17*1b4d5b3bSMed Ismail Bennani 18*1b4d5b3bSMed Ismail Bennani self.file = lldb.SBFileSpec("main.c") 19*1b4d5b3bSMed Ismail Bennani sc_list = self.target.FindCompileUnits(self.file) 20*1b4d5b3bSMed Ismail Bennani self.assertEqual(len(sc_list), 1) 21*1b4d5b3bSMed Ismail Bennani cu = sc_list[0].GetCompileUnit() 22*1b4d5b3bSMed Ismail Bennani self.assertTrue(cu.IsValid(), "CompileUnit is not valid") 23*1b4d5b3bSMed Ismail Bennani 24*1b4d5b3bSMed Ismail Bennani # First look for valid line 25*1b4d5b3bSMed Ismail Bennani self.line = line_number("main.c", "int change_me") 26*1b4d5b3bSMed Ismail Bennani self.assertNotEqual(cu.FindLineEntryIndex(0, self.line, self.file), 27*1b4d5b3bSMed Ismail Bennani lldb.LLDB_INVALID_LINE_NUMBER) 28*1b4d5b3bSMed Ismail Bennani 29*1b4d5b3bSMed Ismail Bennani # Then look for a line out of bound 30*1b4d5b3bSMed Ismail Bennani self.assertEqual(cu.FindLineEntryIndex(0, 42, self.file), 31*1b4d5b3bSMed Ismail Bennani lldb.LLDB_INVALID_LINE_NUMBER) 32