幾何学幾何学
平面ベクトル単体テスト; 2D Vector Unit Test

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


ソースコード

namespace Geometry.Geometry2D.Tests {
    [TestClass()]
    public class Vector2DTests {
        [TestMethod()]
        public void Vector2DTest() {
            Vector2D vector = new Vector2D(1, 2);

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

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

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

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

            Assert.AreEqual(+vector1, new Vector2D(1, 2));
            Assert.AreEqual(-vector1, new Vector2D(-1, -2));
            Assert.AreEqual(vector1 + vector2, new Vector2D(4, 6));
            Assert.AreEqual(vector1 - vector2, new Vector2D(-2, -2));
            Assert.AreEqual(vector2 - vector1, new Vector2D(2, 2));
            Assert.AreEqual(vector1 * 2, new Vector2D(2, 4));
            Assert.AreEqual(2 * vector1, new Vector2D(2, 4));
            Assert.AreEqual(vector1 / 2, new Vector2D(0.5, 1));

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

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

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

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

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

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

            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() {
            Vector2D vector1 = new Vector2D(1, 2);
            Vector2D vector2 = new Vector2D(4, 6);

            Assert.AreEqual(Vector2D.Distance(vector1, vector2), Math.Sqrt(25));
            Assert.AreEqual(Vector2D.SquareDistance(vector1, vector2), 25);
        }

        [TestMethod()]
        public void InnerProductTest() {
            Vector2D vector1 = new Vector2D(1, 2);
            Vector2D vector2 = new Vector2D(4, -6);

            Assert.AreEqual(Vector2D.InnerProduct(vector1, vector2), -8.0);
        }

        [TestMethod()]
        public void IsZeroTest() {
            Vector2D vector1 = new Vector2D(1, 2);
            Vector2D vector2 = Vector2D.Zero;
            Vector2D vector3 = Vector2D.Invalid;

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

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

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

            vector1.Y = double.NaN;

            Assert.AreEqual(Vector2D.IsValid(vector1), false);
        }

        [TestMethod()]
        public void ToStringTest() {
            Vector2D vector1 = new Vector2D(1, 2);

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

関連項目
平面ベクトル

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