Spaces:
Running
Running
| """Unit tests for tools.parse_functions_json / build_tools_list.""" | |
| import json | |
| from tools import build_tools_list, parse_functions_json | |
| def test_parse_empty_inputs(): | |
| assert parse_functions_json(None) == [] | |
| assert parse_functions_json("") == [] | |
| assert parse_functions_json(" ") == [] | |
| def test_parse_invalid_json(): | |
| assert parse_functions_json("not json") == [] | |
| def test_parse_dict_normalized_to_list(): | |
| payload = {"name": "ping", "parameters": {"type": "object"}} | |
| result = parse_functions_json(json.dumps(payload)) | |
| assert len(result) == 1 | |
| assert result[0]["name"] == "ping" | |
| def test_parse_typed_function_format(): | |
| payload = [{ | |
| "type": "function", | |
| "function": { | |
| "name": "get_weather", | |
| "description": "weather", | |
| "parameters": {"type": "object", "properties": {}}, | |
| }, | |
| }] | |
| result = parse_functions_json(json.dumps(payload)) | |
| assert result == [payload[0]["function"]] | |
| def test_parse_skips_invalid_entries(): | |
| payload = [ | |
| {"type": "function", "function": {}}, # missing name | |
| {"name": "good", "parameters": {}}, # ok | |
| "string-not-object", # not a dict | |
| ] | |
| result = parse_functions_json(json.dumps(payload)) | |
| assert [fn["name"] for fn in result] == ["good"] | |
| def test_build_tools_list_returns_none_when_empty(): | |
| assert build_tools_list("") is None | |
| assert build_tools_list("[]") is None | |
| def test_build_tools_list_wraps_in_function_envelope(): | |
| payload = [{"name": "ping", "parameters": {"type": "object"}}] | |
| tools = build_tools_list(json.dumps(payload)) | |
| assert tools is not None | |
| assert tools[0]["type"] == "function" | |
| assert tools[0]["function"]["name"] == "ping" | |
| def test_build_tools_list_parses_string_parameters(): | |
| payload = [{ | |
| "name": "ping", | |
| "parameters": json.dumps({"type": "object", "properties": {}}), | |
| }] | |
| tools = build_tools_list(json.dumps(payload)) | |
| assert tools is not None | |
| assert tools[0]["function"]["parameters"]["type"] == "object" | |