brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · 95aaa8e Raw
84 lines · python
1"""2Tests std::queue functionality.3"""4 5from lldbsuite.test.decorators import *6from lldbsuite.test.lldbtest import *7from lldbsuite.test import lldbutil8 9 10class TestQueue(TestBase):11    @add_test_categories(["libc++"])12    @skipIf(compiler=no_match("clang"))13    @skipIf(14        compiler="clang",15        compiler_version=[">", "16.0"],16        bugnumber="https://github.com/llvm/llvm-project/issues/68968",17    )18    @skipIf(19        compiler="clang",20        compiler_version=["<", "17.0"],21    )22    def test(self):23        self.build()24 25        lldbutil.run_to_source_breakpoint(26            self, "// Set break point at this line.", lldb.SBFileSpec("main.cpp")27        )28 29        self.runCmd("settings set target.import-std-module true")30 31        if self.expectedCompiler(["clang"]) and self.expectedCompilerVersion(32            [">", "16.0"]33        ):34            queue_type = "std::queue<C>"35        else:36            queue_type = "std::queue<C, std::deque<C, std::allocator<C> > >"37 38        size_type = "size_type"39        value_type = "value_type"40 41        # Test std::queue functionality with a std::deque.42        self.expect_expr(43            "q_deque",44            result_type=queue_type,45            result_children=[ValueCheck(children=[ValueCheck(value="1")])],46        )47        self.expect("expr q_deque.pop()")48        self.expect("expr q_deque.push({4})")49        self.expect_expr("q_deque.size()", result_type=size_type, result_value="1")50        self.expect_expr("q_deque.front()", result_type=value_type)51        self.expect_expr("q_deque.back()", result_type=value_type)52        self.expect_expr("q_deque.front().i", result_type="int", result_value="4")53        self.expect_expr("q_deque.back().i", result_type="int", result_value="4")54        self.expect_expr("q_deque.empty()", result_type="bool", result_value="false")55        self.expect("expr q_deque.pop()")56        self.expect("expr q_deque.emplace(5)")57        self.expect_expr("q_deque.front().i", result_type="int", result_value="5")58 59        # Test std::queue functionality with a std::list.60        if self.expectedCompiler(["clang"]) and self.expectedCompilerVersion(61            [">", "16.0"]62        ):63            queue_type = "std::queue<C, std::list<C> >"64        else:65            queue_type = "std::queue<C, std::list<C, std::allocator<C> > >"66 67        self.expect_expr(68            "q_list",69            result_type=queue_type,70            result_children=[ValueCheck(children=[ValueCheck(value="1")])],71        )72 73        self.expect("expr q_list.pop()")74        self.expect("expr q_list.push({4})")75        self.expect_expr("q_list.size()", result_type=size_type, result_value="1")76        self.expect_expr("q_list.front()", result_type=value_type)77        self.expect_expr("q_list.back()", result_type=value_type)78        self.expect_expr("q_list.front().i", result_type="int", result_value="4")79        self.expect_expr("q_list.back().i", result_type="int", result_value="4")80        self.expect_expr("q_list.empty()", result_type="bool", result_value="false")81        self.expect("expr q_list.pop()")82        self.expect("expr q_list.emplace(5)")83        self.expect_expr("q_list.front().i", result_type="int", result_value="5")84