Introduce dual-script ONNX NER routing (English/Tamil/mixed), Tamil console samples and integration tests, model download scripts, and a resizable WPF MVVM harness with click-to-load prompts, batch validation, and runtime-adjustable detection panels.
27 lines
1.1 KiB
C#
27 lines
1.1 KiB
C#
using FluentAssertions;
|
|
using PiiRedaction.Core.Models;
|
|
using PiiRedaction.Core.Tests.TestSupport;
|
|
|
|
namespace PiiRedaction.Core.Tests.Integration;
|
|
|
|
[TestFixture]
|
|
public sealed class GoldenPromptTests
|
|
{
|
|
[TestCaseSource(typeof(PromptScenarioCatalog), nameof(PromptScenarioCatalog.AllScenarios))]
|
|
[TestCaseSource(typeof(TamilPromptScenarioCatalog), nameof(TamilPromptScenarioCatalog.AllScenarios))]
|
|
public void Sanitize_PromptScenario_ProducesExpectedOutput(PromptScenario scenario)
|
|
{
|
|
var sanitizer = ProductionPipelineFactory.CreateForScenario(scenario);
|
|
var result = sanitizer.Sanitize(new SanitizationRequest(scenario.Prompt));
|
|
|
|
result.SanitizedPrompt.Should().Be(scenario.ExpectedSanitized, because: scenario.Name);
|
|
result.DetectedEntities.Select(entity => entity.Type)
|
|
.Should().BeEquivalentTo(scenario.ExpectedTypes, because: scenario.Name);
|
|
|
|
foreach (var forbidden in scenario.MustNotContainInSanitized)
|
|
{
|
|
result.SanitizedPrompt.Should().NotContain(forbidden, because: scenario.Name);
|
|
}
|
|
}
|
|
}
|