1""" 2Test lldb data formatter subsystem. 3""" 4 5 6import lldb 7from lldbsuite.test.decorators import * 8from lldbsuite.test.lldbtest import * 9from lldbsuite.test import lldbutil 10 11 12class TestDataFormatterLibcxxQueue(TestBase): 13 def setUp(self): 14 TestBase.setUp(self) 15 self.namespace = "std" 16 17 def check_variable(self, name): 18 var = self.frame().FindVariable(name) 19 self.assertTrue(var.IsValid()) 20 21 queue = self.namespace + "::queue" 22 self.assertIn(queue, var.GetDisplayTypeName()) 23 self.assertEqual(var.GetNumChildren(), 5) 24 for i in range(5): 25 ch = var.GetChildAtIndex(i) 26 self.assertTrue(ch.IsValid()) 27 self.assertEqual(ch.GetValueAsSigned(), i + 1) 28 29 @expectedFailureAll( 30 bugnumber="llvm.org/pr36109", debug_info="gmodules", triple=".*-android" 31 ) 32 @add_test_categories(["libc++"]) 33 def test(self): 34 """Test that std::queue is displayed correctly""" 35 self.build() 36 lldbutil.run_to_source_breakpoint( 37 self, "// break here", lldb.SBFileSpec("main.cpp", False) 38 ) 39 40 self.check_variable("q1") 41 self.check_variable("q2") 42