using System; using Prism; using UnitTestSharp; namespace Konis.UnitTests { public class GradientDefTests : TestFixture { private static Gradient BlackToWhite() { return Gradient.Between(Colors.Black, Colors.White); } public class GradientTests : TestFixture { public void IsNullUntilGiven() { CheckNull(new GradientDef().Gradient); } public void IsSetByAnInitializer() { Gradient gradient = BlackToWhite(); CheckTrue(ReferenceEquals(gradient, new GradientDef { Gradient = gradient }.Gradient)); } } public class ValidateTests : TestFixture { public void WithAGradient_Passes() { new GradientDef { Gradient = BlackToWhite() }.Validate(); } public void WithoutAGradient_Throws() { CheckThrow(typeof(InvalidOperationException)); new GradientDef().Validate(); } } public class TableTests : TestFixture { public void IsNullWithoutAGradient() { CheckNull(new GradientDef().Table); } public void IsBakedFromTheGradientAsItIsSet() { var def = new GradientDef { Gradient = BlackToWhite() }; CheckEqual(Colors.Black.ToArgb(), def.Table.Sample(0)); CheckEqual(Colors.White.ToArgb(), def.Table.Sample(1)); } public void AfterTheGradientIsReplacedByReflection_IsBakedFromTheNewOne() { var def = new GradientDef { Gradient = BlackToWhite() }; GradientTable before = def.Table; typeof(GradientDef).GetProperty(nameof(GradientDef.Gradient)).SetValue( def, Gradient.Constant(Colors.Red)); CheckFalse(ReferenceEquals(before, def.Table)); CheckEqual(Colors.Red.ToArgb(), def.Table.Sample(0.5)); } public void AfterTheGradientIsReplacedWithNull_IsNull() { var def = new GradientDef { Gradient = BlackToWhite() }; typeof(GradientDef).GetProperty(nameof(GradientDef.Gradient)).SetValue(def, null); CheckNull(def.Table); } } } }