diff --git a/OpenNest.WinForms.Tests/Controls/ValidationOverlayTests.cs b/OpenNest.WinForms.Tests/Controls/ValidationOverlayTests.cs new file mode 100644 index 0000000..82a9cc3 --- /dev/null +++ b/OpenNest.WinForms.Tests/Controls/ValidationOverlayTests.cs @@ -0,0 +1,47 @@ +using System.Drawing; +using OpenNest.Controls; +using OpenNest.Diagnostics; +using OpenNest.Geometry; + +namespace OpenNest.WinForms.Tests.Controls; + +public class ValidationOverlayTests +{ + [Fact] + public void RapidContactCrosshairIsDrawnAtContactAndClearedWithFinding() => RunSta(() => + { + using var view = new PlateView(); + view.ShowValidationFinding(new PostVerificationFinding(PostVerificationKind.RapidCrossing, 1, 2, 1, "crossing") + { + RapidStart = new Vector(-1, 0), + RapidEnd = new Vector(1, 0), + ContactPoints = Array.AsReadOnly(new[] { Vector.Zero }) + }); + using var bitmap = new Bitmap(120, 120); + using var graphics = Graphics.FromImage(bitmap); + graphics.TranslateTransform(60, 60); + graphics.Clear(Color.Black); + view.ValidationOverlay.Draw(graphics); + var pixel = bitmap.GetPixel(60, 65); + Assert.True(pixel.R > 150 && pixel.B > 50 && pixel.G < 100); + view.ClearValidationFinding(); + graphics.Clear(Color.Black); + view.ValidationOverlay.Draw(graphics); + Assert.Equal(Color.Black.ToArgb(), bitmap.GetPixel(60, 65).ToArgb()); + }); + + [Fact] + public void PlateSwitchClearsAnimation() => RunSta(() => + { + using var view = new PlateView(); + view.ShowValidationFinding(new PostVerificationFinding(PostVerificationKind.MissingLeadIn, 1, 1, null, "missing") + { Location = new Vector(3, 4) }); + Assert.True(view.ValidationOverlay.IsAnimating); + view.Plate = new Plate(); + Assert.False(view.ValidationOverlay.IsAnimating); + Assert.Null(view.ValidationOverlay.Finding); + }); + + private static void RunSta(System.Action action) => + StaTestThread.Run(action, TimeSpan.FromSeconds(30), "Validation overlay test timed out."); +} diff --git a/OpenNest.WinForms.Tests/Forms/CuttingInspectionPanelTests.cs b/OpenNest.WinForms.Tests/Forms/CuttingInspectionPanelTests.cs index ef10401..2be5fb8 100644 --- a/OpenNest.WinForms.Tests/Forms/CuttingInspectionPanelTests.cs +++ b/OpenNest.WinForms.Tests/Forms/CuttingInspectionPanelTests.cs @@ -220,7 +220,20 @@ public class CuttingInspectionPanelTests Assert.False(accept.Checked); PumpUntil(() => panel.Proposal != null && !panel.IsPlanning); Assert.False(Field