diff --git a/tests/unittests/tools/test_function_tool_with_import_annotations.py b/tests/unittests/tools/test_function_tool_with_import_annotations.py index ebd21bce95..2a329c8abb 100644 --- a/tests/unittests/tools/test_function_tool_with_import_annotations.py +++ b/tests/unittests/tools/test_function_tool_with_import_annotations.py @@ -16,6 +16,7 @@ from typing import Any from typing import Dict +from typing import List from google.adk.tools import _automatic_function_calling_util from google.adk.tools.function_tool import FunctionTool @@ -159,6 +160,26 @@ def test_function(str_param: str, int_param: int, any_param: Any) -> str: assert declaration.response.type == types.Type.STRING +def test_pipe_union_list_annotation_parameter_vertex(): + """Test function with pipe union list parameter annotation.""" + + def test_function(file_patterns: List[str] | None = None) -> None: + """A test function that accepts optional file patterns.""" + pass + + declaration = _automatic_function_calling_util.from_function_with_options( + test_function, GoogleLLMVariant.VERTEX_AI + ) + + assert declaration.name == 'test_function' + assert declaration.parameters.type == 'OBJECT' + file_patterns_schema = declaration.parameters.properties['file_patterns'] + assert file_patterns_schema.type == types.Type.ARRAY + assert file_patterns_schema.items.type == types.Type.STRING + assert file_patterns_schema.nullable + assert declaration.parameters.required == [] + + def test_string_annotation_no_params_vertex(): """Test function with no parameters but string annotation return."""