public void ReturnValues_Test(
            float x0, float y0, float z0,
            float x1, float y1, float z1,
            float x2, float y2, float z2
            )
        {
            GameObject g1 = new GameObject(), g2 = new GameObject(), g0 = new GameObject();
            Vector3    p0 = g0.transform.position = new Vector3(x0, y0, z0);
            Vector3    p1 = g1.transform.position = new Vector3(x1, y1, z1);
            Vector3    p2 = g2.transform.position = new Vector3(x2, y2, z2);

            Transform[] transforms = new Transform[] { g0.transform, g1.transform, g2.transform };

            Vector4[] r = ShaderHelper.ToHomogeneousCoordinates(transforms).ToArray();

            Vector4 r0 = r[0], r1 = r[1], r2 = r[2];

            Assert.AreEqual(r0.x, p0.x, "x0");
            Assert.AreEqual(r0.y, p0.y, "y0");
            Assert.AreEqual(r0.z, p0.z, "z0");
            Assert.AreEqual(r0.w, 1, "w0");

            Assert.AreEqual(r1.x, p1.x, "x1");
            Assert.AreEqual(r1.y, p1.y, "y1");
            Assert.AreEqual(r1.z, p1.z, "z1");
            Assert.AreEqual(r1.w, 1, "w2");

            Assert.AreEqual(r2.x, p2.x, "x2");
            Assert.AreEqual(r2.y, p2.y, "y2");
            Assert.AreEqual(r2.z, p2.z, "z2");
            Assert.AreEqual(r2.w, 1, "w2");
        }