using Azimuth; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using UnitTestSharp; namespace Glass.UnitTests { public class LabelTests : TestFixture { public class TestFont : IFont { public Scalar GlyphWidth(char glyph) => 1; public Scalar SpaceBetweenGlyphs(char? leftGlyph, char? rightGlyph) => 0.125; public Scalar LineAscent => 3; public Scalar LineDescent => 8; public Scalar LineGap => 11; } public class TextTest : TestFixture { public void GetSet() { var label = new Label(); label.Text = "test"; CheckEqual("test", label.Text); } public void RecalculatesTestSize() { var label = new Label(); label.Bounds = Rect.FromTwoPoints(Vector.Zero, new Vector(100, 100)); label.Font = new TestFont(); CheckEqual(Vector.Zero, label.TextSize); label.Text = "test"; CheckEqual(new Vector(4.5, 11), label.TextSize); } public void CalculatedSizeAccountsForLabelWidth() { var label = new Label(); label.Bounds = Rect.FromTwoPoints(Vector.Zero, new Vector(4, 100)); label.Font = new TestFont(); CheckEqual(Vector.Zero, label.TextSize); label.Text = "test"; CheckEqual(new Vector(3.375, 33), label.TextSize); } public void CalculatedSizeCannotBeTallerThanBounds() { var label = new Label(); label.Bounds = Rect.FromTwoPoints(Vector.Zero, new Vector(4, 1)); label.Font = new TestFont(); CheckEqual(Vector.Zero, label.TextSize); label.Text = "test"; CheckEqual(new Vector(3.375, 1), label.TextSize); } public void CalculatedSizeCanBeWiderThanBounds() { var label = new Label(); label.Bounds = Rect.FromTwoPoints(Vector.Zero, new Vector(0.5, 100)); label.Font = new TestFont(); CheckEqual(Vector.Zero, label.TextSize); label.Text = "test"; CheckEqual(new Vector(0.5, 77), label.TextSize); } } public class BoundsTest : TestFixture { public void GetSet() { var label = new Label(); label.Bounds = Rect.FromTwoPoints(Vector.Zero, new Vector(100, 100)); CheckEqual(Rect.FromTwoPoints(Vector.Zero, new Vector(100, 100)), label.Bounds); } public void RecalculatesTestSize() { var label = new Label(); label.Text = "test"; label.Font = new TestFont(); CheckEqual(Vector.Zero, label.TextSize); label.Bounds = Rect.FromTwoPoints(Vector.Zero, new Vector(100, 100)); CheckEqual(new Vector(4.5, 11), label.TextSize); } public void CalculatedSizeAccountsForLabelWidth() { var label = new Label(); label.Text = "test"; label.Font = new TestFont(); CheckEqual(Vector.Zero, label.TextSize); label.Bounds = Rect.FromTwoPoints(Vector.Zero, new Vector(4, 100)); CheckEqual(new Vector(3.375, 33), label.TextSize); } public void CalculatedSizeCannotBeTallerThanBounds() { var label = new Label(); label.Text = "test"; label.Font = new TestFont(); CheckEqual(Vector.Zero, label.TextSize); label.Bounds = Rect.FromTwoPoints(Vector.Zero, new Vector(4, 1)); CheckEqual(new Vector(3.375, 1), label.TextSize); } public void CalculatedSizeCanBeWiderThanBounds() { var label = new Label(); label.Text = "test"; label.Font = new TestFont(); CheckEqual(Vector.Zero, label.TextSize); label.Bounds = Rect.FromTwoPoints(Vector.Zero, new Vector(0.5, 100)); CheckEqual(new Vector(0.5, 77), label.TextSize); } } public class FontTests : TestFixture { public void GetSet() { var label = new Label(); var font = new TestFont(); label.Font = font; CheckEqual(font, label.Font); } public void RecalculatesTestSize() { var label = new Label(); label.Bounds = Rect.FromTwoPoints(Vector.Zero, new Vector(100, 100)); label.Text = "test"; CheckEqual(Vector.Zero, label.TextSize); label.Font = new TestFont(); CheckEqual(new Vector(4.5, 11), label.TextSize); } public void CalculatedSizeAccountsForLabelWidth() { var label = new Label(); label.Bounds = Rect.FromTwoPoints(Vector.Zero, new Vector(4, 100)); label.Text = "test"; CheckEqual(Vector.Zero, label.TextSize); label.Font = new TestFont(); CheckEqual(new Vector(3.375, 33), label.TextSize); } public void CalculatedSizeCannotBeTallerThanBounds() { var label = new Label(); label.Bounds = Rect.FromTwoPoints(Vector.Zero, new Vector(4, 1)); label.Text = "test"; CheckEqual(Vector.Zero, label.TextSize); label.Font = new TestFont(); CheckEqual(new Vector(3.375, 1), label.TextSize); } public void CalculatedSizeCanBeWiderThanBounds() { var label = new Label(); label.Bounds = Rect.FromTwoPoints(Vector.Zero, new Vector(0.5, 100)); label.Text = "test"; CheckEqual(Vector.Zero, label.TextSize); label.Font = new TestFont(); CheckEqual(new Vector(0.5, 77), label.TextSize); } } public void MaterialGetSet() { var material = new Material(); var label = new Label(); label.Material = material; CheckEqual(material, label.Material); } } }