A cross-platform UI framework for .NET
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

120 lines
3.8 KiB

using System;
using Avalonia.Collections;
using Avalonia.Media;
using Avalonia.Media.Immutable;
using Xunit;
namespace Avalonia.Base.UnitTests.Media
{
public class PenTests
{
[Fact]
public void Changing_Thickness_Raises_Invalidated()
{
var target = new Pen();
RenderResourceTestHelper.AssertResourceInvalidation(target, () =>
{
target.Thickness = 18;
});
}
[Fact]
public void Brush_Is_Added_To_The_Same_Compositor()
{
var brush = new SolidColorBrush(Colors.Red);
var target = new Pen { Brush = brush };
using var helper = new RenderResourceTestHelper();
helper.AssertExistsOnCompositor(brush, false);
helper.AddToCompositor(target);
helper.AssertExistsOnCompositor(brush);
Assert.True(helper.IsInvalidated(brush));
}
[Fact]
public void Changing_DashStyle_Dashes_Raises_Invalidated()
{
var dashes = new DashStyle();
var target = new Pen { DashStyle = dashes };
RenderResourceTestHelper.AssertResourceInvalidation(target, () =>
{
dashes.Dashes = new AvaloniaList<double> { 0.1, 0.2 };
});
}
[Fact]
public void Adding_DashStyle_Dashes_Raises_Invalidated()
{
var dashes = new DashStyle();
var target = new Pen { DashStyle = dashes };
RenderResourceTestHelper.AssertResourceInvalidation(target, () =>
{
dashes.Dashes = new AvaloniaList<double>
{
0.3
};
});
}
[Fact]
public void Adding_DashStyle_Dash_Raises_Invalidated()
{
var dashes = new DashStyle();
var target = new Pen { DashStyle = dashes };
dashes.Dashes = new AvaloniaList<double>
{
0.3
};
RenderResourceTestHelper.AssertResourceInvalidation(target, () =>
{
dashes.Dashes.AddRange(new[] { 1.0, 2 });
});
}
[Fact]
public void Equality_Is_Implemented_Between_Immutable_And_Mutable_Pens()
{
var brush = new ImmutableSolidColorBrush(Colors.Red);
var target1 = new ImmutablePen(
brush: brush,
thickness: 2,
dashStyle: (ImmutableDashStyle)DashStyle.Dash,
lineCap: PenLineCap.Round,
lineJoin: PenLineJoin.Round,
miterLimit: 21);
var target2 = new Pen(
brush: brush,
thickness: 2,
dashStyle: DashStyle.Dash,
lineCap: PenLineCap.Round,
lineJoin: PenLineJoin.Round,
miterLimit: 21);
Assert.True(Equals(target1, target2));
}
[Fact]
public void Equality_Is_Implemented_Between_Mutable_And_Immutable_DashStyles()
{
var brush = new ImmutableSolidColorBrush(Colors.Red);
var target1 = new ImmutablePen(
brush: brush,
thickness: 2,
dashStyle: new ImmutableDashStyle(new[] { 0.1, 0.2 }, 5),
lineCap: PenLineCap.Round,
lineJoin: PenLineJoin.Round,
miterLimit: 21);
var target2 = new Pen(
brush: brush,
thickness: 2,
dashStyle: new DashStyle(new[] { 0.1, 0.2 }, 5),
lineCap: PenLineCap.Round,
lineJoin: PenLineJoin.Round,
miterLimit: 21);
Assert.True(Equals(target1, target2));
}
}
}