using System; using System.IO; using ImageCatalog; using ImageCatalog_2.Services; using Microsoft.VisualStudio.TestTools.UnitTesting; using Shouldly; namespace MaddoShared.Tests; [TestClass] public class PickerPreferenceServiceTests { [TestMethod] public void RememberValue_PersistsExactFilePath() { using var tempDirectory = new TemporaryDirectory(); var preferencesFile = Path.Combine(tempDirectory.Path, "userprefs.xml"); var service = new PickerPreferenceService(new ParametriSetup(preferencesFile)); var settingsFile = Path.Combine(tempDirectory.Path, "nested", "settings.xml"); service.RememberValue(PickerPreferenceKeys.LastSettingsFile, settingsFile); service.GetRememberedValue(PickerPreferenceKeys.LastSettingsFile).ShouldBe(settingsFile); } [TestMethod] public void ForgetValue_RemovesStoredPreference() { using var tempDirectory = new TemporaryDirectory(); var preferencesFile = Path.Combine(tempDirectory.Path, "userprefs.xml"); var service = new PickerPreferenceService(new ParametriSetup(preferencesFile)); service.RememberValue(PickerPreferenceKeys.LastSettingsFile, Path.Combine(tempDirectory.Path, "settings.xml")); service.ForgetValue(PickerPreferenceKeys.LastSettingsFile); service.GetRememberedValue(PickerPreferenceKeys.LastSettingsFile).ShouldBeNull(); } private sealed class TemporaryDirectory : IDisposable { public TemporaryDirectory() { Path = System.IO.Path.Combine(System.IO.Path.GetTempPath(), System.IO.Path.GetRandomFileName()); Directory.CreateDirectory(Path); } public string Path { get; } public void Dispose() { if (Directory.Exists(Path)) { Directory.Delete(Path, recursive: true); } } } }