public void DrawQueueTest_CheckBasicAdd_NumberAndContentOfRequestsOK() { var messenger = Substitute.For <IFrameworkMessenger>(); IComparerCollection comparers = new ComparerCollection(); IDrawQueue queue = new DrawQueue(messenger, comparers, 32, 4, false); for (var n = 0; n < 10; n++) { var even = n % 2 == 0; var target = even ? CoordinateSpace.Screen : CoordinateSpace.World; var fill = even ? FillType.Coloured : FillType.Textured; if (n == 1) { fill = FillType.DualTextured; } var val = 0.1f * n; var colour = new Colour(val, val, val, val); var verts = new Vertex2D[] { new Vertex2D { Colour = Colour.White, Position = Vector2.Zero, TexCoord0 = Vector2.Zero, TexCoord1 = Vector2.One, TexWeighting = 0.9f } }; var indices = new int[] { 0, 1, 0 }; var texture0 = (ulong)n; var texture1 = (ulong)n; var texMode0 = TextureCoordinateMode.Mirror; var texMode1 = TextureCoordinateMode.Wrap; var depth = 0.05f * n; var layer = n; queue.Add( ref target, ref fill, ref colour, ref verts, ref indices, ref texture0, ref texture1, ref texMode0, ref texMode1, ref depth, ref layer); } Assert.Equal(10, queue.Data.NumRequests); var data = queue.Data; //Test values in single request Assert.Equal(CoordinateSpace.World, data.Targets[5]); Assert.Equal(FillType.Textured, data.Types[5]); Assert.Equal(0.5f, data.BaseColours[5].R, 5); Assert.Equal(0.9f, data.Vertices[data.FirstVertexPosition[5]].TexWeighting, 5); Assert.Equal(1, data.Indices[data.FirstIndexPosition[5] + 1]); Assert.Equal((ulong)5, data.Texture1[5]); Assert.Equal(0.25f, data.Depths[5], 5); Assert.Equal(5, data.Layers[5]); }
public void DrawQueueTest_InitialQueue_CatchSmallSizeInputs() { var messenger = Substitute.For <IFrameworkMessenger>(); IComparerCollection comparers = new ComparerCollection(); IDrawQueue queue = new DrawQueue(messenger, comparers, -10, -4, false); Assert.Equal(512, queue.Data.QueueSizeSingleProperty); Assert.Equal(4096, queue.Data.QueueSizeIndex); }
public void DrawQueueTest_CheckBasicClear_ConfirmZeroPostClear() { var messenger = Substitute.For <IFrameworkMessenger>(); IComparerCollection comparers = new ComparerCollection(); IDrawQueue queue = new DrawQueue(messenger, comparers, 32, 4, false); for (var n = 0; n < 10; n++) { var even = n % 2 == 0; var target = even ? CoordinateSpace.Screen : CoordinateSpace.World; var fill = even ? FillType.Coloured : FillType.Textured; if (n == 1) { fill = FillType.DualTextured; } var val = 0.1f * n; var colour = new Colour(val, val, val, val); var verts = new Vertex2D[] { new Vertex2D { Colour = Colour.White, Position = Vector2.Zero, TexCoord0 = Vector2.Zero, TexCoord1 = Vector2.One, TexWeighting = 0.9f } }; var indices = new int[] { 0, 1, 0 }; var texture0 = (ulong)n; var texture1 = (ulong)n; var texMode0 = TextureCoordinateMode.Mirror; var texMode1 = TextureCoordinateMode.Wrap; var depth = 0.05f * n; var layer = n; queue.Add( ref target, ref fill, ref colour, ref verts, ref indices, ref texture0, ref texture1, ref texMode0, ref texMode1, ref depth, ref layer); } Assert.Equal(10, queue.Data.NumRequests); queue.Clear(); Assert.Equal(0, queue.Data.NumRequests); }
[InlineData(12, 24, FillType.DualTextured, 1UL, 2UL, 1.0f, -1)] //Fails invalid layer public void DrawQueueTest_TestingAddIfValid_FailOnAllAsEachHasConfigurationIssue(int numverts, int numindices, FillType fill, ulong tex0, ulong tex1, float depth, int layer) { var messenger = Substitute.For <IFrameworkMessenger>(); IComparerCollection comparers = new ComparerCollection(); IDrawQueue queue = new DrawQueue(messenger, comparers, 32, 4, false); var target = CoordinateSpace.Screen; var colour = Colour.White; var vlist = new List <Vertex2D>(); for (var n = 0; n < numverts; n++) { vlist.Add(new Vertex2D { Colour = Colour.White, Position = Vector2.Zero, TexCoord0 = Vector2.Zero, TexCoord1 = Vector2.One, TexWeighting = 0.9f }); } var verts = vlist.ToArray(); var ilist = new List <int>(); for (var n = 0; n < numindices; n++) { ilist.Add(n); } var indices = ilist.ToArray(); var texture0 = tex0; var texture1 = tex1; var texMode0 = TextureCoordinateMode.Mirror; var texMode1 = TextureCoordinateMode.Wrap; Assert.False(queue.AddIfValid( ref target, ref fill, ref colour, ref verts, ref indices, ref texture0, ref texture1, ref texMode0, ref texMode1, ref depth, ref layer)); }
public void DrawQueueTest_TestingSort_OrderingIsCorrect() { var messenger = Substitute.For <IFrameworkMessenger>(); IComparerCollection comparers = new ComparerCollection(); IDrawQueue queue = new DrawQueue(messenger, comparers, 32, 4, false); AddItem(queue, TextureCoordinateMode.Mirror, TextureCoordinateMode.Mirror, FillType.Coloured, 0UL, 0UL, 0.5f, 1); //0 AddItem(queue, TextureCoordinateMode.Mirror, TextureCoordinateMode.Mirror, FillType.Coloured, 0UL, 0UL, 0.6f, 1); //1 AddItem(queue, TextureCoordinateMode.Mirror, TextureCoordinateMode.Mirror, FillType.Coloured, 0UL, 0UL, 0.8f, 1); //2 AddItem(queue, TextureCoordinateMode.Wrap, TextureCoordinateMode.Mirror, FillType.DualTextured, 0UL, 1UL, 0.7f, 0); //3 AddItem(queue, TextureCoordinateMode.Mirror, TextureCoordinateMode.Mirror, FillType.DualTextured, 0UL, 1UL, 0.7f, 0); //4 AddItem(queue, TextureCoordinateMode.Mirror, TextureCoordinateMode.Wrap, FillType.DualTextured, 0UL, 1UL, 0.7f, 0); //5 AddItem(queue, TextureCoordinateMode.Wrap, TextureCoordinateMode.Wrap, FillType.Textured, 0UL, 0UL, 0.8f, 0); //6 AddItem(queue, TextureCoordinateMode.Wrap, TextureCoordinateMode.Wrap, FillType.Textured, 2UL, 0UL, 0.8f, 0); //7 AddItem(queue, TextureCoordinateMode.Wrap, TextureCoordinateMode.Wrap, FillType.Textured, 1UL, 0UL, 0.8f, 0); //8 AddItem(queue, TextureCoordinateMode.Wrap, TextureCoordinateMode.Mirror, FillType.DualTextured, 0UL, 1UL, 0.3f, 3); //9 AddItem(queue, TextureCoordinateMode.Wrap, TextureCoordinateMode.Mirror, FillType.DualTextured, 0UL, 1UL, 0.3f, 4); //10 AddItem(queue, TextureCoordinateMode.Wrap, TextureCoordinateMode.Mirror, FillType.DualTextured, 0UL, 1UL, 0.3f, 5); //11 AddItem(queue, TextureCoordinateMode.Wrap, TextureCoordinateMode.Mirror, FillType.DualTextured, 0UL, 3UL, 0.7f, 6); //12 AddItem(queue, TextureCoordinateMode.Wrap, TextureCoordinateMode.Mirror, FillType.DualTextured, 0UL, 2UL, 0.7f, 6); //13 AddItem(queue, TextureCoordinateMode.Wrap, TextureCoordinateMode.Mirror, FillType.DualTextured, 0UL, 1UL, 0.7f, 6); //14 queue.Sort(); /* * 6, 8, 7 -> Ordered by Texture0 * 3, 5, 4 -> Ordered by Tex0 and Tex1 wrap modes * 2, 1, 0 -> ordered by depth * 9, 10, 11 -> ordered by layer * 14, 13, 12 -> ordered by Texture1 in Dual Textured */ var order = new int[] { 6, 8, 7, 3, 5, 4, 2, 1, 0, 9, 10, 11, 14, 13, 12 }; for (var n = 0; n < order.Length; n++) { Assert.Equal(order[n], queue.Data.Ordering[n]); } }