应文浩wenhao.ying@xiaobao100.com e25ac591a7 init easy-code
2026-04-06 07:24:24 +08:00

62 lines
1.9 KiB
C#

using System.Text.Json;
using FreeCode.Core.Enums;
using FreeCode.Core.Models;
using Xunit;
[assembly: CollectionBehavior(DisableTestParallelization = true)]
namespace FreeCode.Core.Tests;
public class BasicTests
{
[Fact]
public void ToolPermissionContext_UsesEmptySetsByDefault()
{
var context = new ToolPermissionContext();
Assert.Empty(context.DeniedTools);
Assert.Empty(context.AllowedTools);
}
[Fact]
public void BridgeEnvironment_UsesRecordEquality()
{
var metadata = new Dictionary<string, string> { ["shell"] = "zsh" };
var left = new BridgeEnvironment("env-1", "Local", SpawnMode.Worktree, "/tmp/work", metadata);
var right = new BridgeEnvironment("env-1", "Local", SpawnMode.Worktree, "/tmp/work", metadata);
Assert.Equal(left, right);
}
[Fact]
public void WorkItem_StoresPayloadAndOptionalSessionToken()
{
using var document = JsonDocument.Parse("{" + "\"command\":\"build\"" + "}");
var workItem = new WorkItem("work-1", "shell", document.RootElement.Clone(), "session-token");
Assert.Equal("work-1", workItem.Id);
Assert.Equal("shell", workItem.Type);
Assert.Equal("build", workItem.Payload.GetProperty("command").GetString());
Assert.Equal("session-token", workItem.SessionToken);
}
[Fact]
public void SessionHandle_UsesNullUrlByDefault()
{
var handle = new SessionHandle("session-1", "token-1");
Assert.Equal("session-1", handle.SessionId);
Assert.Equal("token-1", handle.SessionToken);
Assert.Null(handle.Url);
}
[Fact]
public void PermissionMode_EnumValuesMatchExpectedOrder()
{
Assert.Equal(0, (int)PermissionMode.Default);
Assert.Equal(1, (int)PermissionMode.Plan);
Assert.Equal(2, (int)PermissionMode.AutoAccept);
Assert.Equal(3, (int)PermissionMode.BypassPermissions);
}
}