using System.Windows; using Xunit; namespace ytLive.Tests; /// /// Launch placement (2026-10-04). The window used to restore a saved position clamped to /// [work.Left - width + 120, work.Right - 120] horizontally and /// [work.Top, work.Bottom - 80] vertically — ranges wide enough to leave most of the /// window off-screen (the creator's "below the fold"). Launch position is now derived: /// upper-left of the work area plus padding. /// public class WindowPlacementTests { /// Three properties in one guard, because the third is the regression: /// (1) the requested inset, (2) a window that nearly fills the screen is pulled back /// so it stays wholly visible — padding must never win over visibility, or a /// large window re-creates "below the fold" — and (3) a window too big to fit falls /// back to the work-area origin rather than hanging off an edge. Work area is /// 1920x1040 at the origin (a taskbar-less secondary-style rect) to prove the maths /// does not quietly assume (0,0). [Theory] [InlineData(1280, 800, 75, 75)] // padding wins when it fits [InlineData(1900, 1000, 20, 40)] // does not fit -> pulled back on-screen [InlineData(2400, 1200, 0, 0)] // larger than the work area -> origin public void TopLeftPlacement_PadsButNeverHangsOffScreen(int width, int height, double expX, double expY ) { var work = new Rect(0, 0, 1920, 1040); var place = MainWindow.TopLeftPlacement(work, width, height, 75); Assert.Equal(expX, place.X); Assert.Equal(expY, place.Y); // Whatever the size, the window must not start beyond the work area when it fits. if (width <= work.Width) Assert.True(place.X >= work.Left, $"left {place.X} hangs off"); if (height <= work.Height) Assert.True(place.Y >= work.Top, $"top {place.Y} hangs off"); } /// Padding is applied to a work area that does not start at the origin — the /// secondary-monitor case. A hardcoded Left = 75 would drop the window off the /// left edge of a monitor whose work area begins at a negative X. [Fact] public void TopLeftPlacement_OffsetsFromTheWorkAreaOrigin_NotFromZero() { var secondary = new Rect(-1920, -200, 1920, 1040); var place = MainWindow.TopLeftPlacement(secondary, 1280, 800, 75); Assert.Equal(-1845, place.X); Assert.Equal(-125, place.Y); } }