using System.Runtime.InteropServices; using UnitTestSharp; using Blacklight.GPUBridge; namespace Blacklight.SharpDX9.UnitTesting { public class SharpDX9VertexLayoutTests : TestFixture { public class ElementsTests : TestFixture { // A wrong offset here means the shader silently reads the wrong bytes, so pin every element to the // CustomVertexDefinition field it describes. public void MatchTheStructFieldsTheyDescribe() { int OffsetOf(string field) => Marshal.OffsetOf(typeof(VertexDefinition), field).ToInt32(); var elements = SharpDX9VertexLayout.Elements; CheckEqual(OffsetOf(nameof(VertexDefinition.TranslationAndVertexPosition)), (int)elements[0].Offset); CheckEqual(OffsetOf(nameof(VertexDefinition.ScaleAndOrientation)), (int)elements[1].Offset); CheckEqual(OffsetOf(nameof(VertexDefinition.BorderStyle)), (int)elements[2].Offset); CheckEqual(OffsetOf(nameof(VertexDefinition.UserData_1)), (int)elements[3].Offset); CheckEqual(OffsetOf(nameof(VertexDefinition.ClipWindowLS)), (int)elements[4].Offset); CheckEqual(OffsetOf(nameof(VertexDefinition.SpriteDestinationRect)), (int)elements[5].Offset); CheckEqual(OffsetOf(nameof(VertexDefinition.InsideColor)), (int)elements[6].Offset); CheckEqual(OffsetOf(nameof(VertexDefinition.BorderColor)), (int)elements[7].Offset); CheckEqual(OffsetOf(nameof(VertexDefinition.BorderTextureSlot)), (int)elements[8].Offset); } } } }