| """ |
| Test that SBCompileUnit::FindLineEntryIndex works correctly. |
| """ |
| |
| import lldb |
| import lldbsuite.test.lldbutil as lldbutil |
| from lldbsuite.test.lldbtest import * |
| |
| class FindLineEntry(TestBase): |
| |
| mydir = TestBase.compute_mydir(__file__) |
| |
| def test_compile_unit_find_line_entry_index(self): |
| """ Test the CompileUnit LineEntryIndex lookup API """ |
| self.build() |
| exe = self.getBuildArtifact("a.out") |
| self.target = self.dbg.CreateTarget(exe) |
| self.assertTrue(self.target.IsValid(), "Target is not valid") |
| |
| self.file = lldb.SBFileSpec("main.c") |
| sc_list = self.target.FindCompileUnits(self.file) |
| self.assertEqual(len(sc_list), 1) |
| cu = sc_list[0].GetCompileUnit() |
| self.assertTrue(cu.IsValid(), "CompileUnit is not valid") |
| |
| # First look for valid line |
| self.line = line_number("main.c", "int change_me") |
| self.assertNotEqual(cu.FindLineEntryIndex(0, self.line, self.file), |
| lldb.LLDB_INVALID_LINE_NUMBER) |
| |
| # Then look for a line out of bound |
| self.assertEqual(cu.FindLineEntryIndex(0, 42, self.file), |
| lldb.LLDB_INVALID_LINE_NUMBER) |