Initial commit
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using GameOfLife;
|
||||
using GameOfLife.Entities;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace GameOfLifeTests
|
||||
{
|
||||
public class VariationsTests
|
||||
{
|
||||
private readonly PatternTestData _patternTestData = new PatternTestData();
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CornerTest()
|
||||
{
|
||||
var pattern = new Projections(_patternTestData.CornerPattern);
|
||||
Assert.AreEqual(4, pattern.Count);
|
||||
|
||||
var offsetCell = new Cell(2,2);
|
||||
foreach (var variation in pattern)
|
||||
{
|
||||
PatternTestData.ConsoleWrite(variation);
|
||||
PatternTestData.ConsoleWriteGrid(variation.Offset(offsetCell));
|
||||
Console.WriteLine();
|
||||
PatternTestData.ConsoleWriteGrid(variation.GetBoundary.Offset(offsetCell));
|
||||
Console.WriteLine("-----");
|
||||
Console.WriteLine();
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SquareTest()
|
||||
{
|
||||
var pattern = new Pattern(_patternTestData.SquarePattern);
|
||||
PatternTestData.ConsoleWrite(pattern);
|
||||
Assert.AreEqual(4, pattern.Count);
|
||||
|
||||
foreach (var variation in new Projections(pattern))
|
||||
{
|
||||
PatternTestData.ConsoleWriteGrid(variation);
|
||||
|
||||
Console.WriteLine();
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GliderTest()
|
||||
{
|
||||
PatternTestData.ConsoleWrite(_patternTestData.GliderPattern);
|
||||
var variations = new Projections(_patternTestData.GliderPattern);
|
||||
|
||||
foreach (var variation in variations)
|
||||
{
|
||||
PatternTestData.ConsoleWriteGrid(variation.Offset(new Cell(2,0)));
|
||||
|
||||
Console.WriteLine();
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void FindPattern_Corner_Tests()
|
||||
{
|
||||
var gol = new LifeArray(_patternTestData.CornerPattern);
|
||||
|
||||
var results = gol.LivingCells.ToPattern().FindPattern(_patternTestData.CornerPattern).ToArray();
|
||||
Assert.AreEqual(1, results.Length);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void FindPattern_Corner_Square_Tests()
|
||||
{
|
||||
var gol = new LifeArray(_patternTestData.CornerPattern);
|
||||
|
||||
var results = gol.LivingCells.ToPattern().FindPattern(_patternTestData.SquarePattern).ToArray();
|
||||
Assert.AreEqual(0, results.Length);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void FindPattern_Corner_Rotated_Tests()
|
||||
{
|
||||
var gol = new LifeHashSet(_patternTestData.CornerPattern.Rotate(2).Normalize());
|
||||
|
||||
var results = gol.LivingCells.ToPattern().FindPattern(_patternTestData.CornerPattern).ToArray();
|
||||
Assert.AreEqual(1, results.Length);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void FindPattern_TwoCorners_Tests()
|
||||
{
|
||||
var offsetCorner = _patternTestData.CornerPattern.Offset(new Cell(3,0));
|
||||
var pattern = _patternTestData.CornerPattern + offsetCorner;
|
||||
//PatternTestData.ConsoleWriteGrid(pattern, 10);
|
||||
|
||||
var gol = new LifeHashSet(pattern);
|
||||
|
||||
var results = gol.LivingCellPattern.FindPattern(_patternTestData.CornerPattern).ToArray();
|
||||
Assert.AreEqual(2, results.Length);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void FindPattern_Overlapping_Empty_Space_Tests()
|
||||
{
|
||||
var offsetCorner = _patternTestData.CornerPattern.Offset(new Cell(2, 0));
|
||||
var pattern = _patternTestData.CornerPattern + offsetCorner;
|
||||
|
||||
var gol = new LifeHashSet(pattern);
|
||||
|
||||
var results = gol.LivingCells.ToPattern().FindPattern(_patternTestData.CornerPattern).ToArray();
|
||||
Assert.AreEqual(0, results.Length);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void FindPattern_Corner_and_Square_Tests()
|
||||
{
|
||||
var offsetCorner = _patternTestData.SquarePattern.Offset(new Cell(4, 0));
|
||||
var pattern = _patternTestData.CornerPattern + offsetCorner;
|
||||
PatternTestData.ConsoleWriteGrid(pattern);
|
||||
|
||||
var gol = new LifeHashSet(pattern);
|
||||
|
||||
var cornerResults = gol.LivingCells.ToPattern().FindPattern(_patternTestData.CornerPattern).ToArray();
|
||||
Assert.AreEqual(1, cornerResults.Length);
|
||||
|
||||
var squareResults = gol.LivingCells.ToPattern().FindPattern(_patternTestData.SquarePattern).ToArray();
|
||||
Assert.AreEqual(1, squareResults.Length);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void FindOscillations_Tests()
|
||||
{
|
||||
var oscillations= new LifeHashSet(_patternTestData.GliderApgPattern).FindOscillation();
|
||||
Assert.Greater(oscillations.Count(), 1);
|
||||
Console.WriteLine(oscillations.Count());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user