csharpc-sharpdotnetxamlavaloniauicross-platformcross-platform-xamlavaloniaguimulti-platformuser-interfacedotnetcore
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.
73 lines
2.5 KiB
73 lines
2.5 KiB
using System;
|
|
using Avalonia.Media;
|
|
using Xunit;
|
|
|
|
namespace Avalonia.Base.UnitTests.Media;
|
|
|
|
public class EffectTests
|
|
{
|
|
[Fact]
|
|
public void Parse_Parses_Blur()
|
|
{
|
|
var effect = (ImmutableBlurEffect)Effect.Parse("blur(123.34)");
|
|
Assert.Equal(123.34, effect.Radius);
|
|
}
|
|
|
|
private const uint Black = 0xff000000;
|
|
|
|
[Theory,
|
|
InlineData("drop-shadow(10 20)", 10, 20, 0, Black),
|
|
InlineData("drop-shadow( 10 20 ) ", 10, 20, 0, Black),
|
|
InlineData("drop-shadow( 10 20 30 ) ", 10, 20, 30, Black),
|
|
InlineData("drop-shadow(10 20 30)", 10, 20, 30, Black),
|
|
InlineData("drop-shadow(-10 -20 30)", -10, -20, 30, Black),
|
|
InlineData("drop-shadow(10 20 30 #ffff00ff)", 10, 20, 30, 0xffff00ff),
|
|
InlineData("drop-shadow ( 10 20 30 #ffff00ff ) ", 10, 20, 30, 0xffff00ff),
|
|
InlineData("drop-shadow(10 20 30 red)", 10, 20, 30, 0xffff0000),
|
|
InlineData("drop-shadow ( 10 20 30 red ) ", 10, 20, 30, 0xffff0000),
|
|
InlineData("drop-shadow(10 20 30 rgba(100, 30, 45, 90%))", 10, 20, 30, 0x90641e2d),
|
|
InlineData("drop-shadow(10 20 30 rgba(100, 30, 45, 90%) ) ", 10, 20, 30, 0x90641e2d),
|
|
|
|
]
|
|
public void Parse_Parses_DropShadow(string s, double x, double y, double r, uint color)
|
|
{
|
|
var effect = (ImmutableDropShadowEffect)Effect.Parse(s);
|
|
Assert.Equal(x, effect.OffsetX);
|
|
Assert.Equal(y, effect.OffsetY);
|
|
Assert.Equal(r, effect.BlurRadius);
|
|
Assert.Equal(1, effect.Opacity);
|
|
}
|
|
|
|
[Theory,
|
|
InlineData("blur"),
|
|
InlineData("blur("),
|
|
InlineData("blur()"),
|
|
InlineData("blur(123"),
|
|
InlineData("blur(aaab)"),
|
|
InlineData("drop-shadow(-10 -20 -30)"),
|
|
]
|
|
public void Invalid_Effect_Parse_Fails(string b)
|
|
{
|
|
Assert.Throws<ArgumentException>(() => Effect.Parse(b));
|
|
}
|
|
|
|
[Theory,
|
|
InlineData("blur(2.5)", 4, 4, 4, 4),
|
|
InlineData("blur(0)", 0, 0, 0, 0),
|
|
InlineData("drop-shadow(10 15)", 0, 0, 10, 15),
|
|
InlineData("drop-shadow(10 15 5)", 0, 0, 16, 21),
|
|
InlineData("drop-shadow(0 0 5)", 6, 6, 6, 6),
|
|
InlineData("drop-shadow(3 3 5)", 3, 3, 9, 9)
|
|
|
|
|
|
]
|
|
|
|
public static void PaddingIsCorrectlyCalculated(string effect, double left, double top, double right, double bottom)
|
|
{
|
|
var padding = Effect.Parse(effect).GetEffectOutputPadding();
|
|
Assert.Equal(left, padding.Left);
|
|
Assert.Equal(top, padding.Top);
|
|
Assert.Equal(right, padding.Right);
|
|
Assert.Equal(bottom, padding.Bottom);
|
|
}
|
|
}
|