using Prism; using Glass.Text; using UnitTestSharp; namespace Glass.UnitTests.Text { public class StyledTextTests : TestFixture { public class CtorTests : TestFixture { public void String_HoldsTheStringAndStyle() { var style = new TextStyle { TintColor = Colors.Red }; var styled = new StyledText("abc", style); CheckFalse(styled.IsNumber); CheckEqual("abc", styled.Text); CheckEqual(style, styled.Style); } public void NullString_IsTheEmptyString() { CheckEqual("", new StyledText((string)null, default).Text); } public void Number_HoldsTheNumberAndStyle() { var style = new TextStyle { CoverageGamma = 2 }; var styled = new StyledText(-5L, NumberKind.Count, style); CheckTrue(styled.IsNumber); CheckEqual(-5L, styled.Number); CheckEqual(NumberKind.Count, styled.Kind); CheckEqual(style, styled.Style); } public void NumberWithDecimals_HoldsThem() { var styled = new StyledText(1234L, NumberKind.Fixed, 2, default); CheckEqual(2, styled.Precision); CheckEqual(NumberKind.Fixed, styled.Kind); } public void NumberWithoutDecimals_HasNone() { CheckEqual(0, new StyledText(5L, NumberKind.Count, default).Precision); } public void String_IsNotANumber() { CheckFalse(new StyledText("abc", default).IsNumber); } } public class ImplicitConversionTests : TestFixture { public void FromString_HasNoStyle() { StyledText styled = "abc"; CheckEqual("abc", styled.Text); CheckEqual(default(TextStyle), styled.Style); CheckFalse(styled.IsNumber); } } public class WrapInTests : TestFixture { public void AString_KeepsItsTextAndTakesTheOuterStyle() { var outer = new TextStyle { TintColor = Colors.Red }; StyledText wrapped = new StyledText("abc", default).WrapIn(outer); CheckFalse(wrapped.IsNumber); CheckEqual("abc", wrapped.Text); CheckEqual(outer, wrapped.Style); } public void ANumber_KeepsItsValueAndKindAndTakesTheOuterStyle() { var outer = new TextStyle { TintColor = Colors.Red }; StyledText wrapped = new StyledText(-9L, NumberKind.Count, default).WrapIn(outer); CheckTrue(wrapped.IsNumber); CheckEqual(-9L, wrapped.Number); CheckEqual(NumberKind.Count, wrapped.Kind); CheckEqual(outer, wrapped.Style); } public void AFixedNumber_KeepsItsDecimals() { var fixedNumber = new StyledText(1234L, NumberKind.Fixed, 2, default); CheckEqual(2, fixedNumber.WrapIn(new TextStyle { TintColor = Colors.Red }).Precision); } public void ValuesItAlreadySets_WinOverTheOuterStyle() { var styled = new StyledText("abc", new TextStyle { TintColor = Colors.Blue }); StyledText wrapped = styled.WrapIn(new TextStyle { TintColor = Colors.Red, CoverageGamma = 2 }); CheckEqual(new TextStyle { TintColor = Colors.Blue, CoverageGamma = 2 }, wrapped.Style); } } } }