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