using Annulus; using Azimuth; using System; using UnitTestSharp; namespace Glass.UnitTests { public class TextBoxRenderStateTests : TestFixture { public static readonly Material Look = new SolidColorMaterial(); public static TextBox.RenderState NewState() { return new TextBox.RenderState(new BakedTextMaterial(new TextMaterialStyle(), "ab")); } public class CtorTests : TestFixture { public void KeepsTheText() { var text = new BakedTextMaterial(new TextMaterialStyle(), "ab"); CheckEqual(text, new TextBox.RenderState(text).Text); } public void StartsWithNoLooksAndNoCaretShowing() { TextBox.RenderState state = NewState(); CheckNull(state.Selection); CheckNull(state.InactiveSelection); CheckNull(state.Composition); CheckNull(state.CompositionTarget); CheckFalse(state.CaretVisible); CheckEqual(0, state.ReservedRight); CheckEqual(0, state.ReservedBottom); CheckEqual(0, state.ScrollX); } public void NoText_Throws() { CheckThrow(typeof(ArgumentNullException)); new TextBox.RenderState(null); } } public class SetLooksTests : TestFixture { public void MakesAnEmptyListOfBandsForEachLook() { TextBox.RenderState state = NewState(); var other = new SolidColorMaterial(); state.SetLooks(Look, other, Look, other); CheckEqual(Look, state.Selection.BandMaterial); CheckEqual(other, state.InactiveSelection.BandMaterial); CheckEqual(Look, state.Composition.BandMaterial); CheckEqual(other, state.CompositionTarget.BandMaterial); CheckEqual(0, state.Selection.Count); } public void ANullLook_LeavesNoBands() { TextBox.RenderState state = NewState(); state.SetLooks(Look, null, null, null); CheckNull(state.InactiveSelection); CheckNull(state.Composition); CheckNull(state.CompositionTarget); } public void SetAgain_ReplacesTheBandsWithEmptyOnes() { TextBox.RenderState state = NewState(); state.SetLooks(Look, Look, Look, Look); state.Selection.Add(TextBoxRenderMaterialTests.RectAt(1, 2, 3, 4)); state.SetLooks(Look, Look, Look, Look); CheckEqual(0, state.Selection.Count); } } } }