Browse Source

Reimplement commented-out tests.

pull/1184/head
Steven Kirk 9 years ago
parent
commit
685a509c5c
  1. 2
      tests/Avalonia.UnitTests/TestRoot.cs
  2. 178
      tests/Avalonia.Visuals.UnitTests/Rendering/DeferredRendererTests.cs

2
tests/Avalonia.UnitTests/TestRoot.cs

@ -49,8 +49,6 @@ namespace Avalonia.UnitTests
public ILayoutManager LayoutManager => AvaloniaLocator.Current.GetService<ILayoutManager>();
public IRenderTarget RenderTarget => null;
public IRenderer Renderer { get; set; }
public IAccessKeyHandler AccessKeyHandler => null;

178
tests/Avalonia.Visuals.UnitTests/Rendering/DeferredRendererTests.cs

@ -129,102 +129,98 @@ namespace Avalonia.Visuals.UnitTests.Rendering
[Fact]
public void Frame_Should_Create_Layer_For_Root()
{
throw new NotImplementedException();
//var loop = new Mock<IRenderLoop>();
//var root = new TestRoot();
//var rootLayer = new Mock<IRenderTargetBitmapImpl>();
//var dispatcher = new ImmediateDispatcher();
//var sceneBuilder = new Mock<ISceneBuilder>();
//sceneBuilder.Setup(x => x.UpdateAll(It.IsAny<Scene>()))
// .Callback<Scene>(scene =>
// {
// scene.Size = root.ClientSize;
// scene.Layers.Add(root).Dirty.Add(new Rect(root.ClientSize));
// });
//var layers = new Mock<IRenderLayerFactory>();
//layers.Setup(x => x.CreateLayer(root, root.ClientSize, 96, 96)).Returns(CreateLayer());
//var renderInterface = new Mock<IPlatformRenderInterface>();
//var target = new DeferredRenderer(
// root,
// loop.Object,
// sceneBuilder: sceneBuilder.Object,
// layerFactory: layers.Object,
// dispatcher: dispatcher);
//target.Start();
//RunFrame(loop);
//layers.Verify(x => x.CreateLayer(root, root.ClientSize, 96, 96));
var loop = new Mock<IRenderLoop>();
var root = new TestRoot();
var rootLayer = new Mock<IRenderTargetBitmapImpl>();
var dispatcher = new ImmediateDispatcher();
var sceneBuilder = new Mock<ISceneBuilder>();
sceneBuilder.Setup(x => x.UpdateAll(It.IsAny<Scene>()))
.Callback<Scene>(scene =>
{
scene.Size = root.ClientSize;
scene.Layers.Add(root).Dirty.Add(new Rect(root.ClientSize));
});
var renderInterface = new Mock<IPlatformRenderInterface>();
var target = new DeferredRenderer(
root,
loop.Object,
sceneBuilder: sceneBuilder.Object,
//layerFactory: layers.Object,
dispatcher: dispatcher);
target.Start();
RunFrame(loop);
var context = Mock.Get(root.CreateRenderTarget().CreateDrawingContext(null));
context.Verify(x => x.CreateLayer(root.ClientSize));
}
[Fact]
public void Should_Create_And_Delete_Layers_For_Transparent_Controls()
{
throw new NotImplementedException();
//Border border;
//var root = new TestRoot
//{
// Width = 100,
// Height = 100,
// Child = new Border
// {
// Background = Brushes.Red,
// Child = border = new Border
// {
// Background = Brushes.Green,
// }
// }
//};
//root.Measure(Size.Infinity);
//root.Arrange(new Rect(root.DesiredSize));
//var loop = new Mock<IRenderLoop>();
//var layerFactory = new MockRenderLayerFactory(new Dictionary<IVisual, IRenderTargetBitmapImpl>
//{
// { root, CreateLayer() },
// { border, CreateLayer() },
//});
//var target = new DeferredRenderer(
// root,
// loop.Object,
// layerFactory: layerFactory,
// dispatcher: new ImmediateDispatcher());
//root.Renderer = target;
//target.Start();
//RunFrame(loop);
//var rootContext = layerFactory.GetMockDrawingContext(root);
//var borderContext = layerFactory.GetMockDrawingContext(border);
//rootContext.Verify(x => x.FillRectangle(Brushes.Red, new Rect(0, 0, 100, 100), 0), Times.Once);
//rootContext.Verify(x => x.FillRectangle(Brushes.Green, new Rect(0, 0, 100, 100), 0), Times.Once);
//borderContext.Verify(x => x.FillRectangle(It.IsAny<IBrush>(), It.IsAny<Rect>(), It.IsAny<float>()), Times.Never);
//rootContext.ResetCalls();
//borderContext.ResetCalls();
//border.Opacity = 0.5;
//RunFrame(loop);
//rootContext.Verify(x => x.FillRectangle(Brushes.Red, new Rect(0, 0, 100, 100), 0), Times.Once);
//rootContext.Verify(x => x.FillRectangle(Brushes.Green, new Rect(0, 0, 100, 100), 0), Times.Never);
//borderContext.Verify(x => x.FillRectangle(Brushes.Green, new Rect(0, 0, 100, 100), 0), Times.Once);
//rootContext.ResetCalls();
//borderContext.ResetCalls();
//border.Opacity = 1;
//RunFrame(loop);
//layerFactory.GetMockBitmap(border).Verify(x => x.Dispose());
//rootContext.Verify(x => x.FillRectangle(Brushes.Red, new Rect(0, 0, 100, 100), 0), Times.Once);
//rootContext.Verify(x => x.FillRectangle(Brushes.Green, new Rect(0, 0, 100, 100), 0), Times.Once);
//borderContext.Verify(x => x.FillRectangle(It.IsAny<IBrush>(), It.IsAny<Rect>(), It.IsAny<float>()), Times.Never);
Border border;
var root = new TestRoot
{
Width = 100,
Height = 100,
Child = new Border
{
Background = Brushes.Red,
Child = border = new Border
{
Background = Brushes.Green,
}
}
};
root.Measure(Size.Infinity);
root.Arrange(new Rect(root.DesiredSize));
var rootLayer = CreateLayer();
var borderLayer = CreateLayer();
var renderTargetContext = Mock.Get(root.CreateRenderTarget().CreateDrawingContext(null));
renderTargetContext.SetupSequence(x => x.CreateLayer(It.IsAny<Size>()))
.Returns(rootLayer)
.Returns(borderLayer);
var loop = new Mock<IRenderLoop>();
var target = new DeferredRenderer(
root,
loop.Object,
dispatcher: new ImmediateDispatcher());
root.Renderer = target;
target.Start();
RunFrame(loop);
var rootContext = Mock.Get(rootLayer.CreateDrawingContext(null));
var borderContext = Mock.Get(borderLayer.CreateDrawingContext(null));
rootContext.Verify(x => x.FillRectangle(Brushes.Red, new Rect(0, 0, 100, 100), 0), Times.Once);
rootContext.Verify(x => x.FillRectangle(Brushes.Green, new Rect(0, 0, 100, 100), 0), Times.Once);
borderContext.Verify(x => x.FillRectangle(It.IsAny<IBrush>(), It.IsAny<Rect>(), It.IsAny<float>()), Times.Never);
rootContext.ResetCalls();
borderContext.ResetCalls();
border.Opacity = 0.5;
RunFrame(loop);
rootContext.Verify(x => x.FillRectangle(Brushes.Red, new Rect(0, 0, 100, 100), 0), Times.Once);
rootContext.Verify(x => x.FillRectangle(Brushes.Green, new Rect(0, 0, 100, 100), 0), Times.Never);
borderContext.Verify(x => x.FillRectangle(Brushes.Green, new Rect(0, 0, 100, 100), 0), Times.Once);
rootContext.ResetCalls();
borderContext.ResetCalls();
border.Opacity = 1;
RunFrame(loop);
Mock.Get(borderLayer).Verify(x => x.Dispose());
rootContext.Verify(x => x.FillRectangle(Brushes.Red, new Rect(0, 0, 100, 100), 0), Times.Once);
rootContext.Verify(x => x.FillRectangle(Brushes.Green, new Rect(0, 0, 100, 100), 0), Times.Once);
borderContext.Verify(x => x.FillRectangle(It.IsAny<IBrush>(), It.IsAny<Rect>(), It.IsAny<float>()), Times.Never);
}
private void IgnoreFirstFrame(Mock<IRenderLoop> loop, Mock<ISceneBuilder> sceneBuilder)

Loading…
Cancel
Save