import lldb
from lldbsuite.test.lldbtest import *
from lldbsuite.test.decorators import *
import lldbsuite.test.lldbutil as lldbutil
class TestObjCXXBridgedPO(TestBase):
@skipIfDarwinEmbedded
@skipIf(macos_version=[">=", "13.0"])
def test_bridged_type_po_old(self):
self.build()
lldbutil.run_to_source_breakpoint(
self, "break here", lldb.SBFileSpec("main.mm")
)
self.expect(
"po num",
"did not get the Objective-C object description",
substrs=["CFNumber", "0x", "42"],
)
pointer_val = str(self.frame().FindVariable("num").GetValue())
self.expect(
"po " + pointer_val,
"did not get the Objective-C object description",
substrs=["CFNumber", "0x", "42"],
)
@skipIfDarwinEmbedded
@skipIf(macos_version=["<", "13.0"])
def test_bridged_type_po(self):
"""Starting on macOS 13 CoreFoundation links against Foundation,
so we always get the Foundation object description.
"""
self.build()
lldbutil.run_to_source_breakpoint(
self, "break here", lldb.SBFileSpec("main.mm")
)
self.expect(
"po num", "did not get the Objective-C object description", substrs=["42"]
)
pointer_val = str(self.frame().FindVariable("num").GetValue())
self.expect(
"po " + pointer_val,
"did not get the Objective-C object description",
substrs=["42"],
)