public void EachAnimationWillDecreaseTheOffset() { var board = default(IBoard); var blocksFallingAnimation = default(BlocksFallingAnimation); "Given I have a standard board and a known list of coordinates".Context(() => { board = new BoardFactory().Create(); var boardCoordinates = new List<BoardCoordinate> { new BoardCoordinate(1, 2), new BoardCoordinate(2, 3) }; board[1, 2].YOffset = 200; board[2, 3].YOffset = 200; blocksFallingAnimation = new BlocksFallingAnimation(boardCoordinates, board); }); "When I call animate after 100 milliseconds has passed" .Do(() => blocksFallingAnimation.Animate(new GameTime { ElapsedGameTime = TimeSpan.FromMilliseconds(100) })); "Then the square at 1, 2 should have a yoffset of 200 - block fall speed * 100".Observation( () => board[1, 2].YOffset.ShouldEqual((float)(200 - GameConstants.Animation.BLOCK_FALL_SPEED * 100))); "Then the square at 2, 3 should have a yoffset of 200 - block fall speed * 100".Observation( () => board[1, 2].YOffset.ShouldEqual((float)(200 - GameConstants.Animation.BLOCK_FALL_SPEED * 100))); "Then 2 squares will have a y offset higher than 0".Observation( () => board.AllSquares().Count(sq => sq.YOffset != 0).ShouldEqual(2)); }
public void CanRaiseABoardChangedEventWhenAnimationHasFinished() { var blocksFallingAnimation = default(BlocksFallingAnimation); var result = default(IGameEvent); "Given I have a blocks falling animation" .Context(() => { blocksFallingAnimation = new BlocksFallingAnimation(new List<BoardCoordinate>(), A.Fake<IBoard>()); GameEvents.Dispatcher = new ActionEventDispatcher(e => result = e); }); "When I call on finished on the animation" .Do(() => blocksFallingAnimation.OnFinished()); "Then a game board changed event should be raised" .Observation(() => result.ShouldBeOfType<BoardChangedEvent>()); }
public void CanTellWhenTheAnimationShouldFinish() { var blocksFallingAnimation = default(BlocksFallingAnimation); "Given I have a standard board and a known list of coordinates".Context(() => { var board = new BoardFactory().Create(); var boardCoordinates = new List<BoardCoordinate> { new BoardCoordinate(1, 2), new BoardCoordinate(2, 3) }; board[1, 2].YOffset = 0; board[2, 3].YOffset = 0; blocksFallingAnimation = new BlocksFallingAnimation(boardCoordinates, board); }); "When I call animate when there are no more offsets to update" .Do(() => blocksFallingAnimation.Animate(new GameTime { ElapsedGameTime = TimeSpan.FromMilliseconds(100) })); "Then the animation should be finished" .Observation(() => blocksFallingAnimation.Finished().ShouldBeTrue()); }