1a6926d57SMed Ismail Bennani"""
2a6926d57SMed Ismail BennaniTest SBCompileUnit APIs.
3a6926d57SMed Ismail Bennani"""
4a6926d57SMed Ismail Bennani
5a6926d57SMed Ismail Bennaniimport lldb
6a6926d57SMed Ismail Bennanifrom lldbsuite.test.decorators import *
7a6926d57SMed Ismail Bennanifrom lldbsuite.test.lldbtest import *
8a6926d57SMed Ismail Bennanifrom lldbsuite.test import lldbutil
9a6926d57SMed Ismail Bennani
10a6926d57SMed Ismail Bennani
11a6926d57SMed Ismail Bennaniclass CompileUnitAPITestCase(TestBase):
12a6926d57SMed Ismail Bennani
13a6926d57SMed Ismail Bennani    def setUp(self):
14a6926d57SMed Ismail Bennani        TestBase.setUp(self)
15a6926d57SMed Ismail Bennani
16a6926d57SMed Ismail Bennani    def test(self):
17a6926d57SMed Ismail Bennani        """Exercise some SBCompileUnit APIs."""
18a6926d57SMed Ismail Bennani        self.build()
19a6926d57SMed Ismail Bennani
20a6926d57SMed Ismail Bennani        (target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint(self, 'break here', lldb.SBFileSpec('main.c'))
21a6926d57SMed Ismail Bennani        self.assertTrue(target, VALID_TARGET)
22a6926d57SMed Ismail Bennani        self.assertTrue(process, PROCESS_IS_VALID)
23a6926d57SMed Ismail Bennani        self.assertTrue(bkpt and bkpt.GetNumLocations() == 1,
24a6926d57SMed Ismail Bennani                        VALID_BREAKPOINT)
25a6926d57SMed Ismail Bennani
26a6926d57SMed Ismail Bennani        self.assertTrue(
27a6926d57SMed Ismail Bennani            thread.IsValid(),
28a6926d57SMed Ismail Bennani            "There should be a thread stopped due to breakpoint condition")
29a6926d57SMed Ismail Bennani        frame0 = thread.GetFrameAtIndex(0)
30a6926d57SMed Ismail Bennani        line_entry = frame0.GetLineEntry()
31a6926d57SMed Ismail Bennani
32a6926d57SMed Ismail Bennani        sc_list = target.FindCompileUnits(line_entry.GetFileSpec())
33a6926d57SMed Ismail Bennani        self.assertGreater(sc_list.GetSize(), 0)
34a6926d57SMed Ismail Bennani
35a6926d57SMed Ismail Bennani        main_cu = sc_list.compile_units[0]
36a6926d57SMed Ismail Bennani        self.assertTrue(main_cu.IsValid(), "Main executable CU is not valid")
37a6926d57SMed Ismail Bennani
38*174cf2f7SMed Ismail Bennani        self.assertEqual(main_cu.FindLineEntryIndex(line_entry, True),
39a6926d57SMed Ismail Bennani                         main_cu.FindLineEntryIndex(0, line_entry.GetLine(),
40a6926d57SMed Ismail Bennani                                   line_entry.GetFileSpec(), True))
41a6926d57SMed Ismail Bennani
42a6926d57SMed Ismail Bennani
43