init
This commit is contained in:
140
tests/GeneTests.cs
Normal file
140
tests/GeneTests.cs
Normal file
@@ -0,0 +1,140 @@
|
||||
using NUnit.Framework;
|
||||
namespace InverseOfLife.Test;
|
||||
|
||||
[TestFixture]
|
||||
public class GeneTests
|
||||
{
|
||||
[Test]
|
||||
public void Gene_Constructor_FromBoard_CorrectEncoding()
|
||||
{
|
||||
int resolution = 4;
|
||||
var board = new Board(8, 8);
|
||||
board.Toggle(1, 1);
|
||||
board.Toggle(5, 5);
|
||||
|
||||
var gene = new Gene(resolution, board);
|
||||
|
||||
int encodedBits = gene.RiboseSequence.Sum(b => CountSetBits(b));
|
||||
Assert.That(encodedBits, Is.EqualTo(2), "Encoded bits should match the number of live cells.");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Gene_Constructor_FromSequence_CorrectRestoration()
|
||||
{
|
||||
int resolution = 4;
|
||||
var expectedBoard = new Board(8, 8);
|
||||
expectedBoard.Toggle(1, 1);
|
||||
expectedBoard.Toggle(5, 5);
|
||||
var gene = new Gene(resolution, expectedBoard);
|
||||
|
||||
var restoredBoard = gene.Restore(8,8);
|
||||
|
||||
Assert.That(restoredBoard.Lives, Is.EquivalentTo(expectedBoard.Lives), "Restored board should match the original board.");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Gene_Constructor_EmptyBoard_RestoreEmptyBoard()
|
||||
{
|
||||
int resolution = 4;
|
||||
var board = new Board(8, 8);
|
||||
|
||||
var gene = new Gene(resolution, board);
|
||||
var restoredBoard = gene.Restore(8,8);
|
||||
|
||||
Assert.IsEmpty(restoredBoard.Lives, "Restored board should be empty for an empty input board.");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Gene_Restore_LargerBoard()
|
||||
{
|
||||
int resolution = 4;
|
||||
var board = new Board(16, 16);
|
||||
board.Toggle(2, 2);
|
||||
board.Toggle(10, 10);
|
||||
|
||||
var gene = new Gene(resolution, board);
|
||||
var restoredBoard = gene.Restore(16,16);
|
||||
|
||||
Assert.IsTrue(restoredBoard.Lives.Contains((2, 2)), "Cell (2, 2) should be alive.");
|
||||
Assert.IsTrue(restoredBoard.Lives.Contains((10, 10)), "Cell (10, 10) should be alive.");
|
||||
Assert.That(restoredBoard.Lives, Is.EquivalentTo(board.Lives), "Restored board should match the original board.");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Gene_Restore_BoundaryCells()
|
||||
{
|
||||
|
||||
int resolution = 4;
|
||||
var board = new Board(8, 8);
|
||||
board.Toggle(0, 0);
|
||||
board.Toggle(7, 7);
|
||||
|
||||
var gene = new Gene(resolution, board);
|
||||
var restoredBoard = gene.Restore(8,8);
|
||||
|
||||
Assert.IsTrue(restoredBoard.Lives.Contains((0, 0)), "Top-left corner cell should be alive.");
|
||||
Assert.IsTrue(restoredBoard.Lives.Contains((7, 7)), "Bottom-right corner cell should be alive.");
|
||||
Assert.That(restoredBoard.Lives, Is.EquivalentTo(board.Lives), "Restored board should match the original board.");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Gene_Restore_NonMultipleWidth()
|
||||
{
|
||||
int resolution = 4;
|
||||
int width = 10;
|
||||
int height = 8;
|
||||
var board = new Board(width, height);
|
||||
board.Toggle(9, 1);
|
||||
board.Toggle(1, 7);
|
||||
|
||||
var gene = new Gene(resolution, board);
|
||||
var restoredBoard = gene.Restore(width, height);
|
||||
|
||||
Assert.IsTrue(restoredBoard.Lives.Contains((9, 1)));
|
||||
Assert.IsTrue(restoredBoard.Lives.Contains((1, 7)));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Gene_Restore_NonMultipleHeight()
|
||||
{
|
||||
int resolution = 4;
|
||||
int width = 8;
|
||||
int height = 9;
|
||||
var board = new Board(width, height);
|
||||
board.Toggle(7, 8);
|
||||
board.Toggle(0, 0);
|
||||
|
||||
var gene = new Gene(resolution, board);
|
||||
var restoredBoard = gene.Restore(width, height);
|
||||
|
||||
Assert.IsTrue(restoredBoard.Lives.Contains((7, 8)));
|
||||
Assert.IsTrue(restoredBoard.Lives.Contains((0, 0)));
|
||||
}
|
||||
[Test]
|
||||
public void Gene_Restore_NonMultipleWidthAndHeight()
|
||||
{
|
||||
int resolution = 4;
|
||||
int width = 10;
|
||||
int height = 9;
|
||||
var board = new Board(width, height);
|
||||
board.Toggle(9, 8);
|
||||
board.Toggle(0, 0);
|
||||
|
||||
var gene = new Gene(resolution, board);
|
||||
var restoredBoard = gene.Restore(width, height);
|
||||
|
||||
Assert.IsTrue(restoredBoard.Lives.Contains((9, 8)));
|
||||
Assert.IsTrue(restoredBoard.Lives.Contains((0, 0)));
|
||||
}
|
||||
|
||||
private int CountSetBits(byte b)
|
||||
{
|
||||
int count = 0;
|
||||
while (b > 0)
|
||||
{
|
||||
count += b & 1;
|
||||
b >>= 1;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user