package tech.easyflow.ai.config;

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

/**
 * JavaScript 代码执行引擎配置测试。
 */
public class JavascriptCodeEnginePropsTest {

    /**
     * 验证正数超时配置可以正常写入。
     */
    @Test
    public void shouldAcceptPositiveTimeout() {
        JavascriptCodeEngineProps props =
                new JavascriptCodeEngineProps();

        props.setTimeoutMs(1000L);

        Assert.assertEquals(1000L, props.getTimeoutMs());
    }

    /**
     * 验证非正数超时配置会立即失败。
     */
    @Test
    public void shouldRejectNonPositiveTimeout() {
        assertInvalidTimeout(0L);
        assertInvalidTimeout(-1L);
    }

    /**
     * 验证指定超时值无法写入配置。
     *
     * @param timeoutMs 非法超时值
     */
    private void assertInvalidTimeout(long timeoutMs) {
        JavascriptCodeEngineProps props =
                new JavascriptCodeEngineProps();
        try {
            props.setTimeoutMs(timeoutMs);
            Assert.fail("非正数超时配置应执行失败");
        } catch (IllegalArgumentException exception) {
            Assert.assertTrue(exception.getMessage().contains(
                    "必须大于 0"));
        }
    }
}
