199451b44SJordan Rupprecht"""
299451b44SJordan RupprechtDescribe the purpose of the test class here.
399451b44SJordan Rupprecht"""
499451b44SJordan Rupprecht
599451b44SJordan Rupprecht
699451b44SJordan Rupprecht
799451b44SJordan Rupprechtimport lldb
899451b44SJordan Rupprechtimport lldbsuite.test.lldbutil as lldbutil
999451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import *
1099451b44SJordan Rupprecht
1199451b44SJordan Rupprecht
1299451b44SJordan Rupprechtclass RenameThisSampleTestTestCase(TestBase):
1399451b44SJordan Rupprecht
14*c6ad6901SVenkata Ramanaiah Nalamothu    # If your test case doesn't stress debug info, then
1599451b44SJordan Rupprecht    # set this to true.  That way it won't be run once for
1699451b44SJordan Rupprecht    # each debug info format.
1799451b44SJordan Rupprecht    NO_DEBUG_INFO_TESTCASE = True
1899451b44SJordan Rupprecht
1999451b44SJordan Rupprecht    def test_sample_rename_this(self):
2099451b44SJordan Rupprecht        """There can be many tests in a test case - describe this test here."""
2199451b44SJordan Rupprecht        self.build()
2299451b44SJordan Rupprecht        self.main_source_file = lldb.SBFileSpec("main.c")
2399451b44SJordan Rupprecht        self.sample_test()
2499451b44SJordan Rupprecht
2599451b44SJordan Rupprecht    def setUp(self):
2699451b44SJordan Rupprecht        # Call super's setUp().
2799451b44SJordan Rupprecht        TestBase.setUp(self)
2899451b44SJordan Rupprecht        # Set up your test case here. If your test doesn't need any set up then
2999451b44SJordan Rupprecht        # remove this method from your TestCase class.
3099451b44SJordan Rupprecht
3199451b44SJordan Rupprecht    def sample_test(self):
3299451b44SJordan Rupprecht        """You might use the test implementation in several ways, say so here."""
3399451b44SJordan Rupprecht
3499451b44SJordan Rupprecht        # This function starts a process, "a.out" by default, sets a source
3599451b44SJordan Rupprecht        # breakpoint, runs to it, and returns the thread, process & target.
3699451b44SJordan Rupprecht        # It optionally takes an SBLaunchOption argument if you want to pass
3799451b44SJordan Rupprecht        # arguments or environment variables.
3899451b44SJordan Rupprecht        (target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint(self,
3999451b44SJordan Rupprecht                                   "Set a breakpoint here", self.main_source_file)
4099451b44SJordan Rupprecht
4199451b44SJordan Rupprecht        frame = thread.GetFrameAtIndex(0)
4299451b44SJordan Rupprecht        test_var = frame.FindVariable("test_var")
43779bbbf2SDave Lee        self.assertSuccess(test_var.GetError(), "Failed to fetch test_var")
4499451b44SJordan Rupprecht        test_value = test_var.GetValueAsUnsigned()
4599451b44SJordan Rupprecht        self.assertEqual(test_value, 10, "Got the right value for test_var")
4699451b44SJordan Rupprecht
4754c26872SRaphael Isemann    def sample_test_no_launch(self):
4854c26872SRaphael Isemann        """ Same as above but doesn't launch a process."""
4954c26872SRaphael Isemann
5054c26872SRaphael Isemann        target = self.createTestTarget()
515d7c1d8fSRaphael Isemann        self.expect_expr("global_test_var", result_value="10")
52