???? ???? ?? ????????? ????? ?? ????? PPT ?? ???? ??
??: - ?? ?? ???? ?? ?? ??, ?? ? ?? ?? ??, ?????? ???? ??? ? ?? ?????. - ?? ?? ??? ??? ?? PPT? ?? ??? ?? ???? ?? ????? ????. ?? ????: - AgentCommandQueue? steering, permission continuation, resume, user decision ? ??? ???? AgentLoopService?? ?? ???? ????? ?? - CodeLanguageCatalog? LspClientService? ??? Go, Rust, PHP, Ruby, Kotlin, Swift? ?? LSP ?? ???? ?? - SettingsWindow? SettingsViewModel?? ?? ? ?? ??? ?? ?? / LSP / ?? ???? ????? ?? - WorkspaceContextGenerator? Language Snapshot, Agent Context, Key Manifests ??? ???? .claude/skills, .ax/rules, AXMEMORY.md ??? ?? - DeckRepairGuideService? ???? PptxSkill ??? Deck repair guide? ?? ?? - ?? ?? ???? ?? ???? ?? ? ?? ??: - dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_master_batch\\ -p:IntermediateOutputPath=obj\\verify_master_batch\\ - dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter AgentCommandQueueTests,CodeLanguageCatalogTests,WorkspaceContextGeneratorTests,PptxSkillConsultingDeckTests,DeckRepairGuideServiceTests -p:OutputPath=bin\\verify_master_batch_tests\\ -p:IntermediateOutputPath=obj\\verify_master_batch_tests\\
This commit is contained in:
@@ -31,4 +31,25 @@ public class AgentCommandQueueTests
|
||||
|
||||
queue.DrainAll().Should().BeEmpty();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DrainAll_ShouldIncludeSteeringPermissionAndResumeKinds()
|
||||
{
|
||||
var queue = new AgentCommandQueue();
|
||||
queue.EnqueueNotification("later-note");
|
||||
queue.EnqueueResume("resume");
|
||||
queue.EnqueuePermissionContinuation("continue-tool");
|
||||
queue.EnqueueSteering("steer-now");
|
||||
|
||||
var drained = queue.DrainAll();
|
||||
|
||||
drained.Select(x => x.Kind).Should().Equal(
|
||||
AgentCommandKind.Resume,
|
||||
AgentCommandKind.PermissionContinuation,
|
||||
AgentCommandKind.Steering,
|
||||
AgentCommandKind.Notification);
|
||||
drained[0].RequestInterrupt.Should().BeFalse();
|
||||
drained[1].RequestInterrupt.Should().BeTrue();
|
||||
drained[2].RequestInterrupt.Should().BeTrue();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,9 @@ public class CodeLanguageCatalogTests
|
||||
[InlineData(".cs", "csharp")]
|
||||
[InlineData(".py", "python")]
|
||||
[InlineData(".java", "java")]
|
||||
[InlineData(".go", null)]
|
||||
[InlineData(".go", "go")]
|
||||
[InlineData(".rs", "rust")]
|
||||
[InlineData(".php", "php")]
|
||||
[InlineData(".unknown", null)]
|
||||
public void DetectLspLanguageId_ShouldMatchCatalog(string extension, string? expected)
|
||||
{
|
||||
@@ -33,6 +35,15 @@ public class CodeLanguageCatalogTests
|
||||
CodeLanguageCatalog.BuildStaticSupportDescription().Should().Contain("Go");
|
||||
CodeLanguageCatalog.BuildStaticSupportDescription().Should().Contain("Rust");
|
||||
CodeLanguageCatalog.BuildLspSupportDescription().Should().Contain("C# (.NET)");
|
||||
CodeLanguageCatalog.BuildLspSupportDescription().Should().NotContain("Go");
|
||||
CodeLanguageCatalog.BuildLspSupportDescription().Should().Contain("Go");
|
||||
CodeLanguageCatalog.BuildLspSupportDescription().Should().Contain("Swift");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void QuickSelectDescription_ShouldRemainFocusedOnUiShortlist()
|
||||
{
|
||||
CodeLanguageCatalog.BuildQuickSelectSupportDescription().Should().Contain("C# (.NET)");
|
||||
CodeLanguageCatalog.BuildQuickSelectSupportDescription().Should().Contain("JavaScript / Vue");
|
||||
CodeLanguageCatalog.BuildQuickSelectSupportDescription().Should().NotContain("Go");
|
||||
}
|
||||
}
|
||||
|
||||
38
src/AxCopilot.Tests/Services/DeckRepairGuideServiceTests.cs
Normal file
38
src/AxCopilot.Tests/Services/DeckRepairGuideServiceTests.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using AxCopilot.Services.Agent;
|
||||
using FluentAssertions;
|
||||
using Xunit;
|
||||
|
||||
namespace AxCopilot.Tests.Services;
|
||||
|
||||
public class DeckRepairGuideServiceTests
|
||||
{
|
||||
[Fact]
|
||||
public void BuildGuide_ShouldReturnNone_WhenNoIssues()
|
||||
{
|
||||
var report = new DeckQualityReport(92, ["Includes Recommendation"], [], []);
|
||||
|
||||
var guide = DeckRepairGuideService.BuildGuide(report);
|
||||
|
||||
guide.Should().Be("Deck repair guide: none");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BuildGuide_ShouldTranslateDeckIssuesIntoActionableGuidance()
|
||||
{
|
||||
var report = new DeckQualityReport(
|
||||
61,
|
||||
[],
|
||||
[
|
||||
new DeckReviewIssue("Executive Summary slide is missing.", DeckReviewSeverity.Critical),
|
||||
new DeckReviewIssue("Slide 3: content density is high and should be simplified.", DeckReviewSeverity.Warning),
|
||||
new DeckReviewIssue("Evidence slides such as charts, tables, or comparisons are limited.", DeckReviewSeverity.Warning),
|
||||
],
|
||||
[]);
|
||||
|
||||
var guide = DeckRepairGuideService.BuildGuide(report);
|
||||
|
||||
guide.Should().Contain("Executive Summary");
|
||||
guide.Should().Contain("Reduce text density");
|
||||
guide.Should().Contain("evidence");
|
||||
}
|
||||
}
|
||||
@@ -102,6 +102,7 @@ public class PptxSkillConsultingDeckTests
|
||||
result.Success.Should().BeTrue();
|
||||
File.Exists(Path.Combine(workDir, "consulting-deck.pptx")).Should().BeTrue();
|
||||
result.Output.Should().Contain("PPTX");
|
||||
result.Output.Should().Contain("Deck repair guide:");
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
||||
@@ -182,6 +182,30 @@ public class WorkspaceContextGeneratorTests
|
||||
|
||||
var result = await WorkspaceContextGenerator.GenerateAsync(tempDir);
|
||||
result.Should().Contain("Node.js");
|
||||
result.Should().Contain("## Key Manifests");
|
||||
result.Should().Contain("Node package");
|
||||
}
|
||||
finally
|
||||
{
|
||||
Directory.Delete(tempDir, recursive: true);
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GenerateAsync_IncludesLanguageSnapshot()
|
||||
{
|
||||
var tempDir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString("N"));
|
||||
Directory.CreateDirectory(tempDir);
|
||||
try
|
||||
{
|
||||
File.WriteAllText(Path.Combine(tempDir, "main.go"), "package main");
|
||||
File.WriteAllText(Path.Combine(tempDir, "worker.go"), "package main");
|
||||
File.WriteAllText(Path.Combine(tempDir, "helper.py"), "print('hi')");
|
||||
|
||||
var result = await WorkspaceContextGenerator.GenerateAsync(tempDir);
|
||||
|
||||
result.Should().Contain("## Language Snapshot");
|
||||
result.Should().Contain("Go:");
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -217,10 +241,15 @@ public class WorkspaceContextGeneratorTests
|
||||
try
|
||||
{
|
||||
File.WriteAllText(Path.Combine(tempDir, "AGENTS.md"), "Agent rules here");
|
||||
var skillsDir = Path.Combine(tempDir, ".claude", "skills", "deck");
|
||||
Directory.CreateDirectory(skillsDir);
|
||||
File.WriteAllText(Path.Combine(skillsDir, "SKILL.md"), "# skill");
|
||||
|
||||
var result = await WorkspaceContextGenerator.GenerateAsync(tempDir);
|
||||
result.Should().Contain("## Existing Context Files");
|
||||
result.Should().Contain("AGENTS.md");
|
||||
result.Should().Contain("## Agent Context");
|
||||
result.Should().Contain(".claude/skills");
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user