1""" 2Test basic std::vector<bool> functionality. 3""" 4 5from lldbsuite.test.decorators import * 6from lldbsuite.test.lldbtest import * 7from lldbsuite.test import lldbutil 8 9 10class TestBoolVector(TestBase): 11 @add_test_categories(["libc++"]) 12 @skipIf(compiler=no_match("clang")) 13 @skipIf(bugnumber="rdar://100741983") 14 def test(self): 15 self.build() 16 17 lldbutil.run_to_source_breakpoint( 18 self, "// Set break point at this line.", lldb.SBFileSpec("main.cpp") 19 ) 20 21 vector_type = "std::vector<bool>" 22 size_type = "size_type" 23 24 self.runCmd("settings set target.import-std-module true") 25 26 self.expect_expr( 27 "a", 28 result_type=vector_type, 29 result_children=[ 30 ValueCheck(value="false"), 31 ValueCheck(value="true"), 32 ValueCheck(value="false"), 33 ValueCheck(value="true"), 34 ], 35 ) 36 self.expect_expr("a.size()", result_type=size_type, result_value="4") 37 # FIXME: Without the casting the result can't be materialized. 38 self.expect_expr("(bool)a.front()", result_type="bool", result_value="false") 39 self.expect_expr("(bool)a[1]", result_type="bool", result_value="true") 40 self.expect_expr("(bool)a.back()", result_type="bool", result_value="true") 41 42 self.expect_expr("(bool)*a.begin()", result_type="bool", result_value="false") 43 self.expect_expr("(bool)*a.rbegin()", result_type="bool", result_value="true") 44