45 lines · python
1"""2Test calling user defined functions using expression evaluation.3 4Note:5 LLDBs current first choice of evaluating functions is using the IR interpreter,6 which is only supported on Hexagon. Otherwise JIT is used for the evaluation.7 8"""9 10import lldb11from lldbsuite.test.decorators import *12from lldbsuite.test.lldbtest import *13from lldbsuite.test import lldbutil14 15 16class ExprCommandCallUserDefinedFunction(TestBase):17 def test(self):18 """Test return values of user defined function calls."""19 self.build()20 lldbutil.run_to_source_breakpoint(21 self, "// break here", lldb.SBFileSpec("main.cpp")22 )23 24 # Test recursive function call.25 self.expect_expr("fib(5)", result_type="unsigned int", result_value="5")26 27 # Test function with more than one parameter28 self.expect_expr("add(4, 8)", result_type="int", result_value="12")29 30 # Test nesting function calls in function parameters31 self.expect_expr("add(add(5,2),add(3,4))", result_type="int", result_value="14")32 self.expect_expr("add(add(5,2),fib(5))", result_type="int", result_value="12")33 34 # Test function with pointer parameter35 self.expect_expr(36 'stringCompare((const char*) "Hello world")',37 result_type="bool",38 result_value="true",39 )40 self.expect_expr(41 'stringCompare((const char*) "Hellworld")',42 result_type="bool",43 result_value="false",44 )45