using AcDream.Plugin.Abstractions; using AcDream.Plugins.MossTank.Expressions; namespace AcDream.Plugins.MossTank.Tests; public sealed class MetaViewManagerTests { private const string Markup = ""; [Fact] public void CreateReplaceDestroyAndDestroyAllOwnTheRegistrationTokens() { var ui = new RecordingUiRegistry(); var manager = new MetaViewManager(new StubHost(ui)); Assert.True(manager.Create("Status", Markup)); Registration first = Assert.Single(ui.Registrations); Assert.Equal("Status", first.Descriptor.Title); Assert.True(first.Descriptor.ShowInSidePanel); Assert.True(manager.Create("Status", Markup)); Assert.True(first.Disposed); Assert.Equal(1, manager.Count); Assert.True(manager.Destroy("Status")); Assert.True(ui.Registrations[^1].Disposed); Assert.False(manager.Destroy("Status")); Assert.True(manager.Create("One", Markup)); Assert.True(manager.Create("Two", Markup)); manager.DestroyAll(); Assert.Equal(0, manager.Count); Assert.All(ui.Registrations[^2..], static registration => Assert.True(registration.Disposed)); } [Fact] public void InvalidMarkupAndTheOfficialViewBoundaryArePreserved() { var manager = new MetaViewManager(new StubHost(new RecordingUiRegistry())); Assert.False(manager.Create("Bad", "not xml")); Assert.False(manager.Create("Bad", "