浏览代码

add a failing unit test

Dan Walmsley 3 年之前
父节点
当前提交
0553c7ceab
共有 1 个文件被更改,包括 45 次插入0 次删除
  1. 45 0
      tests/Avalonia.Controls.UnitTests/WindowTests.cs

+ 45 - 0
tests/Avalonia.Controls.UnitTests/WindowTests.cs

@@ -540,6 +540,51 @@ namespace Avalonia.Controls.UnitTests
                 Assert.Equal(window.Position, expectedPosition);
             }
         }
+        
+        [Fact]
+        public void Window_Should_Be_Centered_When_WindowStartupLocation_Is_CenterScreen_1080_175()
+        {
+            var screen1 = new Mock<Screen>(1.75, new PixelRect(new PixelSize(1920, 1080)), new PixelRect(new PixelSize(1920, 966)), true);
+
+            var screens = new Mock<IScreenImpl>();
+            screens.Setup(x => x.AllScreens).Returns(new Screen[] { screen1.Object });
+            screens.Setup(x => x.ScreenFromPoint(It.IsAny<PixelPoint>())).Returns(screen1.Object);
+            
+
+            var windowImpl = MockWindowingPlatform.CreateWindowMock();
+            windowImpl.Setup(x => x.DesktopScaling).Returns(1.75);
+            windowImpl.Setup(x => x.RenderScaling).Returns(1.75);
+            windowImpl.Setup(x => x.Screen).Returns(screens.Object);
+
+            var clientSize = new Size(801.142, 366);
+            
+            windowImpl.Setup(x => x.ClientSize).Returns(() => clientSize);
+
+            windowImpl.Setup(x => x.Resize(It.IsAny<Size>(), It.IsAny<PlatformResizeReason>()))
+                .Callback<Size, PlatformResizeReason>((x, y) =>
+                {
+                    clientSize = x;//.Constrain(screen1.Object.Bounds.Size.ToSize(1.75));
+                    windowImpl.Object.Resized?.Invoke(clientSize, y);
+                });
+
+            windowImpl.Setup(x => x.FrameSize).Returns(() => clientSize.Inflate(new Thickness(5, 25, 5, 5)));
+            
+            using (UnitTestApplication.Start(TestServices.StyledWindow))
+            {
+                var window = new Window(windowImpl.Object);
+                window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
+                window.MinWidth = 720;
+                window.MinHeight = 480;
+                //window.Width = 720;
+                //window.Height = 480;
+
+                window.Show();
+
+                var expectedPosition = new PixelPoint(321, 36);
+
+                Assert.Equal(window.Position, expectedPosition);
+            }
+        }
 
         [Fact]
         public void Window_Should_Be_Centered_Relative_To_Owner_When_WindowStartupLocation_Is_CenterOwner()