feat(text): persist independent text layer settings
Add additive defaults and round-trip tests for per-layer text content and formatting. Model the static text source after OBS text-source conventions: https://obsproject.com/kb/text-sources
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
using Xunit;
|
||||
using ytLive.Models;
|
||||
|
||||
namespace ytLive.Tests;
|
||||
|
||||
public class SourceTextSettingsTests
|
||||
{
|
||||
[Fact]
|
||||
public void Text_Layer_Settings_Have_Safe_Defaults()
|
||||
{
|
||||
var source = new Source { Type = SourceType.TextOverlay };
|
||||
|
||||
Assert.Equal("Text", source.TextContent);
|
||||
Assert.Equal("Segoe UI", source.TextFontFamily);
|
||||
Assert.Equal(48, source.TextFontSize);
|
||||
Assert.Equal("#FFFFFF", source.TextColor);
|
||||
Assert.False(source.TextBold);
|
||||
Assert.False(source.TextItalic);
|
||||
Assert.False(source.TextUnderline);
|
||||
Assert.Equal(TextLayerAlignment.Left, source.TextAlignment);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Text_Layer_Settings_Normalize_Invalid_Values()
|
||||
{
|
||||
var source = new Source
|
||||
{
|
||||
TextFontFamily = " ",
|
||||
TextFontSize = double.NaN,
|
||||
TextColor = "not-a-color",
|
||||
TextAlignment = (TextLayerAlignment)999,
|
||||
};
|
||||
|
||||
Assert.Equal("Segoe UI", source.TextFontFamily);
|
||||
Assert.Equal(48, source.TextFontSize);
|
||||
Assert.Equal("#FFFFFF", source.TextColor);
|
||||
Assert.Equal(TextLayerAlignment.Left, source.TextAlignment);
|
||||
|
||||
source.TextFontSize = 1;
|
||||
Assert.Equal(8, source.TextFontSize);
|
||||
source.TextFontSize = 1000;
|
||||
Assert.Equal(300, source.TextFontSize);
|
||||
source.TextColor = "#abcdef";
|
||||
Assert.Equal("#ABCDEF", source.TextColor);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user