Spaces:
Running
Running
| """Unit tests for core.chat conversation primitives.""" | |
| from core.chat import ( | |
| build_api_kwargs, | |
| build_messages_for_api, | |
| finalize_response, | |
| flush_tool_results, | |
| init_state, | |
| record_tool_result, | |
| ) | |
| def test_init_state_has_all_keys(): | |
| state = init_state() | |
| assert state["messages"] == [] | |
| assert state["context_start_index"] == 0 | |
| assert state["pending_tool_calls"] == [] | |
| assert state["pending_assistant_msg"] is None | |
| assert state["submitted_tool_results"] == [] | |
| def test_build_messages_for_api_prepends_system_prompt(): | |
| state = init_state() | |
| state["messages"] = [{"role": "user", "content": "hi"}] | |
| out = build_messages_for_api(state, "be helpful") | |
| assert out[0] == {"role": "system", "content": "be helpful"} | |
| assert out[-1]["content"] == "hi" | |
| def test_build_messages_for_api_skips_blank_system(): | |
| state = init_state() | |
| state["messages"] = [{"role": "user", "content": "hi"}] | |
| assert build_messages_for_api(state, " ") == state["messages"] | |
| def test_build_messages_for_api_respects_context_start(): | |
| state = init_state() | |
| state["messages"] = [ | |
| {"role": "user", "content": "old"}, | |
| {"role": "assistant", "content": "older reply"}, | |
| {"role": "user", "content": "new"}, | |
| ] | |
| state["context_start_index"] = 2 | |
| out = build_messages_for_api(state, "") | |
| assert out == [{"role": "user", "content": "new"}] | |
| def test_build_api_kwargs_defaults(): | |
| state = init_state() | |
| state["messages"] = [{"role": "user", "content": "hi"}] | |
| kwargs = build_api_kwargs( | |
| state, | |
| system_prompt="", | |
| functions_json_str=None, | |
| think_level="low", | |
| temperature=0.9, | |
| max_tokens=512, | |
| top_p=0.95, | |
| ) | |
| assert kwargs["stream"] is True | |
| assert kwargs["max_tokens"] == 512 | |
| assert kwargs["reasoning_effort"] == "low" | |
| assert kwargs["temperature"] == 0.7 | |
| assert kwargs["top_p"] == 0.95 | |
| assert "extra_body" not in kwargs | |
| assert "tools" not in kwargs | |
| def test_build_api_kwargs_omits_unset_sampling_knobs(): | |
| state = init_state() | |
| kwargs = build_api_kwargs( | |
| state, | |
| system_prompt="", | |
| functions_json_str=None, | |
| think_level="high", | |
| temperature=None, | |
| max_tokens=0, | |
| top_p=0, | |
| ) | |
| assert "max_tokens" not in kwargs | |
| assert "temperature" not in kwargs | |
| assert "top_p" not in kwargs | |
| assert "extra_body" not in kwargs | |
| def test_build_api_kwargs_sends_explicit_zero_temperature(): | |
| """``temperature=0`` is greedy decoding and must reach the wire — only | |
| ``temperature=None`` should be treated as "use the server default".""" | |
| state = init_state() | |
| kwargs = build_api_kwargs( | |
| state, | |
| system_prompt="", | |
| functions_json_str=None, | |
| think_level="high", | |
| temperature=0, | |
| max_tokens=0, | |
| top_p=0, | |
| ) | |
| assert kwargs["temperature"] == 0.0 | |
| def test_finalize_response_without_tool_calls(): | |
| state = init_state() | |
| has_tools, pending = finalize_response( | |
| state=state, | |
| assistant_content="hello", | |
| reasoning_content="", | |
| tool_calls_acc=[], | |
| ) | |
| assert has_tools is False | |
| assert pending == [] | |
| assert state["messages"] == [{"role": "assistant", "content": "hello"}] | |
| def test_finalize_response_with_tool_calls_records_pending(): | |
| state = init_state() | |
| tc = { | |
| "id": "call_1", | |
| "type": "function", | |
| "function": {"name": "ping", "arguments": "{}"}, | |
| } | |
| has_tools, pending = finalize_response( | |
| state=state, | |
| assistant_content="", | |
| reasoning_content="", | |
| tool_calls_acc=[tc], | |
| ) | |
| assert has_tools is True | |
| assert pending == [tc] | |
| assert state["pending_tool_calls"] == [tc] | |
| assert state["pending_assistant_msg"]["tool_calls"] == [tc] | |
| def test_record_tool_result_then_flush_appends_to_messages(): | |
| state = init_state() | |
| tc = {"id": "call_1", "type": "function", "function": {"name": "ping", "arguments": "{}"}} | |
| record_tool_result(state, tc, "pong") | |
| assert state["submitted_tool_results"] == [{ | |
| "role": "tool", | |
| "tool_call_id": "call_1", | |
| "content": "pong", | |
| }] | |
| flush_tool_results(state) | |
| assert state["submitted_tool_results"] == [] | |
| assert state["messages"][-1] == { | |
| "role": "tool", | |
| "tool_call_id": "call_1", | |
| "content": "pong", | |
| } | |
| assert state["pending_assistant_msg"] is None | |