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); Assert.Equal(TextLayerVerticalAlignment.Top, source.TextVerticalAlignment); Assert.Equal("#FFFFFF", source.TextColorEntry.Hex); Assert.Contains(source.TextColorOptions, color => color.Hex == "#FFFFFF"); } [Fact] public void Text_Layer_Settings_Normalize_Invalid_Values() { var source = new Source { TextFontFamily = " ", TextFontSize = double.NaN, TextColor = "not-a-color", TextAlignment = (TextLayerAlignment)999, TextVerticalAlignment = (TextLayerVerticalAlignment)999, }; Assert.Equal("Segoe UI", source.TextFontFamily); Assert.Equal(48, source.TextFontSize); Assert.Equal("#FFFFFF", source.TextColor); Assert.Equal(TextLayerAlignment.Left, source.TextAlignment); Assert.Equal(TextLayerVerticalAlignment.Top, source.TextVerticalAlignment); source.TextFontSize = 1; Assert.Equal(8, source.TextFontSize); source.TextFontSize = 1000; Assert.Equal(300, source.TextFontSize); source.TextColor = "#abcdef"; Assert.Equal("#ABCDEF", source.TextColor); source.TextColorEntry = BorderColorPalette.All.Single(color => color.Hex == "#FF0000"); Assert.Equal("#FF0000", source.TextColor); Assert.Equal("Red", source.TextColorEntry.Name); source.TextColor = "#123456"; Assert.Contains(source.TextColorOptions, color => color.Hex == "#123456"); } }