42 lines
1.2 KiB
C#
42 lines
1.2 KiB
C#
using Avalonia.Media;
|
|
using ClaudeDo.Ui.Converters;
|
|
using Xunit;
|
|
|
|
namespace ClaudeDo.Ui.Tests;
|
|
|
|
public class ColorBrushConverterTests
|
|
{
|
|
private static readonly SolidColorBrush Swatch3 = new(Colors.Red);
|
|
private static readonly SolidColorBrush Fallback = new(Colors.Gray);
|
|
|
|
private static object? Lookup(string key) => key switch
|
|
{
|
|
"Swatch3Brush" => Swatch3,
|
|
"FallbackBrush" => Fallback,
|
|
_ => null,
|
|
};
|
|
|
|
[Fact]
|
|
public void SwatchKey_ResolvesToTheAppResource()
|
|
=> Assert.Same(Swatch3, ColorBrushConverter.Resolve("Swatch3", "FallbackBrush", Lookup));
|
|
|
|
[Fact]
|
|
public void Hex_BecomesASolidBrush()
|
|
{
|
|
var brush = Assert.IsType<SolidColorBrush>(ColorBrushConverter.Resolve("#112233", "FallbackBrush", Lookup));
|
|
Assert.Equal(Color.Parse("#112233"), brush.Color);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(null)]
|
|
[InlineData("")]
|
|
[InlineData("Swatch99")]
|
|
[InlineData("#nothex")]
|
|
public void NullEmptyOrInvalid_FallsBackToTheParameter(string? value)
|
|
=> Assert.Same(Fallback, ColorBrushConverter.Resolve(value, "FallbackBrush", Lookup));
|
|
|
|
[Fact]
|
|
public void NoFallbackParameter_ReturnsNull()
|
|
=> Assert.Null(ColorBrushConverter.Resolve(null, null, Lookup));
|
|
}
|