1""" 2Test basic std::list functionality. 3""" 4 5from lldbsuite.test.decorators import * 6from lldbsuite.test.lldbtest import * 7from lldbsuite.test import lldbutil 8 9 10class TestBasicDeque(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 self.runCmd("settings set target.import-std-module true") 22 23 if self.expectedCompiler(["clang"]) and self.expectedCompilerVersion(['>', '16.0']): 24 deque_type = "std::deque<int>" 25 else: 26 deque_type = "std::deque<int, std::allocator<int> >" 27 28 size_type = "size_type" 29 value_type = "value_type" 30 iterator = "iterator" 31 iterator_children = [ 32 ValueCheck(name="__m_iter_"), 33 ValueCheck(name="__ptr_") 34 ] 35 riterator = "reverse_iterator" 36 riterator_children = [ 37 ValueCheck(), # Deprecated __t_ member; no need to check 38 ValueCheck(name="current") 39 ] 40 41 self.expect_expr("a", 42 result_type=deque_type, 43 result_children=[ 44 ValueCheck(value='3'), 45 ValueCheck(value='1'), 46 ValueCheck(value='2'), 47 ]) 48 49 self.expect_expr("a.size()", result_type=size_type, result_value="3") 50 self.expect_expr("a.front()", result_type=value_type, result_value="3") 51 self.expect_expr("a.back()", result_type=value_type, result_value="2") 52 53 self.expect("expr std::sort(a.begin(), a.end())") 54 self.expect_expr("a.front()", result_type=value_type, result_value="1") 55 self.expect_expr("a.back()", result_type=value_type, result_value="3") 56 57 self.expect("expr std::reverse(a.begin(), a.end())") 58 self.expect_expr("a.front()", result_type=value_type, result_value="3") 59 self.expect_expr("a.back()", result_type=value_type, result_value="1") 60 61 self.expect_expr("*a.begin()", result_type="int", result_value="3") 62 self.expect_expr("*a.rbegin()", result_type="int", result_value="1") 63 self.expect_expr("a.begin()", 64 result_type=iterator, 65 result_children=iterator_children) 66 self.expect_expr("a.rbegin()", 67 result_type=riterator, 68 result_children=riterator_children) 69