package tech.easyflow.ai.easyagents.tool;

import org.junit.Assert;
import org.junit.Test;

import java.math.BigInteger;

/**
 * {@link ChatToolNameHelper} 单元测试。
 *
 * @author Codex
 * @since 2026-05-11
 */
public class ChatToolNameHelperTest {

    /**
     * 启用英文名时应优先返回合法英文名称。
     */
    @Test
    public void resolveToolNameShouldPreferValidEnglishName() {
        String name = ChatToolNameHelper.resolveToolName(
                true,
                "knowledge_search",
                "知识库检索",
                "knowledge",
                BigInteger.valueOf(101)
        );

        Assert.assertEquals("knowledge_search", name);
    }

    /**
     * 英文名缺失时应回退为稳定安全名称。
     */
    @Test
    public void resolveToolNameShouldFallbackWhenEnglishNameMissing() {
        String name = ChatToolNameHelper.resolveToolName(
                true,
                null,
                "知识库检索",
                "knowledge",
                BigInteger.valueOf(101)
        );

        Assert.assertEquals("knowledge_101", name);
    }

    /**
     * 英文名不满足协议约束时应回退为稳定安全名称。
     */
    @Test
    public void resolveToolNameShouldFallbackWhenEnglishNameInvalid() {
        String name = ChatToolNameHelper.resolveToolName(
                true,
                "工作流-A",
                "工作流检索",
                "workflow",
                BigInteger.valueOf(202)
        );

        Assert.assertEquals("workflow_202", name);
    }

    /**
     * 未启用英文名时应保留展示名称。
     */
    @Test
    public void resolveToolNameShouldKeepDisplayNameWhenEnglishNameDisabled() {
        String name = ChatToolNameHelper.resolveToolName(
                false,
                "workflow_search",
                "工作流检索",
                "workflow",
                BigInteger.valueOf(202)
        );

        Assert.assertEquals("工作流检索", name);
    }
}
