using OpenNest.Data; using OpenNest.Support; namespace OpenNest.Tests.Data; /// /// The machine support grid store (%APPDATA%\OpenNest\support-grid.json): off by default, a /// never-throwing read that keeps each invalid value's default, and unit conversion for new nests. /// public class SupportGridSettingsTests : IDisposable { private readonly string _directory = Path.Combine(Path.GetTempPath(), "OpenNestTests", Guid.NewGuid().ToString()); private readonly string _path; public SupportGridSettingsTests() { Directory.CreateDirectory(_directory); _path = Path.Combine(_directory, "support-grid.json"); } public void Dispose() { if (Directory.Exists(_directory)) Directory.Delete(_directory, recursive: true); } [Fact] public void MissingFile_IsOffAndGivesNewNestsNoGrid() { var settings = SupportGridSettings.Load(_path); var nest = new Nest(); settings.ApplyToNewNest(nest); Assert.False(settings.Enabled); Assert.Null(nest.SupportBed); } [Fact] public void SavedSettingsRoundTripAndConvertToMillimeterNests() { new SupportGridSettings { Enabled = true, PitchX = 2, PitchY = 1, OffsetX = 0.5, OffsetY = -0.25, RegistrationTolerance = 0.125, StabilityMargin = 0.25, }.Save(_path); var nest = new Nest { Units = Units.Millimeters }; SupportGridSettings.Load(_path).ApplyToNewNest(nest); var grid = Assert.IsType(nest.SupportBed); Assert.Equal(50.8, grid.PitchX, 9); Assert.Equal(25.4, grid.PitchY, 9); Assert.Equal(-6.35, grid.OffsetY, 9); Assert.Equal(6.35, grid.StabilityMargin, 9); } [Fact] public void InvalidValues_KeepTheirDefaults_AndBadJsonLoadsAsOff() { File.WriteAllText(_path, """{"enabled":true,"pitchX":-1,"pitchY":"x","offsetX":0.5,"stabilityMargin":-2}"""); var settings = SupportGridSettings.Load(_path); Assert.True(settings.Enabled); Assert.Equal(new SupportGridSettings().PitchX, settings.PitchX); Assert.Equal(new SupportGridSettings().PitchY, settings.PitchY); Assert.Equal(0.5, settings.OffsetX); Assert.Equal(new SupportGridSettings().StabilityMargin, settings.StabilityMargin); File.WriteAllText(_path, "{ not json"); Assert.False(SupportGridSettings.Load(_path).Enabled); } }