0

こんにちは、私は自分のプロジェクトの単体テストに取り組んでおり、Measurementool という名前の抽象クラスの getmin メソッドをチェックしたいと考えています。そのメソッドは、現在のマトリックスから選択された領域マトリックスの最小値を返します。私のプロジェクトには、実際には N*N マトリックスである長方形の領域があります。

マトリックス内の最小値が必要です。デバッグ用の単体テストを作成し、getmin 値をテストしましたが、実際の値に対して目的の値が表示されません。ゼロで満たされた選択領域行列で、テスト メソッドで期待値が設定されていません。私は、それは2つのマトリックスを考慮していると思います。次のように新しいマトリックスを作成すると、値がゼロのマトリックスが間違っています。

MatrixHolder selectedArea = 
           new MatrixHolder(new double[areaHeight * areaWidth], areaWidth);

単体テスト コード:

[TestMethod()]
public void GetMinTest()
{
    AreaMeasurmentTool target = new Rectangle(); 
    double[,] MatrixResult = new double[,] {
    {10, 0, 20, 10, 10},
    {12, 2, 30, 15, 16},
    {19, 0, 43, 10, 17},
    {80, 0, 65, 18, 13},
    {70, 4, 10, 10, 10}};
    double []SelectedArea1 = new double[9]{2, 30, 15, 1, 43, 10, 2, 65, 18};
    MatrixHolder currentMatrix = new MatrixHolder(SelectedArea1, 3); 
    double expected = 1; 
    double actual;
    actual = target.GetMin(currentMatrix);
    Assert.AreEqual(expected, actual);
}

およびクラス MeasurementTool:

public virtual double GetMin(MatrixHolder currentMatrix)
{
    if (currentMatrix == null)
    {
        throw new Exception("the image Matrix cannot be null.");
    }

    double minValue = 0;

    SetSelectArea(currentMatrix);
    minValue = CalculateMin();
    minValue = Math.Round(minValue, 2);

    return minValue;
}

private void SetSelectArea(MatrixHolder currentMatrix)
{
    PointHolder start = new PointHolder(0, 0);
    PointHolder end = new PointHolder(0, 0);

    SetBoundries(start, end);


    int areaHeight = (end.Y - start.Y);
    int areaWidth = (end.X - start.X);

    MatrixHolder selectedArea = new MatrixHolder(new double[areaHeight * areaWidth], areaWidth);
    for (int i = 0; i < areaHeight; i++)
    {
        int sourceIndex = start.X + (currentMatrix.Witdh * (i + start.Y));
        int targetIndex = areaWidth * i;
        Array.Copy(currentMatrix.Values, sourceIndex
            , selectedArea.Values, targetIndex
            , areaWidth);
    }

    SelectedAreas = selectedArea;
}
4

0 に答える 0