Files
OpenNest/OpenNest.WinForms.Tests/Forms/NestValidationFormTests.cs
T
ajandClaude Opus 5.5 4d55e11318 style: use one spelling across the codebase
The repo mixed variants such as center/centre and color/colour, so a
name could be spelled either way and searches missed half the hits.
Standardize on the US spelling, matching .NET's own APIs (Color, Center).

Wire values owned by other systems keep their spelling: the material
ledger's "Cancelled" hold status and GitHub's "cancelled" job status.

No behavior change beyond the spelling of a few status messages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 16:11:30 -04:00

67 lines
2.3 KiB
C#

using System.Windows.Forms;
using OpenNest.Forms;
namespace OpenNest.WinForms.Tests.Forms;
public class NestValidationFormTests
{
[Theory]
[InlineData(true)]
[InlineData(false)]
public void DiscardIsDefaultAndMalformedOutputCannotBeKept(bool canKeep)
{
RunSta(() =>
{
using var form = new NestValidationForm(new[] { "part A and part B violate spacing" }, canKeep);
var buttons = form.Controls.OfType<FlowLayoutPanel>().Single().Controls.OfType<Button>().ToArray();
var discard = Assert.Single(buttons, b => b.Text == "Discard");
var keep = Assert.Single(buttons, b => b.Text == "Keep anyway");
Assert.Same(discard, form.AcceptButton);
Assert.Same(discard, form.CancelButton);
Assert.Equal(canKeep, keep.Enabled);
Assert.Contains("violate spacing", form.Controls.OfType<TextBox>().Single().Text);
});
}
private sealed class TestProgress(CancellationTokenSource cts) : NestProgressForm(cts)
{
public FormClosingEventArgs RequestClose()
{
var args = new FormClosingEventArgs(CloseReason.UserClosing, false);
OnFormClosing(args);
return args;
}
}
[Fact]
public void ClosingWholeJobProgressWaitsForWorkerAndRequestsCancellation()
{
RunSta(() =>
{
using var cts = new CancellationTokenSource();
using var form = new TestProgress(cts) { HoldOpenUntilCompleted = true };
Assert.True(form.Controls.Find("stopButton", true).Single().Enabled);
Assert.True(form.RequestClose().Cancel);
Assert.True(cts.IsCancellationRequested);
form.ShowCompleted();
Assert.False(form.RequestClose().Cancel);
});
}
[Fact]
public void CompletionClosesWithoutCancelingSuccessfulJob()
{
RunSta(() =>
{
using var cts = new CancellationTokenSource();
using var form = new TestProgress(cts) { HoldOpenUntilCompleted = true };
form.ShowCompleted();
Assert.False(form.RequestClose().Cancel);
Assert.False(cts.IsCancellationRequested);
});
}
private static void RunSta(Action action) =>
StaTestThread.Run(action, TimeSpan.FromSeconds(15), "The STA test did not complete.");
}