应文浩wenhao.ying@xiaobao100.com bce2612b64 feat: 完善具体实现
2026-04-06 15:25:34 +08:00

47 lines
1.5 KiB
C#

using FluentAssertions;
using FreeCode.Tools;
using FreeCode.Tests.Unit.Helpers;
using Xunit;
namespace FreeCode.Tests.Unit.Tools;
public sealed class GlobToolTests : IDisposable
{
private readonly string _tempDirectory = Path.Combine(Path.GetTempPath(), "free-code-tests", Guid.NewGuid().ToString("N"));
private readonly GlobTool _sut = new();
public GlobToolTests()
{
Directory.CreateDirectory(Path.Combine(_tempDirectory, "sub"));
File.WriteAllText(Path.Combine(_tempDirectory, "alpha.txt"), "a");
File.WriteAllText(Path.Combine(_tempDirectory, "sub", "beta.txt"), "b");
File.WriteAllText(Path.Combine(_tempDirectory, "sub", "gamma.cs"), "c");
}
[Fact]
public async Task ExecuteAsync_FindsMatchingFiles()
{
var result = await _sut.ExecuteAsync(new GlobToolInput("**/*.txt", _tempDirectory), TestHelper.CreateContext());
result.IsError.Should().BeFalse();
result.Data.Matches.Should().ContainSingle(path => path.EndsWith("beta.txt", StringComparison.Ordinal));
}
[Fact]
public async Task ExecuteAsync_WithNoMatches_ReturnsEmpty()
{
var result = await _sut.ExecuteAsync(new GlobToolInput("**/*.md", _tempDirectory), TestHelper.CreateContext());
result.IsError.Should().BeFalse();
result.Data.Matches.Should().BeEmpty();
}
public void Dispose()
{
if (Directory.Exists(_tempDirectory))
{
Directory.Delete(_tempDirectory, recursive: true);
}
}
}