using Annulus; using Azimuth; using UnitTestSharp; namespace Glass.UnitTests { public class NumberFieldMaterialTests : TestFixture { public static ButtonMaterial FixedSizeButton(Scalar width, Scalar height) { return new ButtonMaterial(new ButtonMaterialTests.FixedSizeMaterial(new Vector(width, height))); } public class ButtonColumnWidthTests : TestFixture { public void TheWiderButtonSetsIt() { var material = new NumberFieldMaterial { IncrementButton = FixedSizeButton(10, 5), DecrementButton = FixedSizeButton(14, 5), }; CheckEqual(14, material.ButtonColumnWidth); } public void NoButtonMaterials_IsZero() { CheckEqual(0, new NumberFieldMaterial().ButtonColumnWidth); } } public class BoundsSizeForTests : TestFixture { private static readonly NumberFieldMaterial TenByTwentyButtons = new NumberFieldMaterial { IncrementButton = FixedSizeButton(10, 20), DecrementButton = FixedSizeButton(10, 20), }; public void AddsTheButtonColumnBesideTheLabel() { CheckEqual(70, TenByTwentyButtons.BoundsSizeFor(new Vector(60, 50)).X); } public void LabelTallerThanTheStackedButtons_SetsTheHeight() { CheckEqual(50, TenByTwentyButtons.BoundsSizeFor(new Vector(60, 50)).Y); } public void StackedButtonsTallerThanTheLabel_SetTheHeight() { CheckEqual(40, TenByTwentyButtons.BoundsSizeFor(new Vector(60, 30)).Y); } public void Background_AddsItsBorder() { NumberFieldMaterial material = TenByTwentyButtons; material.Background = new Material { BorderSize = new Rect.BorderSize(3) }; CheckEqual(new Vector(76, 56), material.BoundsSizeFor(new Vector(60, 50))); } } } }