2 Test basic std::array functionality.
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"))
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"
25 riterator
= "reverse_iterator"
27 # Test inspecting an array of integers.
28 array_type
= "std::array<int, 3>"
31 result_type
=array_type
,
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
)]
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")
70 "b.front()", result_type
=value_type
, result_children
=dbg_info_elem_children
73 "b[0]", result_type
=value_type
, result_children
=dbg_info_elem_children
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
)
84 "*b.begin()", result_type
=value_type
, result_children
=dbg_info_elem_children
87 "*b.rbegin()", result_type
="DbgInfo", result_children
=dbg_info_elem_children
91 "b.at(0)", result_type
=value_type
, result_children
=dbg_info_elem_children