Join destination scheduling to the canonical reveal generation, protect its share across every typed frame-budget dimension, and prevent stale work from clearing a replacement reservation. Remove forced incomplete materialization and project retail's centered portal wait cue while the authored tunnel remains active. Tests: Release build clean; 91 focused reservation/reveal tests; full solution 8,158 passed, 5 skipped. Co-authored-by: Codex <noreply@openai.com>
37 lines
1 KiB
C#
37 lines
1 KiB
C#
using AcDream.App.UI;
|
|
|
|
namespace AcDream.App.Tests.UI;
|
|
|
|
public sealed class PortalWaitNoticeControllerTests
|
|
{
|
|
[Fact]
|
|
public void Notice_IsCenteredOverlayAndDisposesFromRetainedRoot()
|
|
{
|
|
var root = new UiRoot
|
|
{
|
|
Width = 1280f,
|
|
Height = 720f,
|
|
};
|
|
|
|
using (var controller = new PortalWaitNoticeController(root))
|
|
{
|
|
UiText text = Assert.IsType<UiText>(Assert.Single(root.Children));
|
|
Assert.False(text.Visible);
|
|
Assert.True(text.Centered);
|
|
Assert.True(text.ClickThrough);
|
|
Assert.Equal(root.Width, text.Width);
|
|
Assert.Equal(root.Height, text.Height);
|
|
|
|
controller.Set("In Portal Space - Please Wait...");
|
|
|
|
Assert.True(text.Visible);
|
|
UiText.Line line = Assert.Single(text.LinesProvider!());
|
|
Assert.Equal("In Portal Space - Please Wait...", line.Text);
|
|
|
|
controller.Set(null);
|
|
Assert.False(text.Visible);
|
|
}
|
|
|
|
Assert.Empty(root.Children);
|
|
}
|
|
}
|