[bazel] Port for baf27862ddb23c3854cb6782a3f1675da4722a50
[llvm-project.git] / lldb / test / API / commands / expression / import-std-module / array / TestArrayFromStdModule.py
blob13ab6b0c9ac1fb99948face8d0182e805738880f
1 """
2 Test basic std::array functionality.
3 """
5 from lldbsuite.test.decorators import *
6 from lldbsuite.test.lldbtest import *
7 from lldbsuite.test import lldbutil
10 class TestCase(TestBase):
11 @add_test_categories(["libc++"])
12 @skipIf(compiler=no_match("clang"))
13 def test(self):
14 self.build()
16 lldbutil.run_to_source_breakpoint(
17 self, "// Set break point at this line.", lldb.SBFileSpec("main.cpp")
20 self.runCmd("settings set target.import-std-module true")
22 size_type = "size_type"
23 value_type = "value_type"
24 iterator = "iterator"
25 riterator = "reverse_iterator"
27 # Test inspecting an array of integers.
28 array_type = "std::array<int, 3>"
29 self.expect_expr(
30 "a",
31 result_type=array_type,
32 result_children=[
33 ValueCheck(
34 name="__elems_",
35 children=[
36 ValueCheck(value="3"),
37 ValueCheck(value="1"),
38 ValueCheck(value="2"),
43 self.expect_expr("a.size()", result_type=size_type, result_value="3")
44 self.expect_expr("a.front()", result_type=value_type, result_value="3")
45 self.expect_expr("a[1]", result_type=value_type, result_value="1")
46 self.expect_expr("a.back()", result_type=value_type, result_value="2")
48 # Both are just pointers to the underlying elements.
49 self.expect_expr("a.begin()", result_type=iterator)
50 self.expect_expr("a.rbegin()", result_type=riterator)
52 self.expect_expr("*a.begin()", result_type=value_type, result_value="3")
53 self.expect_expr("*a.rbegin()", result_type="int", result_value="2")
55 self.expect_expr("a.at(0)", result_type=value_type, result_value="3")
57 # Same again with an array that has an element type from debug info.
58 array_type = "std::array<DbgInfo, 1>"
60 dbg_info_elem_children = [ValueCheck(value="4")]
61 dbg_info_elem = [ValueCheck(children=dbg_info_elem_children)]
63 self.expect_expr(
64 "b",
65 result_type=array_type,
66 result_children=[ValueCheck(name="__elems_", children=dbg_info_elem)],
68 self.expect_expr("b.size()", result_type=size_type, result_value="1")
69 self.expect_expr(
70 "b.front()", result_type=value_type, result_children=dbg_info_elem_children
72 self.expect_expr(
73 "b[0]", result_type=value_type, result_children=dbg_info_elem_children
75 self.expect_expr(
76 "b.back()", result_type=value_type, result_children=dbg_info_elem_children
79 # Both are just pointers to the underlying elements.
80 self.expect_expr("b.begin()", result_type=iterator)
81 self.expect_expr("b.rbegin()", result_type=riterator)
83 self.expect_expr(
84 "*b.begin()", result_type=value_type, result_children=dbg_info_elem_children
86 self.expect_expr(
87 "*b.rbegin()", result_type="DbgInfo", result_children=dbg_info_elem_children
90 self.expect_expr(
91 "b.at(0)", result_type=value_type, result_children=dbg_info_elem_children