Browse Source

Added failing tests for brush invalidation.

pull/1881/head
Steven Kirk 8 years ago
parent
commit
afdfb28da8
  1. 21
      tests/Avalonia.Controls.UnitTests/BorderTests.cs
  2. 21
      tests/Avalonia.Controls.UnitTests/PanelTests.cs
  3. 20
      tests/Avalonia.Controls.UnitTests/Presenters/ContentPresenterTests_Standalone.cs
  4. 48
      tests/Avalonia.Controls.UnitTests/Shapes/RectangleTests.cs
  5. 38
      tests/Avalonia.Controls.UnitTests/TextBlockTests.cs
  6. 7
      tests/Avalonia.UnitTests/TestRoot.cs

21
tests/Avalonia.Controls.UnitTests/BorderTests.cs

@ -1,6 +1,10 @@
// Copyright (c) The Avalonia Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using Avalonia.Media;
using Avalonia.Rendering;
using Avalonia.UnitTests;
using Moq;
using Xunit;
namespace Avalonia.Controls.UnitTests
@ -42,5 +46,22 @@ namespace Avalonia.Controls.UnitTests
Assert.Equal(new Rect(6, 6, 0, 0), content.Bounds);
}
[Fact]
public void Changing_Background_Brush_Color_Should_Invalidate_Visual()
{
var target = new Border()
{
Background = new SolidColorBrush(Colors.Red),
};
var root = new TestRoot(target);
var renderer = Mock.Get(root.Renderer);
renderer.ResetCalls();
((SolidColorBrush)target.Background).Color = Colors.Green;
renderer.Verify(x => x.AddDirty(target), Times.Once);
}
}
}

21
tests/Avalonia.Controls.UnitTests/PanelTests.cs

@ -3,7 +3,11 @@
using System.Linq;
using Avalonia.LogicalTree;
using Avalonia.Media;
using Avalonia.Rendering;
using Avalonia.UnitTests;
using Avalonia.VisualTree;
using Moq;
using Xunit;
namespace Avalonia.Controls.UnitTests
@ -115,5 +119,22 @@ namespace Avalonia.Controls.UnitTests
Assert.Equal(new[] { child2, child1 }, panel.GetLogicalChildren());
Assert.Equal(new[] { child2, child1 }, panel.GetVisualChildren());
}
[Fact]
public void Changing_Background_Brush_Color_Should_Invalidate_Visual()
{
var target = new Panel()
{
Background = new SolidColorBrush(Colors.Red),
};
var root = new TestRoot(target);
var renderer = Mock.Get(root.Renderer);
renderer.ResetCalls();
((SolidColorBrush)target.Background).Color = Colors.Green;
renderer.Verify(x => x.AddDirty(target), Times.Once);
}
}
}

20
tests/Avalonia.Controls.UnitTests/Presenters/ContentPresenterTests_Standalone.cs

@ -13,6 +13,7 @@ using System;
using System.Linq;
using Xunit;
using Avalonia.Rendering;
using Avalonia.Media;
namespace Avalonia.Controls.UnitTests.Presenters
{
@ -203,5 +204,22 @@ namespace Avalonia.Controls.UnitTests.Presenters
Assert.NotEqual(foo, logicalChildren.First());
}
[Fact]
public void Changing_Background_Brush_Color_Should_Invalidate_Visual()
{
var target = new ContentPresenter()
{
Background = new SolidColorBrush(Colors.Red),
};
var root = new TestRoot(target);
var renderer = Mock.Get(root.Renderer);
renderer.ResetCalls();
((SolidColorBrush)target.Background).Color = Colors.Green;
renderer.Verify(x => x.AddDirty(target), Times.Once);
}
}
}
}

48
tests/Avalonia.Controls.UnitTests/Shapes/RectangleTests.cs

@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.Text;
using Avalonia.Controls.Shapes;
using Avalonia.Media;
using Avalonia.UnitTests;
using Moq;
using Xunit;
namespace Avalonia.Controls.UnitTests.Shapes
{
public class RectangleTests
{
[Fact]
public void Changing_Fill_Brush_Color_Should_Invalidate_Visual()
{
var target = new Rectangle()
{
Fill = new SolidColorBrush(Colors.Red),
};
var root = new TestRoot(target);
var renderer = Mock.Get(root.Renderer);
renderer.ResetCalls();
((SolidColorBrush)target.Fill).Color = Colors.Green;
renderer.Verify(x => x.AddDirty(target), Times.Once);
}
[Fact]
public void Changing_Stroke_Brush_Color_Should_Invalidate_Visual()
{
var target = new Rectangle()
{
Stroke = new SolidColorBrush(Colors.Red),
};
var root = new TestRoot(target);
var renderer = Mock.Get(root.Renderer);
renderer.ResetCalls();
((SolidColorBrush)target.Stroke).Color = Colors.Green;
renderer.Verify(x => x.AddDirty(target), Times.Once);
}
}
}

38
tests/Avalonia.Controls.UnitTests/TextBlockTests.cs

@ -2,6 +2,10 @@
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using Avalonia.Data;
using Avalonia.Media;
using Avalonia.Rendering;
using Avalonia.UnitTests;
using Moq;
using Xunit;
namespace Avalonia.Controls.UnitTests
@ -25,5 +29,39 @@ namespace Avalonia.Controls.UnitTests
"",
textBlock.Text);
}
[Fact]
public void Changing_Background_Brush_Color_Should_Invalidate_Visual()
{
var target = new TextBlock()
{
Background = new SolidColorBrush(Colors.Red),
};
var root = new TestRoot(target);
var renderer = Mock.Get(root.Renderer);
renderer.ResetCalls();
((SolidColorBrush)target.Background).Color = Colors.Green;
renderer.Verify(x => x.AddDirty(target), Times.Once);
}
[Fact]
public void Changing_Foreground_Brush_Color_Should_Invalidate_Visual()
{
var target = new TextBlock()
{
Foreground = new SolidColorBrush(Colors.Red),
};
var root = new TestRoot(target);
var renderer = Mock.Get(root.Renderer);
renderer.ResetCalls();
((SolidColorBrush)target.Foreground).Color = Colors.Green;
renderer.Verify(x => x.AddDirty(target), Times.Once);
}
}
}

7
tests/Avalonia.UnitTests/TestRoot.cs

@ -19,6 +19,13 @@ namespace Avalonia.UnitTests
public TestRoot()
{
Renderer = Mock.Of<IRenderer>();
}
public TestRoot(IControl child)
: this()
{
Child = child;
}
event EventHandler<NameScopeEventArgs> INameScope.Registered

Loading…
Cancel
Save