initial commit
This commit is contained in:
@@ -0,0 +1,199 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace magicSquare.Tests
|
||||
{
|
||||
[TestFixture]
|
||||
public class SquareMatrixTests
|
||||
{
|
||||
[Test]
|
||||
public void Init()
|
||||
{
|
||||
var vals
|
||||
= new [,]
|
||||
{
|
||||
{1, 2, 3},
|
||||
{4, 5, 6},
|
||||
{7, 8, 9}
|
||||
};
|
||||
|
||||
var matrix = new SquareMatrix(vals);
|
||||
Assert.That(matrix.IsFeasible(), Is.False);
|
||||
|
||||
Assert.That(matrix.ColumnSum(0), Is.EqualTo(12));
|
||||
Assert.That(matrix.ColumnSum(1), Is.EqualTo(15));
|
||||
Assert.That(matrix.ColumnSum(2), Is.EqualTo(18));
|
||||
Assert.That(matrix.RowSum(0), Is.EqualTo(6));
|
||||
Assert.That(matrix.RowSum(1), Is.EqualTo(15));
|
||||
Assert.That(matrix.RowSum(2), Is.EqualTo(24));
|
||||
Assert.That(matrix.Diag1Sum, Is.EqualTo(15));
|
||||
Assert.That(matrix.Diag2Sum, Is.EqualTo(15));
|
||||
Assert.That(matrix.ColumnDelta(0), Is.EqualTo(-3));
|
||||
Assert.That(matrix.ColumnDelta(1), Is.EqualTo(0));
|
||||
Assert.That(matrix.ColumnDelta(2), Is.EqualTo(3));
|
||||
Assert.That(matrix.RowDelta(0), Is.EqualTo(-9));
|
||||
Assert.That(matrix.RowDelta(1), Is.EqualTo(0));
|
||||
Assert.That(matrix.RowDelta(2), Is.EqualTo(9));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Swap()
|
||||
{
|
||||
var vals
|
||||
= new [,]
|
||||
{
|
||||
{1, 2, 3},
|
||||
{4, 5, 6},
|
||||
{7, 8, 9}
|
||||
};
|
||||
|
||||
var matrix = new SquareMatrix(vals);
|
||||
matrix.Swap(1,1,2,1);
|
||||
PrintMatrix(matrix);
|
||||
Assert.That(matrix.IsFeasible(), Is.False);
|
||||
|
||||
Assert.That(matrix.ColumnSum(0), Is.EqualTo(12));
|
||||
Assert.That(matrix.ColumnSum(1), Is.EqualTo(15));
|
||||
Assert.That(matrix.ColumnSum(2), Is.EqualTo(18));
|
||||
Assert.That(matrix.RowSum(0), Is.EqualTo(6));
|
||||
Assert.That(matrix.RowSum(1), Is.EqualTo(18));
|
||||
Assert.That(matrix.RowSum(2), Is.EqualTo(21));
|
||||
Assert.That(matrix.Diag1Sum, Is.EqualTo(18));
|
||||
Assert.That(matrix.Diag2Sum, Is.EqualTo(18));
|
||||
Assert.That(matrix.ColumnDelta(0), Is.EqualTo(-3));
|
||||
Assert.That(matrix.ColumnDelta(1), Is.EqualTo(0));
|
||||
Assert.That(matrix.ColumnDelta(2), Is.EqualTo(3));
|
||||
Assert.That(matrix.RowDelta(0), Is.EqualTo(-9));
|
||||
Assert.That(matrix.RowDelta(1), Is.EqualTo(3));
|
||||
Assert.That(matrix.RowDelta(2), Is.EqualTo(6));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Swap2()
|
||||
{
|
||||
var vals
|
||||
= new [,]
|
||||
{
|
||||
{1, 2, 3},
|
||||
{4, 5, 6},
|
||||
{7, 8, 9}
|
||||
};
|
||||
|
||||
var matrix = new SquareMatrix(vals);
|
||||
matrix.Swap(0,1,1,2);
|
||||
PrintMatrix(matrix);
|
||||
Assert.That(matrix.IsFeasible(), Is.False);
|
||||
|
||||
Assert.That(matrix.ColumnSum(0), Is.EqualTo(12));
|
||||
Assert.That(matrix.ColumnSum(1), Is.EqualTo(19));
|
||||
Assert.That(matrix.ColumnSum(2), Is.EqualTo(14));
|
||||
Assert.That(matrix.RowSum(0), Is.EqualTo(10));
|
||||
Assert.That(matrix.RowSum(1), Is.EqualTo(11));
|
||||
Assert.That(matrix.RowSum(2), Is.EqualTo(24));
|
||||
Assert.That(matrix.Diag1Sum, Is.EqualTo(15));
|
||||
Assert.That(matrix.Diag2Sum, Is.EqualTo(15));
|
||||
Assert.That(matrix.ColumnDelta(0), Is.EqualTo(-3));
|
||||
Assert.That(matrix.ColumnDelta(1), Is.EqualTo(4));
|
||||
Assert.That(matrix.ColumnDelta(2), Is.EqualTo(-1));
|
||||
Assert.That(matrix.RowDelta(0), Is.EqualTo(-5));
|
||||
Assert.That(matrix.RowDelta(1), Is.EqualTo(-4));
|
||||
Assert.That(matrix.RowDelta(2), Is.EqualTo(9));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Swap3()
|
||||
{
|
||||
var vals
|
||||
= new [,]
|
||||
{
|
||||
{1, 2, 3},
|
||||
{4, 5, 6},
|
||||
{7, 8, 9}
|
||||
};
|
||||
|
||||
var matrix = new SquareMatrix(vals);
|
||||
matrix.Swap(2,0,1,2);
|
||||
PrintMatrix(matrix);
|
||||
Assert.That(matrix.IsFeasible(), Is.False);
|
||||
|
||||
Assert.That(matrix.ColumnSum(0), Is.EqualTo(11));
|
||||
Assert.That(matrix.ColumnSum(1), Is.EqualTo(15));
|
||||
Assert.That(matrix.ColumnSum(2), Is.EqualTo(19));
|
||||
Assert.That(matrix.RowSum(0), Is.EqualTo(6));
|
||||
Assert.That(matrix.RowSum(1), Is.EqualTo(16));
|
||||
Assert.That(matrix.RowSum(2), Is.EqualTo(23));
|
||||
Assert.That(matrix.Diag1Sum, Is.EqualTo(15));
|
||||
Assert.That(matrix.Diag2Sum, Is.EqualTo(14));
|
||||
Assert.That(matrix.ColumnDelta(0), Is.EqualTo(-4));
|
||||
Assert.That(matrix.ColumnDelta(1), Is.EqualTo(0));
|
||||
Assert.That(matrix.ColumnDelta(2), Is.EqualTo(4));
|
||||
Assert.That(matrix.RowDelta(0), Is.EqualTo(-9));
|
||||
Assert.That(matrix.RowDelta(1), Is.EqualTo(1));
|
||||
Assert.That(matrix.RowDelta(2), Is.EqualTo(8));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Deltas()
|
||||
{
|
||||
var vals
|
||||
= new[,]
|
||||
{
|
||||
{1, 2, 3},
|
||||
{4, 5, 6},
|
||||
{7, 8, 9}
|
||||
};
|
||||
|
||||
var matrix = new SquareMatrix(vals);
|
||||
var pairs = matrix.MaxColumnDeltaPairs().ToArray();
|
||||
Assert.That(pairs.First(), Is.EqualTo(new Tuple<int,int>(0,2)));
|
||||
}
|
||||
[Test]
|
||||
public void Deltas2()
|
||||
{
|
||||
var vals
|
||||
= new[,]
|
||||
{
|
||||
{1, 2, 3, 4},
|
||||
{4, 5, 6, 7},
|
||||
{8, 9, 10, 11},
|
||||
{12,13,14,15}
|
||||
};
|
||||
|
||||
var matrix = new SquareMatrix(vals);
|
||||
var pairs = matrix.MaxColumnDeltaPairs().ToArray();
|
||||
Assert.That(pairs.First(), Is.EqualTo(new Tuple<int,int>(1,3)));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void IsDiagonalTest()
|
||||
{
|
||||
var vals
|
||||
= new[,]
|
||||
{
|
||||
{1, 2, 3, 4},
|
||||
{4, 5, 6, 7},
|
||||
{8, 9, 10, 11},
|
||||
{12,13,14,15}
|
||||
};
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void PrintMatrix(SquareMatrix sm)
|
||||
{
|
||||
Console.WriteLine(sm.Size);
|
||||
var rowValues =
|
||||
from row in Enumerable.Range(0, sm.Size)
|
||||
let rowVals =
|
||||
(from col in Enumerable.Range(0, sm.Size)
|
||||
select sm.GetValue(row,col))
|
||||
select rowVals;
|
||||
foreach (var rowValue in rowValues)
|
||||
{
|
||||
Console.WriteLine(string.Join("\t", rowValue.ToArray()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user