using Avalonia.Media; using Avalonia.Platform; using Avalonia.Rendering; using Avalonia.Rendering.Composition; using Avalonia.Threading; using Moq; namespace Avalonia.UnitTests { public static class RendererMocks { internal static Mock CreateRenderer() { var renderer = new Mock(); renderer.SetupGet(r => r.Diagnostics).Returns(new RendererDiagnostics()); return renderer; } public static Compositor CreateDummyCompositor() => new(RenderLoop.FromTimer(new CompositorTestServices.ManualRenderTimer()), null, false, new CompositionCommitScheduler(), true, Dispatcher.UIThread); class CompositionCommitScheduler : ICompositorScheduler { public void CommitRequested(Compositor compositor) { if (AvaloniaLocator.Current.GetService() == null) return; Dispatcher.UIThread.Post(() => compositor.Commit(), DispatcherPriority.AfterRender); } } } }