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.
 
 
 

75 lines
2.9 KiB

using Avalonia.Media;
using Xunit;
namespace Avalonia.Base.UnitTests.Media
{
public class BoxShadowsTests
{
[Theory]
[InlineData("none")]
[InlineData(" none ")]
public void Parse_None_ReturnsEmpty(string input)
{
var bs = BoxShadows.Parse(input);
Assert.Equal(0, bs.Count);
Assert.Equal(default, bs);
Assert.Equal("none", bs.ToString());
}
[Theory]
[InlineData("0 0 5 0 #FF0000")]
[InlineData("10 20 30 5 rgba(0,0,0,0.5)")]
[InlineData("10 20 30 5 rgba(0, 0, 0, 0.5)")]
[InlineData(" 10 20 30 5 rgba(0, 0, 0, 0.5) ")]
public void Parse_SingleShadow_ToString_RoundTrip(string input)
{
var bs = BoxShadows.Parse(input);
Assert.Equal(1, bs.Count);
var str = bs.ToString();
var reparsed = BoxShadows.Parse(str);
Assert.Equal(bs, reparsed);
}
[Theory]
[InlineData("0 0 5 0 #FF0000", 10.0)]
[InlineData("0 0 10 0 rgba(0,0,0,0.5)", 20.0)]
public void TransformBounds_IncludesShadowExpansion(string input, double minExpansion)
{
var bs = BoxShadows.Parse(input);
var rect = new Rect(0, 0, 100, 100);
var transformed = bs.TransformBounds(rect);
Assert.True(transformed.Width >= rect.Width + minExpansion);
Assert.True(transformed.Height >= rect.Height + minExpansion);
}
[Theory]
[InlineData("5 5 10 0 rgba(10,20,30,0.4)")]
[InlineData("5 5 10 0 hsla(10,20%,30%,0.4)")]
[InlineData("5 5 10 0 hsva(10,20%,30%,0.4)")]
public void Parse_ColorFunction_IsHandled(string input)
{
var bs = BoxShadows.Parse(input);
Assert.Equal(1, bs.Count);
var reparsed = BoxShadows.Parse(bs.ToString());
Assert.Equal(bs, reparsed);
}
[Theory]
[InlineData("1 2 3 0 #FF0000", 1)]
[InlineData("10 20 30 5 rgba(0,0,0,0.5)", 1)]
[InlineData("1 2 3 0 #FF0000, 1 2 3 0 #FF0000", 2)]
[InlineData("10 20 30 5 rgba(0,0,0,0.5), 1 2 3 0 #FF0000", 2)]
[InlineData("10 20 30 5 rgba(0,0,0,0.5), 10 20 30 5 rgba(0,0,0,0.5)", 2)]
[InlineData("10 20 30 5 rgba(0,0,0,0.5), 10 20 30 5 rgba(0,0,0,0.5), 10 20 30 5 rgba(0,0,0,0.5)", 3)]
[InlineData("10 20 30 5 rgba(0,0,0,0.5), 10 20 30 5 #ffffff, 10 20 30 5 Red", 3)]
[InlineData(" 10 20 30 5 rgba(0, 0, 0, 0.5), 10 20 30 5 rgba(0, 0, 0, 0.5), 10 20 30 5 rgba(0, 0, 0, 0.5) ", 3)]
[InlineData(" 10 20 30 5 rgba(0, 0, 0, 0.5), 10 20 30 5 #ffffff, 10 20 30 5 Red ", 3)]
public void Parse_MultipleShadows(string input, int count)
{
var bs = BoxShadows.Parse(input);
Assert.Equal(count, bs.Count);
var reparsed = BoxShadows.Parse(bs.ToString());
Assert.Equal(bs, reparsed);
}
}
}