Max Katz 2 роки тому
батько
коміт
0d6306725a
1 змінених файлів з 30 додано та 46 видалено
  1. 30 46
      tests/Avalonia.Controls.UnitTests/ButtonTests.cs

+ 30 - 46
tests/Avalonia.Controls.UnitTests/ButtonTests.cs

@@ -3,9 +3,11 @@ using System.Windows.Input;
 using Avalonia.Data;
 using Avalonia.Input;
 using Avalonia.Interactivity;
+using Avalonia.Layout;
 using Avalonia.Media;
 using Avalonia.Platform;
 using Avalonia.Rendering;
+using Avalonia.Threading;
 using Avalonia.UnitTests;
 using Avalonia.VisualTree;
 using Moq;
@@ -14,7 +16,7 @@ using MouseButton = Avalonia.Input.MouseButton;
 
 namespace Avalonia.Controls.UnitTests
 {
-    public class ButtonTests
+    public class ButtonTests : ScopedTestBase
     {
         private MouseTestHelper _helper = new MouseTestHelper();
         
@@ -139,11 +141,19 @@ namespace Avalonia.Controls.UnitTests
             renderer.Setup(r => r.HitTest(It.IsAny<Point>(), It.IsAny<Visual>(), It.IsAny<Func<Visual, bool>>()))
                 .Returns<Point, Visual, Func<Visual, bool>>((p, r, f) =>
                     r.Bounds.Contains(p) ? new Visual[] { r } : new Visual[0]);
-
-            var target = new TestButton(renderer.Object)
+            
+            using var _ = UnitTestApplication.Start(TestServices.StyledWindow);
+            
+            var root = new Window() { HitTesterOverride = renderer.Object };
+            var target = new Button()
             {
-                Bounds = new Rect(0, 0, 100, 100)
+                Width = 100,
+                Height = 100,
+                VerticalAlignment = VerticalAlignment.Top,
+                HorizontalAlignment = HorizontalAlignment.Left
             };
+            root.Content = target;
+            root.Show();
 
             bool clicked = false;
 
@@ -165,16 +175,13 @@ namespace Avalonia.Controls.UnitTests
         [Fact]
         public void Button_Does_Not_Raise_Click_When_PointerReleased_Outside()
         {
-            var renderer = new Mock<IHitTester>();
-
-            renderer.Setup(r => r.HitTest(It.IsAny<Point>(), It.IsAny<Visual>(), It.IsAny<Func<Visual, bool>>()))
-                .Returns<Point, Visual, Func<Visual, bool>>((p, r, f) =>
-                    r.Bounds.Contains(p) ? new Visual[] { r } : new Visual[0]);
-
-            var target = new TestButton(renderer.Object)
+            var root = new TestRoot();
+            var target = new Button()
             {
-                Bounds = new Rect(0, 0, 100, 100)
+                Width = 100,
+                Height = 100
             };
+            root.Child = target;
 
             bool clicked = false;
 
@@ -203,12 +210,20 @@ namespace Avalonia.Controls.UnitTests
                 .Returns<Point, Visual, Func<Visual, bool>>((p, r, f) =>
                     r.Bounds.Contains(p.Transform(r.RenderTransform.Value.Invert())) ?
                     new Visual[] { r } : new Visual[0]);
-
-            var target = new TestButton(renderer.Object)
+            
+            using var _ = UnitTestApplication.Start(TestServices.StyledWindow);
+            
+            var root = new Window() { HitTesterOverride = renderer.Object };
+            var target = new Button()
             {
-                Bounds = new Rect(0, 0, 100, 100),
+                Width = 100,
+                Height = 100,
+                VerticalAlignment = VerticalAlignment.Top,
+                HorizontalAlignment = HorizontalAlignment.Left,
                 RenderTransform = new TranslateTransform { X = 100, Y = 0 }
             };
+            root.Content = target;
+            root.Show();
 
             //actual bounds of button should  be 100,0,100,100 x -> translated 100 pixels
             //so mouse with x=150 coordinates should trigger click
@@ -381,37 +396,6 @@ namespace Avalonia.Controls.UnitTests
             return new KeyEventArgs { RoutedEvent = InputElement.KeyDownEvent, Key = key, Source = source };
         }
 
-        private class TestButton : Button, IRenderRoot
-        {
-            public TestButton(IHitTester hit)
-            {
-                IsVisible = true;
-                HitTester = hit;
-                Renderer = new NullRenderer();
-            }
-
-            public new Rect Bounds
-            {
-                get => base.Bounds;
-                set => base.Bounds = value;
-            }
-
-            public Size ClientSize => throw new NotImplementedException();
-
-            public IRenderer Renderer { get; }
-            public IHitTester HitTester { get; }
-
-            public double RenderScaling => throw new NotImplementedException();
-
-            public IRenderTarget CreateRenderTarget() => throw new NotImplementedException();
-
-            public void Invalidate(Rect rect) => throw new NotImplementedException();
-
-            public Point PointToClient(PixelPoint p) => throw new NotImplementedException();
-
-            public PixelPoint PointToScreen(Point p) => throw new NotImplementedException();
-        }
-
         private void RaisePointerPressed(Button button, int clickCount, MouseButton mouseButton, Point position)
         {
             _helper.Down(button, mouseButton, position, clickCount: clickCount);