"""
Test calling user defined functions using expression evaluation.

Note:
  LLDBs current first choice of evaluating functions is using the IR interpreter,
  which is only supported on Hexagon. Otherwise JIT is used for the evaluation.

"""

import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil


@skipIfWasm  # no expression evaluation
class ExprCommandCallUserDefinedFunction(TestBase):
    def test(self):
        """Test return values of user defined function calls."""
        self.build()
        lldbutil.run_to_source_breakpoint(
            self, "// break here", lldb.SBFileSpec("main.cpp")
        )

        # Test recursive function call.
        self.expect_expr("fib(5)", result_type="unsigned int", result_value="5")

        # Test function with more than one parameter
        self.expect_expr("add(4, 8)", result_type="int", result_value="12")

        # Test nesting function calls in function parameters
        self.expect_expr("add(add(5,2),add(3,4))", result_type="int", result_value="14")
        self.expect_expr("add(add(5,2),fib(5))", result_type="int", result_value="12")

        # Test function with pointer parameter
        self.expect_expr(
            'stringCompare((const char*) "Hello world")',
            result_type="bool",
            result_value="true",
        )
        self.expect_expr(
            'stringCompare((const char*) "Hellworld")',
            result_type="bool",
            result_value="false",
        )
