2 Test lldb data formatter subsystem.
5 from __future__ import print_function
11 from lldbsuite.test.decorators import *
12 from lldbsuite.test.lldbtest import *
13 from lldbsuite.test import lldbutil
16 class LibCxxAtomicTestCase(TestBase):
18 mydir = TestBase.compute_mydir(__file__)
20 def get_variable(self, name):
21 var = self.frame().FindVariable(name)
22 var.SetPreferDynamicValue(lldb.eDynamicCanRunTarget)
23 var.SetPreferSyntheticValue(True)
26 @skipIf(compiler=["gcc"])
27 @add_test_categories(["libc++"])
29 """Test that std::atomic as defined by libc++ is correctly printed by LLDB"""
31 self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET)
33 bkpt = self.target().FindBreakpointByID(
34 lldbutil.run_break_set_by_source_regexp(
35 self, "Set break point at this line."))
37 self.runCmd("run", RUN_SUCCEEDED)
39 lldbutil.skip_if_library_missing(
40 self, self.target(), lldbutil.PrintableRegex("libc\+\+"))
42 # The stop reason of the thread should be breakpoint.
43 self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,
45 'stop reason = breakpoint'])
47 s = self.get_variable('s')
48 i = self.get_variable('i')
55 self.assertTrue(i.GetValueAsUnsigned(0) == 5, "i == 5")
56 self.assertTrue(s.GetNumChildren() == 2, "s has two children")
58 s.GetChildAtIndex(0).GetValueAsUnsigned(0) == 1,
61 s.GetChildAtIndex(1).GetValueAsUnsigned(0) == 2,