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.
75 lines
2.9 KiB
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);
|
|
}
|
|
}
|
|
}
|
|
|