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 CollectsSingleStack() { var baseGrid = MockGrid("Base"); var topGrid = MockGrid("Top"); var pistons = MockPistonsBetween(baseGrid, topGrid, 10).ToList(); var stacks = new PistonTopology().GetPistonStacks(pistons); Assert.That(stacks, Has.Length.EqualTo(1)); var stack = stacks.Single(); Assert.That(stack.Total, Is.EqualTo(10)); Assert.That(stack.BaseGrid, Is.EqualTo(baseGrid)); Assert.That(stack.TopGrid, Is.EqualTo(topGrid)); }
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)); }