| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- using Avalonia.Controls;
- using Avalonia.Input.Raw;
- using Avalonia.Layout;
- using Avalonia.Rendering;
- using Avalonia.UnitTests;
- using Avalonia.VisualTree;
- using Moq;
- using System;
- using Xunit;
- namespace Avalonia.Input.UnitTests
- {
- public class MouseDeviceTests
- {
- [Fact]
- public void MouseMove_Should_Update_PointerOver()
- {
- var renderer = new Mock<IRenderer>();
- using (TestApplication(renderer.Object))
- {
- var inputManager = InputManager.Instance;
- Canvas canvas;
- Border border;
- Decorator decorator;
- var root = new TestRoot
- {
- MouseDevice = new MouseDevice(),
- Renderer = renderer.Object,
- Child = new Panel
- {
- Children =
- {
- (canvas = new Canvas()),
- (border = new Border
- {
- Child = decorator = new Decorator(),
- })
- }
- }
- };
- renderer.Setup(x => x.HitTest(It.IsAny<Point>(), It.IsAny<Func<IVisual, bool>>()))
- .Returns(new[] { decorator });
- inputManager.ProcessInput(new RawMouseEventArgs(
- root.MouseDevice,
- 0,
- root,
- RawMouseEventType.Move,
- new Point(),
- InputModifiers.None));
- Assert.True(decorator.IsPointerOver);
- Assert.True(border.IsPointerOver);
- Assert.False(canvas.IsPointerOver);
- Assert.True(root.IsPointerOver);
- renderer.Setup(x => x.HitTest(It.IsAny<Point>(), It.IsAny<Func<IVisual, bool>>()))
- .Returns(new[] { canvas });
- inputManager.ProcessInput(new RawMouseEventArgs(
- root.MouseDevice,
- 0,
- root,
- RawMouseEventType.Move,
- new Point(),
- InputModifiers.None));
- Assert.False(decorator.IsPointerOver);
- Assert.False(border.IsPointerOver);
- Assert.True(canvas.IsPointerOver);
- Assert.True(root.IsPointerOver);
- }
- }
- private IDisposable TestApplication(IRenderer renderer)
- {
- return UnitTestApplication.Start(
- new TestServices(inputManager: new InputManager()));
- }
- }
- }
|