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 12 @add_test_categories(["libc++"]) 13 @skipIf(compiler=no_match("clang")) 14 def test(self): 15 self.build() 16 17 lldbutil.run_to_source_breakpoint(self, 18 "// Set break point at this line.", 19 lldb.SBFileSpec("main.cpp")) 20 21 vector_type = "std::vector<bool>" 22 size_type = vector_type + "::size_type" 23 24 self.runCmd("settings set target.import-std-module true") 25 26 self.expect_expr("a", 27 result_type=vector_type, 28 result_children=[ 29 ValueCheck(value="false"), 30 ValueCheck(value="true"), 31 ValueCheck(value="false"), 32 ValueCheck(value="true"), 33 ]) 34 self.expect_expr("a.size()", result_type=size_type, result_value="4") 35 # FIXME: Without the casting the result can't be materialized. 36 self.expect_expr("(bool)a.front()", 37 result_type="bool", 38 result_value="false") 39 self.expect_expr("(bool)a[1]", result_type="bool", result_value="true") 40 self.expect_expr("(bool)a.back()", 41 result_type="bool", 42 result_value="true") 43 44 self.expect_expr("(bool)*a.begin()", 45 result_type="bool", 46 result_value="false") 47 self.expect_expr("(bool)*a.rbegin()", 48 result_type="bool", 49 result_value="true") 50