using Microsoft.Xna.Framework; using MonoGame.Extended.Tilemaps; namespace MonoGame.Extended.Tests; public sealed class TilemapTextObjectTests { [Fact] public void Constructor_SetsProperties() { var obj = new TilemapTextObject(1, new Vector2(10, 20), new Vector2(100, 50), "Hello World"); Assert.Equal(1, obj.Id); Assert.Equal(new Vector2(10, 20), obj.Position); Assert.Equal(new Vector2(100, 50), obj.Size); Assert.Equal("Hello World", obj.Text); } [Fact] public void Bounds_ReturnsRectangleWithSize() { var obj = new TilemapTextObject(1, new Vector2(10, 20), new Vector2(100, 50), "Test"); var bounds = obj.Bounds; Assert.Equal(10, bounds.X); Assert.Equal(20, bounds.Y); Assert.Equal(100, bounds.Width); Assert.Equal(50, bounds.Height); } [Fact] public void Constructor_SetsDefaultFontProperties() { var obj = new TilemapTextObject(1, Vector2.Zero, new Vector2(100, 50), "Test"); Assert.Equal("sans-serif", obj.FontFamily); Assert.Equal(16, obj.PixelSize); Assert.Equal(Color.Black, obj.Color); Assert.Equal(TilemapTextObjectHorizontalAlignment.Left, obj.HorizontalAlign); Assert.Equal(TilemapTextObjectVerticalAlignment.Top, obj.VerticalAlign); Assert.False(obj.Bold); Assert.False(obj.Italic); Assert.False(obj.Underline); Assert.False(obj.Strikethrough); Assert.False(obj.WordWrap); } [Fact] public void FontProperties_CanBeSet() { var obj = new TilemapTextObject(1, Vector2.Zero, new Vector2(100, 50), "Test"); obj.FontFamily = "Arial"; obj.PixelSize = 24; obj.Bold = true; obj.Italic = true; obj.Underline = true; obj.Strikethrough = true; // Assert Assert.Equal("Arial", obj.FontFamily); Assert.Equal(24, obj.PixelSize); Assert.True(obj.Bold); Assert.True(obj.Italic); Assert.True(obj.Underline); Assert.True(obj.Strikethrough); } [Fact] public void TextColor_CanBeSet() { var obj = new TilemapTextObject(1, Vector2.Zero, new Vector2(100, 50), "Test"); obj.Color = Color.Red; Assert.Equal(Color.Red, obj.Color); } [Fact] public void Alignment_CanBeSet() { var obj = new TilemapTextObject(1, Vector2.Zero, new Vector2(100, 50), "Test"); obj.HorizontalAlign = TilemapTextObjectHorizontalAlignment.Center; obj.VerticalAlign = TilemapTextObjectVerticalAlignment.Center; // Assert Assert.Equal(TilemapTextObjectHorizontalAlignment.Center, obj.HorizontalAlign); Assert.Equal(TilemapTextObjectVerticalAlignment.Center, obj.VerticalAlign); } [Fact] public void WordWrap_CanBeSet() { var obj = new TilemapTextObject(1, Vector2.Zero, new Vector2(100, 50), "Test"); obj.WordWrap = true; Assert.True(obj.WordWrap); } [Fact] public void Size_CanBeModified() { var obj = new TilemapTextObject(1, Vector2.Zero, new Vector2(100, 50), "Test"); obj.Size = new Vector2(200, 100); Assert.Equal(new Vector2(200, 100), obj.Size); Assert.Equal(200, obj.Bounds.Width); Assert.Equal(100, obj.Bounds.Height); } [Fact] public void Text_CanBeModified() { var obj = new TilemapTextObject(1, Vector2.Zero, new Vector2(100, 50), "Original"); obj.Text = "Modified"; Assert.Equal("Modified", obj.Text); } }