using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using UnitTestSharp; using System.Reflection; namespace Glass.UnitTests { public class SpriteSheetAttributeTests : TestFixture { public void Ctor() { var attribute = new SpriteSheetAttribute(3, 4, 5, "foo"); CheckEqual(3, attribute.SpriteSize.X); CheckEqual(4, attribute.SpriteSize.Y); CheckEqual(5, attribute.BorderSize); CheckEqual("foo", attribute.SpriteSheetSource); } public class InitializeTestType : TestFixture { [SpriteSheet(3, 4, 5, "foo")] public static class TestClass { public static ThreeWideMaterial testMaterial = new ThreeWideMaterial { Materials = new [] { new SpriteMaterial(new Point(7, 11)), new SpriteMaterial(new Point(8, 10)), new SpriteMaterial(new Point(9, 9)), }, }; } public void Basic() { SpriteSheetAttribute.Initialize(typeof(TestClass)); SpriteSheetAttribute attribute = typeof(TestClass).GetCustomAttribute(); CheckEqual(attribute, ((SpriteMaterial)TestClass.testMaterial.LeftMaterial).SpriteSheet); CheckEqual(attribute, ((SpriteMaterial)TestClass.testMaterial.CenterMaterial).SpriteSheet); CheckEqual(attribute, ((SpriteMaterial)TestClass.testMaterial.RightMaterial).SpriteSheet); } public void NullAttribute() { CheckThrow(typeof(InvalidOperationException)); SpriteSheetAttribute.Initialize(typeof(InitializeTestType)); } [SpriteSheet(3, 4, 5, "foo")] public class BaseTestClass { } public class InheritedTestClass : BaseTestClass { } public void SpriteSheetAttributeIsNotInherited() { CheckThrow(typeof(InvalidOperationException)); SpriteSheetAttribute.Initialize(typeof(InheritedTestClass)); } } } }