199451b44SJordan Rupprecht"""
299451b44SJordan RupprechtTest std::shared_ptr functionality with a class from debug info as content.
399451b44SJordan Rupprecht"""
499451b44SJordan Rupprecht
599451b44SJordan Rupprechtfrom lldbsuite.test.decorators import *
699451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import *
799451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil
899451b44SJordan Rupprecht
9cabee89bSRaphael Isemann
1099451b44SJordan Rupprechtclass TestSharedPtrDbgInfoContent(TestBase):
1199451b44SJordan Rupprecht    @add_test_categories(["libc++"])
1299451b44SJordan Rupprecht    @skipIf(compiler=no_match("clang"))
1399451b44SJordan Rupprecht    def test(self):
1499451b44SJordan Rupprecht        self.build()
1599451b44SJordan Rupprecht
16*2238dcc3SJonas Devlieghere        lldbutil.run_to_source_breakpoint(
17*2238dcc3SJonas Devlieghere            self, "// Set break point at this line.", lldb.SBFileSpec("main.cpp")
18*2238dcc3SJonas Devlieghere        )
1999451b44SJordan Rupprecht
2099451b44SJordan Rupprecht        self.runCmd("settings set target.import-std-module true")
2199451b44SJordan Rupprecht
22*2238dcc3SJonas Devlieghere        self.expect_expr(
23*2238dcc3SJonas Devlieghere            "s",
24cabee89bSRaphael Isemann            result_type="std::shared_ptr<Foo>",
25*2238dcc3SJonas Devlieghere            result_children=[ValueCheck(name="__ptr_")],
26*2238dcc3SJonas Devlieghere        )
27cabee89bSRaphael Isemann        self.expect_expr("s->a", result_type="int", result_value="3")
28cabee89bSRaphael Isemann        self.expect_expr("s->a = 5", result_type="int", result_value="5")
29cabee89bSRaphael Isemann        self.expect_expr("s->a", result_type="int", result_value="5")
30cabee89bSRaphael Isemann        self.expect_expr("(bool)s", result_type="bool", result_value="true")
3199451b44SJordan Rupprecht        self.expect("expr s.reset()")
32cabee89bSRaphael Isemann        self.expect_expr("(bool)s", result_type="bool", result_value="false")
33