| import lldb | |
| from lldbsuite.test.lldbtest import * | |
| from lldbsuite.test import lldbutil | |
| class ValueAPIGetExpressionPath(TestBase): | |
| def test(self): | |
| self.build() | |
| _, _, thread, _ = lldbutil.run_to_source_breakpoint( | |
| self, "Break at this line", lldb.SBFileSpec("main.c") | |
| ) | |
| frame = thread.GetFrameAtIndex(0) | |
| self.assertEqual(frame.FindVariable("foo").get_expr_path(), "foo") | |
| for i in range(2): | |
| self.assertEqual( | |
| frame.FindVariable("foo").GetChildAtIndex(i).get_expr_path(), | |
| f"foo[{i}]", | |
| ) | |
| for j in range(3): | |
| self.assertEqual( | |
| frame.FindVariable("foo") | |
| .GetChildAtIndex(i) | |
| .GetChildAtIndex(j) | |
| .get_expr_path(), | |
| f"foo[{i}][{j}]", | |
| ) | |
| for k in range(4): | |
| self.assertEqual( | |
| frame.FindVariable("foo") | |
| .GetChildAtIndex(i) | |
| .GetChildAtIndex(j) | |
| .GetChildAtIndex(k) | |
| .get_expr_path(), | |
| f"foo[{i}][{j}][{k}]", | |
| ) | |
| self.assertEqual(frame.FindVariable("bar").get_expr_path(), "bar") | |
| for j in range(3): | |
| self.assertEqual( | |
| frame.FindVariable("bar").GetChildAtIndex(j).get_expr_path(), | |
| f"bar[0][{j}]", | |
| ) | |
| for k in range(4): | |
| self.assertEqual( | |
| frame.FindVariable("bar") | |
| .GetChildAtIndex(j) | |
| .GetChildAtIndex(k) | |
| .get_expr_path(), | |
| f"bar[0][{j}][{k}]", | |
| ) |