using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using UnitTestSharp; namespace Glass.UnitTests { public class SpriteMaterialTests : TestFixture { public class Ctor : TestFixture { public void Point() { var sprite = new SpriteMaterial(new Point(3, 4)); CheckEqual(new Point(3, 4), sprite.CellLocation); } public void PointWithOffset() { var sprite = new SpriteMaterial(new Point(3, 4), 7, 11); CheckEqual(new Point(10, 15), sprite.CellLocation); } public void DebugNamePrefix_Point() { var sprite = new SpriteMaterial(new Point(3, 4), "foo"); CheckEqual("foo:3, 4", sprite.ToString()); } public void DebugNamePrefix_PointWithOffset() { var sprite = new SpriteMaterial(new Point(3, 4), 7, 11, "foo"); CheckEqual("foo:10, 15", sprite.ToString()); } } public class NaturalWidth : TestFixture { public void NoSpriteSheetSet() { var sprite = new SpriteMaterial(new Point(3, 4)); CheckNull(sprite.NaturalWidth); } public void SpriteSheetSet() { var spriteSheet = new SpriteSheetAttribute(3, 4, 5, "foo"); var sprite = new SpriteMaterial(new Point(7, 11)); sprite.SpriteSheet = spriteSheet; CheckEqual(3, sprite.NaturalWidth); } } public class NaturalHeight : TestFixture { public void NoSpriteSheetSet() { var sprite = new SpriteMaterial(new Point(3, 4)); CheckNull(sprite.NaturalHeight); } public void SpriteSheetSet() { var spriteSheet = new SpriteSheetAttribute(3, 4, 5, "foo"); var sprite = new SpriteMaterial(new Point(7, 11)); sprite.SpriteSheet = spriteSheet; CheckEqual(4, sprite.NaturalHeight); } } public class InitializeMaterialTests : TestFixture { public void Basic() { var attribute = new SpriteSheetAttribute(3, 4, 5, "foo"); var sprite = new SpriteMaterial(new Point(7, 11)); SpriteMaterial.InitializeMaterial(sprite, attribute); CheckEqual(attribute, sprite.SpriteSheet); } public class ParentSpriteMaterial : SpriteMaterial { public ParentSpriteMaterial() : base(new Point(7, 11)) { } public SpriteMaterial child; public override IList ChildMaterials => new [] { child }; } public void RecursesToChildren() { var attribute = new SpriteSheetAttribute(3, 4, 5, "foo"); var parent = new ParentSpriteMaterial(); var sprite = new SpriteMaterial(new Point(7, 11)); parent.child = sprite; SpriteMaterial.InitializeMaterial(parent, attribute); CheckEqual(attribute, parent.SpriteSheet); CheckEqual(attribute, sprite.SpriteSheet); } public void RecursesToGrandChildren() { var attribute = new SpriteSheetAttribute(3, 4, 5, "foo"); var grandParent = new ParentSpriteMaterial(); var parent = new ParentSpriteMaterial(); var sprite = new SpriteMaterial(new Point(7, 11)); parent.child = sprite; grandParent.child = parent; SpriteMaterial.InitializeMaterial(grandParent, attribute); CheckEqual(attribute, grandParent.SpriteSheet); CheckEqual(attribute, parent.SpriteSheet); CheckEqual(attribute, sprite.SpriteSheet); } public void BaseMaterialDoesNothing() { var attribute = new SpriteSheetAttribute(3, 4, 5, "foo"); var material = new Material(); SpriteMaterial.InitializeMaterial(material, attribute); // If it doesn't crash, we're good. } public void SpriteMaterialSetsSheet() { var attribute = new SpriteSheetAttribute(3, 4, 5, "foo"); var material = new SpriteMaterial(new Point(7, 11)); SpriteMaterial.InitializeMaterial(material, attribute); CheckEqual(attribute, material.SpriteSheet); } public void InitializesChildren() { var attribute = new SpriteSheetAttribute(3, 4, 5, "foo"); var parent = new ThreeWideMaterial(); var material0 = new SpriteMaterial(new Point(7, 11)); var material1 = new SpriteMaterial(new Point(7, 11)); var material2 = new SpriteMaterial(new Point(7, 11)); parent.Materials = new[] { material0, material1, material2 }; SpriteMaterial.InitializeMaterial(parent, attribute); CheckEqual(attribute, material0.SpriteSheet); CheckEqual(attribute, material1.SpriteSheet); CheckEqual(attribute, material2.SpriteSheet); } } public class ThreeWideMaterialTests : TestFixture { public void Basic() { var threeWide = SpriteMaterial.CreateThreeWide(new Point(3, 4)); SpriteMaterial leftSprite = (SpriteMaterial)threeWide.LeftMaterial; SpriteMaterial centerSprite = (SpriteMaterial)threeWide.CenterMaterial; SpriteMaterial rightSprite = (SpriteMaterial)threeWide.RightMaterial; CheckEqual(new Point(2, 4), leftSprite.CellLocation); CheckEqual(new Point(3, 4), centerSprite.CellLocation); CheckEqual(new Point(4, 4), rightSprite.CellLocation); } public void DebugName() { var threeWide = SpriteMaterial.CreateThreeWide(new Point(3, 4), "foo"); SpriteMaterial leftSprite = (SpriteMaterial)threeWide.LeftMaterial; SpriteMaterial centerSprite = (SpriteMaterial)threeWide.CenterMaterial; SpriteMaterial rightSprite = (SpriteMaterial)threeWide.RightMaterial; CheckEqual("foo", threeWide.ToString()); CheckEqual("foo:2, 4", leftSprite.ToString()); CheckEqual("foo:3, 4", centerSprite.ToString()); CheckEqual("foo:4, 4", rightSprite.ToString()); } } public class NineSliceMaterialTests : TestFixture { public void Basic() { var nineSlice = SpriteMaterial.CreateNineSlice(new Point(3, 4)); SpriteMaterial upperLeft = (SpriteMaterial)nineSlice.UpperLeftMaterial; SpriteMaterial upperMiddle = (SpriteMaterial)nineSlice.UpperMiddleMaterial; SpriteMaterial upperRight = (SpriteMaterial)nineSlice.UpperRightMaterial; SpriteMaterial middleLeft = (SpriteMaterial)nineSlice.MiddleLeftMaterial; SpriteMaterial center = (SpriteMaterial)nineSlice.CenterMaterial; SpriteMaterial middleRight = (SpriteMaterial)nineSlice.MiddleRightMaterial; SpriteMaterial bottomLeft = (SpriteMaterial)nineSlice.BottomLeftMaterial; SpriteMaterial bottomMiddle = (SpriteMaterial)nineSlice.BottomMiddleMaterial; SpriteMaterial bottomRight = (SpriteMaterial)nineSlice.BottomRightMaterial; CheckEqual(new Point(2, 3), upperLeft.CellLocation); CheckEqual(new Point(3, 3), upperMiddle.CellLocation); CheckEqual(new Point(4, 3), upperRight.CellLocation); CheckEqual(new Point(2, 4), middleLeft.CellLocation); CheckEqual(new Point(3, 4), center.CellLocation); CheckEqual(new Point(4, 4), middleRight.CellLocation); CheckEqual(new Point(2, 5), bottomLeft.CellLocation); CheckEqual(new Point(3, 5), bottomMiddle.CellLocation); CheckEqual(new Point(4, 5), bottomRight.CellLocation); } public void DebugName() { var nineSlice = SpriteMaterial.CreateNineSlice(new Point(3, 4), "foo"); SpriteMaterial upperLeft = (SpriteMaterial)nineSlice.UpperLeftMaterial; SpriteMaterial upperMiddle = (SpriteMaterial)nineSlice.UpperMiddleMaterial; SpriteMaterial upperRight = (SpriteMaterial)nineSlice.UpperRightMaterial; SpriteMaterial middleLeft = (SpriteMaterial)nineSlice.MiddleLeftMaterial; SpriteMaterial center = (SpriteMaterial)nineSlice.CenterMaterial; SpriteMaterial middleRight = (SpriteMaterial)nineSlice.MiddleRightMaterial; SpriteMaterial bottomLeft = (SpriteMaterial)nineSlice.BottomLeftMaterial; SpriteMaterial bottomMiddle = (SpriteMaterial)nineSlice.BottomMiddleMaterial; SpriteMaterial bottomRight = (SpriteMaterial)nineSlice.BottomRightMaterial; CheckEqual("foo:2, 3", upperLeft.ToString()); CheckEqual("foo:3, 3", upperMiddle.ToString()); CheckEqual("foo:4, 3", upperRight.ToString()); CheckEqual("foo:2, 4", middleLeft.ToString()); CheckEqual("foo:3, 4", center.ToString()); CheckEqual("foo:4, 4", middleRight.ToString()); CheckEqual("foo:2, 5", bottomLeft.ToString()); CheckEqual("foo:3, 5", bottomMiddle.ToString()); CheckEqual("foo:4, 5", bottomRight.ToString()); } } } }