| import lldb |
| from lldbsuite.test.decorators import * |
| from lldbsuite.test.lldbtest import * |
| from lldbsuite.test import lldbutil |
| |
| USE_LIBSTDCPP = "USE_LIBSTDCPP" |
| USE_LIBCPP = "USE_LIBCPP" |
| |
| |
| class GenericDequeDataFormatterTestCase(TestBase): |
| def findVariable(self, name): |
| var = self.frame().FindVariable(name) |
| self.assertTrue(var.IsValid()) |
| return var |
| |
| def getVariableType(self, name): |
| var = self.findVariable(name) |
| return var.GetType().GetDisplayTypeName() |
| |
| def check_size(self, var_name, size): |
| var = self.findVariable(var_name) |
| self.assertEqual(var.GetNumChildren(), size) |
| |
| def do_test(self, stdlib_type): |
| self.build(dictionary={stdlib_type: "1"}) |
| lldbutil.run_to_source_breakpoint( |
| self, "break here", lldb.SBFileSpec("main.cpp") |
| ) |
| |
| self.expect_expr("empty", result_children=[]) |
| self.expect_expr( |
| "deque_1", |
| result_children=[ |
| ValueCheck(name="[0]", value="1"), |
| ], |
| ) |
| self.expect_expr( |
| "deque_3", |
| result_children=[ |
| ValueCheck(name="[0]", value="3"), |
| ValueCheck(name="[1]", value="1"), |
| ValueCheck(name="[2]", value="2"), |
| ], |
| ) |
| |
| self.check_size("deque_200_small", 200) |
| for i in range(0, 100): |
| self.expect_var_path( |
| "deque_200_small[%d]" % (i), |
| children=[ |
| ValueCheck(name="a", value=str(-99 + i)), |
| ValueCheck(name="b", value=str(-100 + i)), |
| ValueCheck(name="c", value=str(-101 + i)), |
| ], |
| ) |
| self.expect_var_path( |
| "deque_200_small[%d]" % (i + 100), |
| children=[ |
| ValueCheck(name="a", value=str(i)), |
| ValueCheck(name="b", value=str(1 + i)), |
| ValueCheck(name="c", value=str(2 + i)), |
| ], |
| ) |
| |
| self.check_size("deque_200_large", 200) |
| for i in range(0, 100): |
| self.expect_var_path( |
| "deque_200_large[%d]" % (i), |
| children=[ |
| ValueCheck(name="a", value=str(-99 + i)), |
| ValueCheck(name="b", value=str(-100 + i)), |
| ValueCheck(name="c", value=str(-101 + i)), |
| ValueCheck(name="d"), |
| ], |
| ) |
| self.expect_var_path( |
| "deque_200_large[%d]" % (i + 100), |
| children=[ |
| ValueCheck(name="a", value=str(i)), |
| ValueCheck(name="b", value=str(1 + i)), |
| ValueCheck(name="c", value=str(2 + i)), |
| ValueCheck(name="d"), |
| ], |
| ) |
| |
| @add_test_categories(["libstdcxx"]) |
| def test_libstdcpp(self): |
| self.do_test(USE_LIBSTDCPP) |
| |
| @add_test_categories(["libc++"]) |
| def test_libcpp(self): |
| self.do_test(USE_LIBCPP) |