"""Tests for AIClient forced tool name extraction."""

from src.ai.client import AIClient


def test_extract_forced_tool_name_full_name():
    tools = [
        "humanizer_zh.read_skill_doc",
        "skills_creator.create_skill",
    ]
    message = "please call tool humanizer_zh.read_skill_doc and return first 100 chars"

    forced = AIClient._extract_forced_tool_name(message, tools)

    assert forced == "humanizer_zh.read_skill_doc"


def test_extract_forced_tool_name_unique_prefix():
    tools = [
        "humanizer_zh.read_skill_doc",
        "skills_creator.create_skill",
    ]
    message = "please call tool humanizer_zh only"

    forced = AIClient._extract_forced_tool_name(message, tools)

    assert forced == "humanizer_zh.read_skill_doc"


def test_extract_forced_tool_name_ambiguous_prefix_returns_none():
    tools = [
        "skills_creator.create_skill",
        "skills_creator.reload_skill",
    ]
    message = "please call tool skills_creator"

    forced = AIClient._extract_forced_tool_name(message, tools)

    assert forced is None


def test_extract_prefix_limit_from_user_message():
    assert AIClient._extract_prefix_limit("直接返回前100字") == 100
    assert AIClient._extract_prefix_limit("前 256 字") == 256
    assert AIClient._extract_prefix_limit("返回全文") is None
