44 lines
1.3 KiB
C#
44 lines
1.3 KiB
C#
using AcDream.App.Plugins;
|
|
using AcDream.App.UI;
|
|
|
|
namespace AcDream.App.Tests.Plugins;
|
|
|
|
public class BufferedUiRegistryTests
|
|
{
|
|
[Fact]
|
|
public void Drain_YieldsBufferedRegistrationsOnceThenEmpty()
|
|
{
|
|
var reg = new BufferedUiRegistry();
|
|
reg.AddMarkupPanel("a.xml", new object());
|
|
reg.AddMarkupPanel("b.xml", new object());
|
|
|
|
var drained = reg.Drain();
|
|
Assert.Equal(2, drained.Count);
|
|
Assert.Equal("a.xml", drained[0].MarkupPath);
|
|
Assert.Equal("b.xml", drained[1].MarkupPath);
|
|
|
|
Assert.Empty(reg.Drain()); // consumed
|
|
}
|
|
|
|
[Fact]
|
|
public void ScopedRegistrationTokenRemovesAnAlreadyMountedElement()
|
|
{
|
|
var registry = new BufferedUiRegistry();
|
|
IDisposable registration = registry.RegisterMarkupPanel(
|
|
"plugin.xml",
|
|
new object());
|
|
BufferedUiRegistry.Pending pending = Assert.Single(registry.Drain());
|
|
var root = new UiRoot();
|
|
var element = new UiPanel();
|
|
root.AddChild(element);
|
|
registry.CompleteMount(pending, root, element);
|
|
|
|
Assert.Contains(element, root.Children);
|
|
Assert.Equal(1, registry.RegistrationCount);
|
|
|
|
registration.Dispose();
|
|
|
|
Assert.DoesNotContain(element, root.Children);
|
|
Assert.Equal(0, registry.RegistrationCount);
|
|
}
|
|
}
|