幾何学幾何学
空間ベクトル単体テスト; 3D Vector Unit Test

概要
空間ベクトルの単体テスト
テスト対象の空間ベクトルクラスはこちら


ソースコード

namespace Geometry.Geometry3D.Tests {
    [TestClass()]
    public class Vector3DTests {
        [TestMethod()]
        public void Vector3DTest() {
            Vector3D vector = new Vector3D(1, 2, 3);

            Assert.AreEqual(vector.X, 1.0);
            Assert.AreEqual(vector.Y, 2.0);
            Assert.AreEqual(vector.Z, 3.0);

            vector.X = 2;
            vector.Y = 4;
            vector.Z = 6;

            Assert.AreEqual(vector.X, 2.0);
            Assert.AreEqual(vector.Y, 4.0);
            Assert.AreEqual(vector.Z, 6.0);
        }

        [TestMethod()]
        public void OperatorTest() {
            Vector3D vector1 = new Vector3D(1, 2, 3);
            Vector3D vector2 = new Vector3D(4, 5, 6);
            Vector3D vector3 = new Vector3D(1, 2, 3);

            Assert.AreEqual(+vector1, new Vector3D(1, 2, 3));
            Assert.AreEqual(-vector1, new Vector3D(-1, -2, -3));
            Assert.AreEqual(vector1 + vector2, new Vector3D(5, 7, 9));
            Assert.AreEqual(vector1 - vector2, new Vector3D(-3, -3, -3));
            Assert.AreEqual(vector2 - vector1, new Vector3D(3, 3, 3));
            Assert.AreEqual(vector1 * 2, new Vector3D(2, 4, 6));
            Assert.AreEqual(2 * vector1, new Vector3D(2, 4, 6));
            Assert.AreEqual(vector1 / 2, new Vector3D(0.5, 1, 1.5));

            Assert.AreEqual(vector1 == vector3, true);
            Assert.AreEqual(vector2 == vector3, false);
            Assert.AreEqual(vector1 != vector2, true);
        }

        [TestMethod()]
        public void NormTest() {
            Vector3D vector1 = new Vector3D(1, 2, 3);

            Assert.AreEqual(vector1.Norm, Math.Sqrt(14));
            Assert.AreEqual(vector1.SquareNorm, 14);
        }

        [TestMethod()]
        public void NormalTest() {
            Vector3D vector1 = new Vector3D(1, 2, 3).Normal;

            Assert.AreEqual(vector1.X, 1 / Math.Sqrt(14));
            Assert.AreEqual(vector1.Y, 2 / Math.Sqrt(14));
            Assert.AreEqual(vector1.Z, 3 / Math.Sqrt(14));
        }

        [TestMethod()]
        public void EqualsTest() {
            Vector3D vector1 = new Vector3D(1, 2, 3);
            Vector3D vector2 = new Vector3D(4, 5, 6);
            Vector3D vector3 = new Vector3D(1, 2, 3);

            Assert.AreEqual(vector1.Equals(vector1), true);
            Assert.AreEqual(vector1.Equals(vector2), false);
            Assert.AreEqual(vector1.Equals(vector3), true);
            Assert.AreEqual(vector1.Equals(null), false);
        }

        [TestMethod()]
        public void DistanceTest() {
            Vector3D vector1 = new Vector3D(1, 2, 3);
            Vector3D vector2 = new Vector3D(4, 6, 9);

            Assert.AreEqual(Vector3D.Distance(vector1, vector2), Math.Sqrt(61));
            Assert.AreEqual(Vector3D.SquareDistance(vector1, vector2), 61);
        }

        [TestMethod()]
        public void InnerProductTest() {
            Vector3D vector1 = new Vector3D(1, 2, 3);
            Vector3D vector2 = new Vector3D(4, 6, 9);

            Assert.AreEqual(Vector3D.InnerProduct(vector1, vector2), 43);
        }

        [TestMethod()]
        public void OuterProductTest() {
            Vector3D vector1 = new Vector3D(1, 2, 3);
            Vector3D vector2 = new Vector3D(4, 6, 9);

            Assert.AreEqual(vector1 * vector2, -vector2 * vector1);
            Assert.AreEqual(vector1 * vector2, new Vector3D(2 * 9 - 3 * 6, 3 * 4 - 1 * 9, 1 * 6 - 2 * 4));
        }

        [TestMethod()]
        public void IsZeroTest() {
            Vector3D vector1 = new Vector3D(0, 0, 1);
            Vector3D vector2 = Vector3D.Zero;

            Assert.AreEqual(Vector3D.IsZero(vector1), false);
            Assert.AreEqual(Vector3D.IsZero(vector2), true);
        }

        [TestMethod()]
        public void IsValidTest() {
            Vector3D vector1 = new Vector3D(0, 0, 1);
            Vector3D vector2 = Vector3D.Zero;
            Vector3D vector3 = Vector3D.Invalid;

            Assert.AreEqual(Vector3D.IsValid(vector1), true);
            Assert.AreEqual(Vector3D.IsValid(vector2), true);
            Assert.AreEqual(Vector3D.IsValid(vector3), false);
        }

        [TestMethod()]
        public void ToStringTest() {
            Vector3D vector = new Vector3D(1, 2, 3);

            Assert.AreEqual(vector.ToString(), "1,2,3");
        }
    }
}

関連項目
空間ベクトル

ライブラリライブラリ
確率統計確率統計
線形代数線形代数
幾何学幾何学
最適化最適化
微分方程式微分方程式
画像処理画像処理
補間補間
機械学習機械学習
クラスタリングクラスタリング
パズルゲーム・パズル
未分類未分類