public void CollectsTwoSeparateStacks() { var baseGrid = MockGrid("Base"); var topGrid = MockGrid("Top"); var pistons = MockPistonsBetween(baseGrid, topGrid, 10) .Concat(MockPistonsBetween(baseGrid, topGrid, 8)) .ToList(); var stacks = new PistonTopology().GetPistonStacks(pistons); Assert.That(stacks, Has.Length.EqualTo(2)); Assert.That(stacks.Select(s => s.Total), Is.EquivalentTo(new [] { 10, 8 })); }
public void CollectsThreeStacksSupportingSingleStack() { var baseGrid = MockGrid("Base"); var middleGrid = MockGrid("Middle"); var topGrid = MockGrid("Top"); var pistons = MockPistonsBetween(baseGrid, middleGrid, 10) .Union(MockPistonsBetween(baseGrid, middleGrid, 10)) .Union(MockPistonsBetween(baseGrid, middleGrid, 10)) .Union(MockPistonsBetween(middleGrid, topGrid, 10)) .ToList(); var stacks = new PistonTopology().GetPistonStacks(pistons); Assert.That(stacks, Has.Length.EqualTo(4)); Assert.That(stacks.Select(s => s.Total), Is.EquivalentTo(new[] { 10, 10, 10, 10 })); Assert.That(stacks.Where(s => s.BaseGrid == baseGrid).ToArray(), Has.Length.EqualTo(3)); Assert.That(stacks.Where(s => s.BaseGrid == middleGrid).ToArray(), Has.Length.EqualTo(1)); }