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);
        }