init
This commit is contained in:
176
tests/ScoreTests.cs
Normal file
176
tests/ScoreTests.cs
Normal file
@@ -0,0 +1,176 @@
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace InverseOfLife.Test;
|
||||
|
||||
[TestFixture]
|
||||
public class ScoreTests
|
||||
{
|
||||
[Test]
|
||||
public void Score_AllCellsMatch_ReturnsOne()
|
||||
{
|
||||
var board1 = new Board(3, 3);
|
||||
var board2 = new Board(3, 3);
|
||||
|
||||
board1.Toggle(0, 0);
|
||||
board1.Toggle(1, 1);
|
||||
board1.Toggle(2, 2);
|
||||
|
||||
board2.Toggle(0, 0);
|
||||
board2.Toggle(1, 1);
|
||||
board2.Toggle(2, 2);
|
||||
|
||||
double score = Summarizer.Score(board1, board2);
|
||||
Assert.That(score, Is.EqualTo(1.0));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Score_NoMatchingCells_ReturnsZero()
|
||||
{
|
||||
var board1 = new Board(3, 3);
|
||||
var board2 = new Board(3, 3);
|
||||
|
||||
board1.Toggle(0, 0);
|
||||
board1.Toggle(1, 1);
|
||||
board1.Toggle(2, 2);
|
||||
|
||||
board2.Toggle(0, 1);
|
||||
board2.Toggle(1, 2);
|
||||
board2.Toggle(2, 0);
|
||||
|
||||
double score = Summarizer.Score(board1, board2);
|
||||
Assert.That(score, Is.EqualTo(1d / 3d));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Score_PartialMatch_ReturnsCorrectValue()
|
||||
{
|
||||
var board1 = new Board(3, 3);
|
||||
var board2 = new Board(3, 3);
|
||||
|
||||
board1.Toggle(0, 0);
|
||||
board1.Toggle(1, 1);
|
||||
board1.Toggle(2, 2);
|
||||
|
||||
board2.Toggle(0, 0);
|
||||
board2.Toggle(1, 2);
|
||||
board2.Toggle(2, 1);
|
||||
|
||||
double score = Summarizer.Score(board1, board2);
|
||||
|
||||
double tp = 1;
|
||||
double tn = 3 * 3 - 5;
|
||||
double total = 9;
|
||||
|
||||
Assert.That(score, Is.EqualTo((tp + tn) / total).Within(1e-8));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ScoreBySubGrid_AllCellsMatch_ReturnsOneForAllSubGrids()
|
||||
{
|
||||
var board1 = new Board(4, 4);
|
||||
var board2 = new Board(4, 4);
|
||||
|
||||
board1.Toggle(0, 0);
|
||||
board1.Toggle(1, 1);
|
||||
board1.Toggle(2, 2);
|
||||
board1.Toggle(3, 3);
|
||||
|
||||
board2.Toggle(0, 0);
|
||||
board2.Toggle(1, 1);
|
||||
board2.Toggle(2, 2);
|
||||
board2.Toggle(3, 3);
|
||||
|
||||
var scores = Summarizer.ScoreBySubGrid(board1, board2, 2);
|
||||
|
||||
Assert.That(scores[0], Is.EqualTo(1.0));
|
||||
Assert.That(scores[1], Is.EqualTo(1.0));
|
||||
Assert.That(scores[2], Is.EqualTo(1.0));
|
||||
Assert.That(scores[3], Is.EqualTo(1.0));
|
||||
}
|
||||
/// <summary>
|
||||
/// xx xx 02 03
|
||||
/// xx xx 12 13
|
||||
/// 20 21 xx xx
|
||||
/// 30 31 xx xx
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void ScoreBySubGrid_NoMatchingCells_ReturnsZeroForAllSubGrids()
|
||||
{
|
||||
var board1 = new Board(4, 4);
|
||||
var board2 = new Board(4, 4);
|
||||
|
||||
board1.Toggle(0, 0);
|
||||
board1.Toggle(1, 1);
|
||||
board1.Toggle(2, 2);
|
||||
board1.Toggle(3, 3);
|
||||
|
||||
board2.Toggle(0, 1);
|
||||
board2.Toggle(1, 0);
|
||||
board2.Toggle(2, 3);
|
||||
board2.Toggle(3, 2);
|
||||
|
||||
var scores = Summarizer.ScoreBySubGrid(board1, board2, 2);
|
||||
|
||||
Assert.That(scores[0], Is.EqualTo(0.0));
|
||||
Assert.That(scores[1], Is.EqualTo(1.0));
|
||||
Assert.That(scores[2], Is.EqualTo(1.0));
|
||||
Assert.That(scores[3], Is.EqualTo(0.0));
|
||||
}
|
||||
/// <summary>
|
||||
/// oo 01 02 03
|
||||
/// 10 xx xx 13
|
||||
/// xx 21 xx 23
|
||||
/// 30 31 32 oo
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void ScoreBySubGrid_PartialMatch_ReturnsCorrectScores()
|
||||
{
|
||||
var board1 = new Board(4, 4);
|
||||
var board2 = new Board(4, 4);
|
||||
|
||||
board1.Toggle(0, 0);
|
||||
board1.Toggle(1, 1);
|
||||
board1.Toggle(2, 2);
|
||||
board1.Toggle(3, 3);
|
||||
|
||||
board2.Toggle(0, 0);
|
||||
board2.Toggle(1, 2);
|
||||
board2.Toggle(3, 3);
|
||||
board2.Toggle(2, 0);
|
||||
|
||||
var scores = Summarizer.ScoreBySubGrid(board1, board2, 2);
|
||||
|
||||
Assert.That(scores[0], Is.EqualTo(0.75d));
|
||||
Assert.That(scores[1], Is.EqualTo(0.75d));
|
||||
Assert.That(scores[2], Is.EqualTo(0.75d));
|
||||
Assert.That(scores[3], Is.EqualTo(0.75d));
|
||||
}
|
||||
/// <summary>
|
||||
/// oo 01 02 03 04 05
|
||||
/// 10 oo 12 13 14 15
|
||||
/// 20 21 22 23 24 25
|
||||
/// 30 31 32 33 34 35
|
||||
/// 40 41 42 43 oo 45
|
||||
/// 50 51 52 53 54 55
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void ScoreBySubGrid_DifferentResolutions_CorrectSubGridCount()
|
||||
{
|
||||
var board1 = new Board(6, 6);
|
||||
var board2 = new Board(6, 6);
|
||||
|
||||
board1.Toggle(0, 0);
|
||||
board1.Toggle(1, 1);
|
||||
board1.Toggle(4, 4);
|
||||
|
||||
board2.Toggle(0, 0);
|
||||
board2.Toggle(1, 1);
|
||||
board2.Toggle(4, 4);
|
||||
|
||||
var scores2X2 = Summarizer.ScoreBySubGrid(board1, board2, 2);
|
||||
var scores3X3 = Summarizer.ScoreBySubGrid(board1, board2, 3);
|
||||
|
||||
Assert.That(scores2X2.Count, Is.EqualTo(9));
|
||||
Assert.That(scores3X3.Count, Is.EqualTo(4));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user