[MLIR] print/parse resource handle key quoted and escaped (#119746)
[llvm-project.git] / lldb / test / API / commands / expression / context-object / TestContextObject.py
blob1ed629a42c1ee858b355c6a40d5529d521ee130a
1 """
2 Tests expression evaluation in context of an object.
3 """
5 import lldb
6 import lldbsuite.test.lldbutil as lldbutil
7 from lldbsuite.test.lldbtest import *
10 class ContextObjectTestCase(TestBase):
11 def test_context_object(self):
12 """Tests expression evaluation in context of an object."""
13 self.build()
15 (target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint(
16 self, "// Break here", self.main_source_spec
18 frame = thread.GetFrameAtIndex(0)
21 # Test C++ struct variable and reference-to-struct variable
23 for obj in "cpp_struct", "cpp_struct_ref":
24 obj_val = frame.FindVariable(obj)
25 self.assertTrue(obj_val.IsValid())
27 # Test an empty expression evaluation
28 value = obj_val.EvaluateExpression("")
29 self.assertFalse(value.IsValid())
30 self.assertFalse(value.GetError().Success())
32 # Test retrieveing of a field (not a local with the same name)
33 value = obj_val.EvaluateExpression("field")
34 self.assertTrue(value.IsValid())
35 self.assertSuccess(value.GetError())
36 self.assertEqual(value.GetValueAsSigned(), 1111)
38 # Test functions evaluation
39 value = obj_val.EvaluateExpression("function()")
40 self.assertTrue(value.IsValid())
41 self.assertSuccess(value.GetError())
42 self.assertEqual(value.GetValueAsSigned(), 2222)
44 # Test that we retrieve the right global
45 value = obj_val.EvaluateExpression("global.field")
46 self.assertTrue(value.IsValid())
47 self.assertSuccess(value.GetError())
48 self.assertEqual(value.GetValueAsSigned(), 1111)
51 # Test C++ union variable
54 obj_val = frame.FindVariable("cpp_union")
55 self.assertTrue(obj_val.IsValid())
57 # Test retrieveing of a field
58 value = obj_val.EvaluateExpression("field_int")
59 self.assertTrue(value.IsValid())
60 self.assertSuccess(value.GetError())
61 self.assertEqual(value.GetValueAsSigned(), 5555)
64 # Test C++ scalar
67 obj_val = frame.FindVariable("cpp_scalar")
68 self.assertTrue(obj_val.IsValid())
70 # Test an expression evaluation
71 value = obj_val.EvaluateExpression("1")
72 self.assertTrue(value.IsValid())
73 self.assertFalse(value.GetError().Success())
76 # Test C++ array
79 obj_val = frame.FindVariable("cpp_array")
80 self.assertTrue(obj_val.IsValid())
82 # Test an expression evaluation
83 value = obj_val.EvaluateExpression("1")
84 self.assertTrue(value.IsValid())
85 self.assertFalse(value.GetError().Success())
87 # Test retrieveing of an element's field
88 value = obj_val.GetValueForExpressionPath("[7]").EvaluateExpression("field")
89 self.assertTrue(value.IsValid())
90 self.assertSuccess(value.GetError())
91 self.assertEqual(value.GetValueAsSigned(), 1111)
94 # Test C++ pointer
97 obj_val = frame.FindVariable("cpp_pointer")
98 self.assertTrue(obj_val.IsValid())
100 # Test an expression evaluation
101 value = obj_val.EvaluateExpression("1")
102 self.assertTrue(value.IsValid())
103 self.assertFalse(value.GetError().Success())
105 # Test retrieveing of a dereferenced object's field
106 value = obj_val.Dereference().EvaluateExpression("field")
107 self.assertTrue(value.IsValid())
108 self.assertSuccess(value.GetError())
109 self.assertEqual(value.GetValueAsSigned(), 1111)
112 # Test C++ computation result
115 obj_val = frame.EvaluateExpression("cpp_namespace::GetCppStruct()")
116 self.assertTrue(obj_val.IsValid())
118 # Test an expression evaluation
119 value = obj_val.EvaluateExpression("1")
120 self.assertTrue(value.IsValid())
121 self.assertFalse(value.GetError().Success())
124 # Test C++ computation result located in debuggee memory
127 obj_val = frame.EvaluateExpression("cpp_namespace::GetCppStructPtr()")
128 self.assertTrue(obj_val.IsValid())
130 # Test an expression evaluation
131 value = obj_val.EvaluateExpression("1")
132 self.assertTrue(value.IsValid())
133 self.assertFalse(value.GetError().Success())
135 # Test retrieveing of a dereferenced object's field
136 value = obj_val.Dereference().EvaluateExpression("field")
137 self.assertTrue(value.IsValid())
138 self.assertSuccess(value.GetError())
139 self.assertEqual(value.GetValueAsSigned(), 1111)
141 def setUp(self):
142 TestBase.setUp(self)
144 self.main_source = "main.cpp"
145 self.main_source_spec = lldb.SBFileSpec(self.main_source)