7 instantiations of TraySavedState
Aspire.Tray.Tests (7)
src\Aspire.Tray\Common\TraySavedState.cs (1)
16public static TraySavedState Empty { get; } = new([]);
TrayControllerPreferencesTests.cs (3)
77var saved = new TraySavedState(paths.Select(path => new SavedAppHost(path, true, true)).ToArray()) { ConfirmStop = false }; 95var saved = new TraySavedState(Enumerable.Range(0, 20) 116var saved = new TraySavedState(paths.Select(path => new SavedAppHost(path, false, true)).ToArray()) { ConfirmStop = false };
TraySavedStateTests.cs (2)
129var state = new TraySavedState(paths.Select(path => new SavedAppHost(path, false, true)).ToArray()); 139var state = new TraySavedState(Enumerable.Range(0, 51)
TrayUserPreferencesTests.cs (1)
27var saved = new TraySavedState([new(host, true, true)]) { ConfirmStop = false };
95 references to TraySavedState
Aspire.Tray.Tests (95)
Helpers\TestTraySavedStateStore.cs (4)
6internal sealed class TestTraySavedStateStore(TraySavedState state) : ITraySavedStateStore 9private TraySavedState _state = state; 35public TraySavedState Load() 43public void Save(TraySavedState state)
src\Aspire.Tray\Common\FileTraySavedStateStore.cs (6)
39public TraySavedState Load() 51var state = contents is null ? TraySavedState.Empty 76public void Save(TraySavedState state) 165private static void Validate(TraySavedState state) 183|| (host.IsRecent && ++recent > TraySavedState.MaximumRecentAppHosts)) 193[JsonSerializable(typeof(TraySavedState))]
src\Aspire.Tray\Common\TrayConfiguration.cs (4)
85return TraySavedState.DefaultRecentAppHostLimit; 94if (!valid || limit is < 0 or > TraySavedState.MaximumRecentAppHosts) 102return TraySavedState.DefaultRecentAppHostLimit; 131+ $"and {RecentAppHostLimitKey} must be an integer from 0 to {TraySavedState.MaximumRecentAppHosts}. "
src\Aspire.Tray\Common\TrayController.cs (10)
20private TraySavedState _savedState = TraySavedState.Empty; 36: this(client, savedStateStore, TraySavedState.DefaultRecentAppHostLimit) 48ArgumentOutOfRangeException.ThrowIfGreaterThan(recentAppHostLimit, TraySavedState.MaximumRecentAppHosts); 62var trimmed = _savedState.Trim(_recentAppHostLimit); 191private void UpdateSavedState(Func<TraySavedState, TraySavedState> update) 199var next = update(_savedState); 547var state = _savedState; 561private bool TrySaveStateLocked(TraySavedState state)
src\Aspire.Tray\Common\TraySavedState.cs (14)
16public static TraySavedState Empty { get; } = new([]); 32public TraySavedState Remember(string appHostPath) => Remember(appHostPath, DefaultRecentAppHostLimit); 34public TraySavedState Remember(string appHostPath, int recentAppHostLimit) 44public TraySavedState SetPinned(string appHostPath, bool pinned) 58public TraySavedState ClearRecent() 61public TraySavedState RemoveRecent(string appHostPath) 69public TraySavedState RemoveMissingPins(IReadOnlySet<string> missingPaths) 72public TraySavedState Trim(int recentAppHostLimit) 93TraySavedState Load(); 94void Save(TraySavedState state); 99private TraySavedState _state = TraySavedState.Empty; 101public TraySavedState Load() => _state; 103public void Save(TraySavedState state) => _state = state;
TrayControllerPinPruningTests.cs (10)
22store.Save(TraySavedState.Empty.Remember(retained).SetPinned(retained, true) 42var reloaded = new FileTraySavedStateStore(directory.StatePath).Load(); 54store.Save(TraySavedState.Empty.Remember(path).SetPinned(path, true)); 81store.Save(TraySavedState.Empty.Remember(path).SetPinned(path, true)); 112store.Save(TraySavedState.Empty.Remember(path).SetPinned(path, true)); 138store.Save(TraySavedState.Empty.Remember(path)); 162store.Save(TraySavedState.Empty.Remember(path).SetPinned(path, true)); 201store.Save(TraySavedState.Empty.Remember(path).SetPinned(path, true)); 243store.Save(TraySavedState.Empty.Remember(restricted).Remember(deleted)); 268store.Save(TraySavedState.Empty.Remember(path).SetPinned(path, true));
TrayControllerPreferencesTests.cs (8)
40var store = new TestTraySavedStateStore(TraySavedState.Empty) { FailSaves = true }; 77var saved = new TraySavedState(paths.Select(path => new SavedAppHost(path, true, true)).ToArray()) { ConfirmStop = false }; 81var reloaded = new FileTraySavedStateStore(directory.StatePath).Load(); 95var saved = new TraySavedState(Enumerable.Range(0, 20) 105var reloaded = new FileTraySavedStateStore(directory.StatePath).Load(); 116var saved = new TraySavedState(paths.Select(path => new SavedAppHost(path, false, true)).ToArray()) { ConfirmStop = false }; 142var store = new TestTraySavedStateStore(TraySavedState.Empty); 177var store = new TestTraySavedStateStore(TraySavedState.Empty);
TrayControllerSavedStateTests.cs (2)
185store.Save(TraySavedState.Empty.Remember(pinned).Remember(recent).SetPinned(pinned, true)); 433store.Save(TraySavedState.Empty.Remember(path).SetPinned(path, true));
TraySavedStateTests.cs (30)
27var saved = TraySavedState.Empty.Remember(first).Remember(second).SetPinned(first, true); 30var reloaded = new FileTraySavedStateStore(directory.StatePath).Load(); 44var saved = TraySavedState.Empty.Remember(paths[0]).SetPinned(paths[0], true); 68var state = (TraySavedState.Empty with { ConfirmStop = false }).SetPinned(paths[0], true); 86var state = (TraySavedState.Empty with { ConfirmStop = false }).Remember(pinned).SetPinned(pinned, true).Remember(recent); 87TraySavedState[] transformed = 102Assert.True(TraySavedState.Empty.ConfirmStop); 112var state = TraySavedState.Empty.Remember(path).SetPinned(path, true) with { ConfirmStop = confirmStop }; 115var reloaded = new FileTraySavedStateStore(directory.StatePath).Load(); 129var state = new TraySavedState(paths.Select(path => new SavedAppHost(path, false, true)).ToArray()); 139var state = new TraySavedState(Enumerable.Range(0, 51) 142store.Save(TraySavedState.Empty); 155var saved = TraySavedState.Empty.Remember(original).SetPinned(original, true).Remember(differentlyCased); 174var saved = TraySavedState.Empty.Remember(missing).SetPinned(missing, true).Remember(recent); 192var state = TraySavedState.Empty.Remember(pinned).SetPinned(pinned, true) 218Assert.Throws<InvalidDataException>(() => store.Save(TraySavedState.Empty.Remember(Path.GetFullPath("apphost.cs")))); 227store.Save(TraySavedState.Empty); 230Assert.Throws<IOException>(() => store.Save(TraySavedState.Empty.Remember(Path.GetFullPath("apphost.cs")))); 240store.Save(TraySavedState.Empty.Remember(path)); 241store.Save(TraySavedState.Empty.Remember(path).SetPinned(path, true)); 242store.Save(TraySavedState.Empty); 256new FileTraySavedStateStore(directory.StatePath).Save(TraySavedState.Empty);
TrayUserPreferencesTests.cs (7)
16store.Save(TraySavedState.Empty with { ConfirmStop = false }); 27var saved = new TraySavedState([new(host, true, true)]) { ConfirmStop = false }; 31var loaded = FileTraySavedStateStore.CreateWithLegacyMigration(directory.UserStatePath, directory.LegacyDirectory).Load(); 44.Save(TraySavedState.Empty with { ConfirmStop = false }); 45new FileTraySavedStateStore(directory.UserStatePath).Save(TraySavedState.Empty); 47var loaded = FileTraySavedStateStore.CreateWithLegacyMigration(directory.UserStatePath, directory.LegacyDirectory).Load(); 63Assert.Throws<InvalidDataException>(() => store.Save(TraySavedState.Empty));