Files
clang-p2996/lldb/test/API/commands/expression/import-std-module/queue/TestQueueFromStdModule.py
Raphael Isemann 3f6c856bb5 [ASTImporter] Import the default argument of TemplateTypeParmDecl
The test case isn't using the AST matchers for all checks as there doesn't seem to be support for
matching TemplateTypeParmDecl default arguments. Otherwise this is simply importing the
default arguments.

Also updates several LLDB tests that now as intended omit the default template
arguments of several std templates.

Reviewed By: martong

Differential Revision: https://reviews.llvm.org/D92103
2020-11-26 18:01:30 +01:00

86 lines
3.2 KiB
Python

"""
Tests std::queue functionality.
"""
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
class TestQueue(TestBase):
mydir = TestBase.compute_mydir(__file__)
@add_test_categories(["libc++"])
@skipIf(compiler=no_match("clang"))
def test(self):
self.build()
lldbutil.run_to_source_breakpoint(self,
"// Set break point at this line.",
lldb.SBFileSpec("main.cpp"))
self.runCmd("settings set target.import-std-module true")
queue_type = "std::queue<C>"
size_type = queue_type + "::size_type"
value_type = "std::__deque_base<C, std::allocator<C> >::value_type"
# Test std::queue functionality with a std::deque.
self.expect_expr(
"q_deque",
result_type=queue_type,
result_children=[ValueCheck(children=[ValueCheck(value="1")])])
self.expect("expr q_deque.pop()")
self.expect("expr q_deque.push({4})")
self.expect_expr("q_deque.size()",
result_type=size_type,
result_value="1")
self.expect_expr("q_deque.front()", result_type=value_type)
self.expect_expr("q_deque.back()", result_type=value_type)
self.expect_expr("q_deque.front().i",
result_type="int",
result_value="4")
self.expect_expr("q_deque.back().i",
result_type="int",
result_value="4")
self.expect_expr("q_deque.empty()",
result_type="bool",
result_value="false")
self.expect("expr q_deque.pop()")
self.expect("expr q_deque.emplace(5)")
self.expect_expr("q_deque.front().i",
result_type="int",
result_value="5")
# Test std::queue functionality with a std::list.
queue_type = "std::queue<C, std::list<C> >"
size_type = queue_type + "::size_type"
value_type = "std::list<C>::value_type"
self.expect_expr(
"q_list",
result_type=queue_type,
result_children=[ValueCheck(children=[ValueCheck(value="1")])])
self.expect("expr q_list.pop()")
self.expect("expr q_list.push({4})")
self.expect_expr("q_list.size()",
result_type=size_type,
result_value="1")
self.expect_expr("q_list.front()", result_type=value_type)
self.expect_expr("q_list.back()", result_type=value_type)
self.expect_expr("q_list.front().i",
result_type="int",
result_value="4")
self.expect_expr("q_list.back().i",
result_type="int",
result_value="4")
self.expect_expr("q_list.empty()",
result_type="bool",
result_value="false")
self.expect("expr q_list.pop()")
self.expect("expr q_list.emplace(5)")
self.expect_expr("q_list.front().i",
result_type="int",
result_value="5")