diff --git a/OpenNest.WinForms.Tests/Forms/NestDefaultsFormTests.cs b/OpenNest.WinForms.Tests/Forms/NestDefaultsFormTests.cs new file mode 100644 index 00000000..f350fdf2 --- /dev/null +++ b/OpenNest.WinForms.Tests/Forms/NestDefaultsFormTests.cs @@ -0,0 +1,61 @@ +using System.Windows.Forms; +using OpenNest.Data; +using OpenNest.Forms; +using OpenNest.Geometry; + +namespace OpenNest.WinForms.Tests.Forms; + +public class NestDefaultsFormTests +{ + [Fact] + public void SwitchingUnitsConvertsTheShownValues() + { + RunSta(() => + { + var machine = new MachineConfig { Name = "Laser" }; + var defaults = new NestDefaults + { + Units = Units.Inches, + Size = new Size(48, 96), + Quadrant = 3, + PartSpacing = 0.25, + EdgeSpacing = new Spacing(0.5, 1, 1.5, 2), + MachineId = machine.Id, + }; + using var form = new NestDefaultsForm(defaults, new[] { machine }, ("Saved on this PC.", false)); + Assert.Equal("in", Control(form, "widthBox").Suffix); + + Control(form, "millimetersRadio").Checked = true; + + var converted = form.GetDefaults(); + Assert.Equal(Units.Millimeters, converted.Units); + Assert.Equal(new Size(1219.2, 2438.4), converted.Size); + Assert.Equal(6.35, converted.PartSpacing); + Assert.Equal(new Spacing(12.7, 25.4, 38.1, 50.8), converted.EdgeSpacing); + Assert.Equal(3, converted.Quadrant); + Assert.Equal(machine.Id, converted.MachineId); + Assert.Equal("mm", Control(form, "edgeTopBox").Suffix); + + Control(form, "inchesRadio").Checked = true; + Assert.Equal(new Size(48, 96), form.GetDefaults().Size); + }); + } + + [Fact] + public void ReadOnlySourceDisablesSave() + { + RunSta(() => + { + using var form = new NestDefaultsForm(new NestDefaults(), Array.Empty(), + ("Shared, read-only: the server cannot be reached.", true)); + Assert.False(Control