mirror of
https://github.com/AtomUI/AtomUI.git
synced 2026-10-18 14:37:19 +08:00
67 lines
2.7 KiB
C#
67 lines
2.7 KiB
C#
using AtomUI.Docs.LLMsGenerator.Catalog;
|
|
using AtomUI.Docs.LLMsGenerator.Config;
|
|
using AtomUI.Docs.LLMsGenerator.Reader;
|
|
using AtomUI.Docs.LLMsGenerator.Writers;
|
|
using Shouldly;
|
|
using Xunit;
|
|
|
|
namespace AtomUI.Docs.LLMsGenerator.Tests;
|
|
|
|
public class ControlDocReaderTests
|
|
{
|
|
[Fact]
|
|
public void ReaderUsesCurrentImplementationSectionNumbers()
|
|
{
|
|
var model = ReadModel("steps");
|
|
|
|
model.ImplementationLifecycleSection.ShouldContain("容器准备");
|
|
model.ImplementationAotSection.ShouldContain("AOT 边界");
|
|
model.ImplementationInvariantsSection.ShouldContain("Current 是唯一当前步骤输入");
|
|
model.ImplementationTestsSection.ShouldContain("交互与 Wave");
|
|
}
|
|
|
|
[Fact]
|
|
public void StepsGeneratedDocumentsMatchCurrentSources()
|
|
{
|
|
var model = ReadModel("steps");
|
|
var index = LLMsControlWriter.Write(model);
|
|
var semantic = LLMsSemanticWriter.Write(model);
|
|
|
|
File.ReadAllText(Path.Combine(TestRepository.RootPath, model.OutputIndexPath))
|
|
.ShouldBe(index);
|
|
File.ReadAllText(Path.Combine(TestRepository.RootPath, model.OutputSemanticPath))
|
|
.ShouldBe(semantic);
|
|
|
|
File.ReadAllText(Path.Combine(TestRepository.RootPath, "docs/AI/generated/llms/llms-full-cn.txt"))
|
|
.ShouldContain($"Source: ./controls/steps/index-cn.md\n\n{index.TrimEnd()}");
|
|
File.ReadAllText(Path.Combine(TestRepository.RootPath, "docs/AI/generated/llms/llms-semantic-cn.md"))
|
|
.ShouldContain($"Source: ./controls/steps/semantic-cn.md\n\n{semantic.TrimEnd()}");
|
|
}
|
|
|
|
[Fact]
|
|
public void UploadGeneratedDocumentsMatchCurrentSources()
|
|
{
|
|
var model = ReadModel("upload");
|
|
|
|
File.ReadAllText(Path.Combine(TestRepository.RootPath, model.OutputIndexPath))
|
|
.ShouldBe(LLMsControlWriter.Write(model));
|
|
File.ReadAllText(Path.Combine(TestRepository.RootPath, model.OutputSemanticPath))
|
|
.ShouldBe(LLMsSemanticWriter.Write(model));
|
|
}
|
|
|
|
private static ControlDocModel ReadModel(string controlName)
|
|
{
|
|
var config = LLMsGeneratorConfigReader.Read(
|
|
Path.Combine(TestRepository.RootPath, "docs/AI/generated/llms.config.json"));
|
|
var control = config.ControlSets
|
|
.SelectMany(controlSet => ControlInventory.Discover(
|
|
TestRepository.RootPath,
|
|
controlSet,
|
|
config.OutputRoot,
|
|
config.DefaultLanguage))
|
|
.Single(candidate => candidate.Name == controlName);
|
|
|
|
return ControlDocReader.Read(TestRepository.RootPath, control);
|
|
}
|
|
}
|