public void CanCreateMesh() { var label = "Plane"; var color = new[] { 0.2f, 0.4f, 0.6f, 1f }; var vertices = new[] { new[] { 0f, 0f, 0f }, new[] { 1f, 0f, 0f }, new[] { 1f, 1f, 0f }, new[] { 0f, 1f, 0f } }; var indices = new[] { new[] { 0, 1, 2 }, new[] { 0, 2, 3 } }; var factory = new GeometryFactory(); factory.BeginMesh(label); factory.SetColor(color[0], color[1], color[2], color[3]); foreach (var vertex in vertices) { factory.AddVertex(vertex[0], vertex[1], vertex[2]); } foreach (var triangle in indices) { factory.AddTriangle(triangle[0], triangle[1], triangle[2]); } var mesh = factory.CompleteMesh(); Assert.Equal(label, mesh.Label); Assert.True(AreEqual(color, mesh.Color)); var allVerticesAreEqual = mesh.Vertices.Zip(vertices, (vector, array) => AreEqual(array, vector)).All(b => b); Assert.True(allVerticesAreEqual); var allIndicesAreEqual = mesh.TriangleIndices.Zip(indices, (list, array) => AreEqual(array, list)).All(b => b); Assert.True(allIndicesAreEqual); }