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