Repository: confident-ai/deepeval
Issue: ToolCall __hash__ not compatible with complex input parameters
Root cause: Validation Gap

`__hash__` method of ToolCall raise a TypeError if input_parameters contains a type not supported by frozenset (ie list, dict)

Steps to reproduce the behavior:
```
from deepeval.test_case import ToolCall

ToolCall(
    name="test_tool",
    input_parameters={"list":  ['a', 'b']}
).__hash__()

TypeError: unhashable type: 'list'
```

**Expected behavior**
Impossible to run tests currently, must be able to hash ToolCall with more complex input parameters


**Desktop (please complete the following information):**
 - deepeval 2.9.7 python3.13


**Additional context**
Not sure why we call .items() here, frozenset seems to handle dict just fine
https://github.com/confident-ai/deepeval/blob/263d248ce5e922386b4e93914ffa823cb5fc3b2a/deepeval/test_case/llm_test_case.py#L52

**Full trace**
```
File "/home/nathan/PycharmProjects/alie/.venv/lib64/python3.13/site-packages/deepeval/evaluate/evaluate.py", line 274, in evaluate
    test_results = loop.run_until_complete(
        a_execute_test_cases(
    ...<11 lines>...
        )
    )
  File "/home/nathan/PycharmProjects/alie/.venv/lib64/python3.13/site-packages/nest_asyncio.py", line 98, in run_until_complete
    return f.result()
           ~~~~~~~~^^
  File "/usr/lib64/python3.13/asyncio/futures.py", line 199, in result
    raise self._exception.with_traceback(self._exception_tb)
  File "/usr/lib64/python3.13/asyncio/tasks.py", line 306, in __step_run_and_handle_result
    result = coro.throw(exc)
  File "/home/nathan/PycharmProjects/alie/.venv/lib64/python3.13/site-packages/deepeval/evaluate/execute.py", line 501, in a_execute_test_cases
    await asyncio.gather(*tasks)
  File "/usr/lib64/python3.13/asyncio/tasks.py", line 375, in __wakeup
    future.result()
    ~~~~~~~~~~~~~^^
  File "/usr/lib64/python3.13/asyncio/tasks.py", line 306, in __step_run_and_handle_result
    result = coro.throw(exc)
  File "/home/nathan/PycharmProjects/alie/.venv/lib64/python3.13/site-packages/deepeval/evaluate/execute.py", line 394, in execute_with_semaphore
    return await func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/nathan/PycharmProjects/alie/.venv/lib64/python3.13/site-packages/deepeval/evaluate/execute.py", line 614, in a_execute_llm_test_cases
    await measure_metrics_with_indicator(
    ...<6 lines>...
    )
  File "/home/nathan/PycharmProjects/alie/.venv/lib64/python3.13/site-packages/deepeval/metrics/indicator.py", line 222, in measure_metrics_with_indicator
    await asyncio.gather(*tasks)
  File "/usr/lib64/python3.13/asyncio/tasks.py", line 375, in __wakeup
    future.result()
    ~~~~~~~~~~~~~^^
  File "/usr/lib64/python3.13/asyncio/tasks.py", line 304, in __step_run_and_handle_result
    result = coro.send(None)
  File "/home/nathan/PycharmProjects/alie/.venv/lib64/python3.13/site-packages/deepeval/metrics/indicator.py", line 251, in safe_a_measure
    await metric.a_measure(tc)
  File "/home/nathan/PycharmProjects/alie/.venv/lib64/python3.13/site-packages/deepeval/metrics/tool_correctness/tool_correctness.py", line 97, in a_measure
    return self.measure(
           ~~~~~~~~~~~~^
        test_case,
        ^^^^^^^^^^
        _show_indicator=_show_indicator,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        _in_component=_in_component,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/home/nathan/PycharmProjects/alie/.venv/lib64/python3.13/site-packages/deepeval/metrics/tool_correctness/tool_correctness.py", line 60, in measure
    self.score = self._calculate_score()
                 ~~~~~~~~~~~~~~~~~~~~~^^
  File "/home/nathan/PycharmProjects/alie/.venv/lib64/python3.13/site-packages/deepeval/metrics/tool_correctness/tool_correctness.py", line 156, in _calculate_score
    score = self._calculate_non_exact_match_score()
  File "/home/nathan/PycharmProjects/alie/.venv/lib64/python3.13/site-packages/deepeval/metrics/tool_correctness/tool_correctness.py", line 184, in _calculate_non_exact_match_score
    if called_tool in matched_called_tools:
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/nathan/PycharmProjects/alie/.venv/lib64/python3.13/site-packages/deepeval/test_case/llm_test_case.py", line 52, in __hash__
    (self.name, frozenset(input_params.items()), output_hashable)
                ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
TypeError: unhashable type: 'list'
```