using Azimuth; using Glass.Materials; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using UnitTestSharp; namespace Glass.UnitTests.Materials { public class GlyphMaterialTests : TestFixture { [IgnoreTest] private SpriteFontDefinition MakeFont(char glyph, Point size, Point? invalidSize = null) { var font = new SpriteFontDefinition(); font.GlyphDefinitions[glyph] = new SpriteFontDefinition.GlyphDefinition { Size = size }; if (invalidSize != null) { font.InvalidGlyph = new SpriteFontDefinition.GlyphDefinition { Size = invalidSize.Value, }; } return font; } public void CalculateLayoutSizeReturnsGlyphSize() { var material = new GlyphMaterial { Glyph = 'A', Font = MakeFont('A', new Point(7, 12)) }; CheckEqual(new Vector(7, 12), material.CalculateLayoutSize(Vector.PositiveInfinity)); } public void CalculateLayoutSizeClamps() { var material = new GlyphMaterial { Glyph = 'A', Font = MakeFont('A', new Point(7, 12)) }; CheckEqual(new Vector(3, 4), material.CalculateLayoutSize(new Vector(3, 4))); } public void CalculateLayoutSizeMissingGlyph() { var material = new GlyphMaterial { Glyph = 'A', Font = MakeFont('B', new Point(7, 12), new Point(3, 4)) }; CheckEqual(new Vector(3, 4), material.CalculateLayoutSize(Vector.PositiveInfinity)); } public void CalculateLayoutSizeMissingGlyphClamps() { var material = new GlyphMaterial { Glyph = 'A', Font = MakeFont('B', new Point(7, 12), new Point(3, 4)) }; CheckEqual(new Vector(1, 2), material.CalculateLayoutSize(new Vector(1, 2))); } public void CalculateLayoutSizeIsNotXAdvance() { var font = new SpriteFontDefinition(); font.GlyphDefinitions['A'] = new SpriteFontDefinition.GlyphDefinition { Size = new Point(7, 12), XAdvance = 99 }; var material = new GlyphMaterial { Glyph = 'A', Font = font }; CheckEqual(new Vector(7, 12), material.CalculateLayoutSize(Vector.PositiveInfinity)); } } }