RendererMocks.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. using Avalonia.Media;
  2. using Avalonia.Platform;
  3. using Avalonia.Rendering;
  4. using Avalonia.Rendering.Composition;
  5. using Avalonia.Threading;
  6. using Moq;
  7. namespace Avalonia.UnitTests
  8. {
  9. public static class RendererMocks
  10. {
  11. internal static Mock<IRenderer> CreateRenderer()
  12. {
  13. var renderer = new Mock<IRenderer>();
  14. renderer.SetupGet(r => r.Diagnostics).Returns(new RendererDiagnostics());
  15. return renderer;
  16. }
  17. public static Compositor CreateDummyCompositor() =>
  18. new(new RenderLoop(new CompositorTestServices.ManualRenderTimer()), null, false,
  19. new CompositionCommitScheduler(), true, Dispatcher.UIThread);
  20. class CompositionCommitScheduler : ICompositorScheduler
  21. {
  22. public void CommitRequested(Compositor compositor)
  23. {
  24. if (AvaloniaLocator.Current.GetService<IPlatformRenderInterface>() == null)
  25. return;
  26. Dispatcher.UIThread.Post(() => compositor.Commit(), DispatcherPriority.AfterRender);
  27. }
  28. }
  29. }
  30. }