public void BothTimersShouldFreezeWhenOneReachesZero() { var gameTime = GetRandomTimeMilliseconds(100, 200); var clock = new NoDelayChessClock(gameTime); var waitTime = GetRandomTimeMilliseconds(40, 60); clock.PressButton(Player.TWO); Thread.Sleep(waitTime); clock.PressButton(Player.ONE); Thread.Sleep(gameTime + _errorMargin); Assert.IsTrue(IsWithinErrorMargin(gameTime - waitTime, clock.GetRemainingTime(Player.ONE))); Assert.AreEqual(TimeSpan.Zero, clock.GetRemainingTime(Player.TWO)); }
public void PressingTheSameButtonTwiceInARowHasNoEffect() { var gameTime = GetRandomTimeMinutes(1, 30); var clock = new NoDelayChessClock(gameTime); var waitTime = GetRandomTimeMilliseconds(100, 200); clock.PressButton(Player.TWO); Thread.Sleep(waitTime); clock.PressButton(Player.TWO); Thread.Sleep(waitTime); var playerOneTimeLeft = clock.GetRemainingTime(Player.ONE); Assert.AreEqual(gameTime, clock.GetRemainingTime(Player.TWO)); Assert.IsTrue(IsWithinErrorMargin(gameTime - waitTime - waitTime, playerOneTimeLeft)); }
public void ClockCanBeReset() { var gameTime = GetRandomTimeMinutes(1, 30); var clock = new NoDelayChessClock(gameTime); var waitTime = GetRandomTimeMilliseconds(100, 200); clock.PressButton(Player.TWO); Thread.Sleep(waitTime); clock.PressButton(Player.ONE); Thread.Sleep(waitTime); clock.Reset(); Thread.Sleep(waitTime); Assert.AreEqual(gameTime, clock.GetRemainingTime(Player.ONE)); Assert.AreEqual(gameTime, clock.GetRemainingTime(Player.TWO)); }
public void EitherPlayerCanStartTheClock() { var gameTime = GetRandomTimeMinutes(1, 30); var clock1 = new NoDelayChessClock(gameTime); var clock2 = new NoDelayChessClock(gameTime); var waitTime = GetRandomTimeMilliseconds(100, 200); clock1.PressButton(Player.ONE); clock2.PressButton(Player.TWO); Thread.Sleep(waitTime); var playerOneTimeLeft = clock2.GetRemainingTime(Player.ONE); var playerTwoTimeLeft = clock1.GetRemainingTime(Player.TWO); Assert.AreEqual(gameTime, clock1.GetRemainingTime(Player.ONE)); Assert.IsTrue(IsWithinErrorMargin(gameTime - waitTime, playerTwoTimeLeft)); Assert.AreEqual(gameTime, clock2.GetRemainingTime(Player.TWO)); Assert.IsTrue(IsWithinErrorMargin(gameTime - waitTime, playerOneTimeLeft)); }
public void PressingPlayerButtonsShouldHaveNoEffectAfterTimeUp() { var gameTime = GetRandomTimeMilliseconds(100, 200); var clock = new NoDelayChessClock(gameTime); var waitTime = GetRandomTimeMilliseconds(40, 60); clock.PressButton(Player.TWO); Thread.Sleep(waitTime); clock.PressButton(Player.ONE); Thread.Sleep(gameTime + _errorMargin); clock.PressButton(Player.TWO); Thread.Sleep(waitTime); clock.PressButton(Player.ONE); Thread.Sleep(waitTime); Assert.IsTrue(IsWithinErrorMargin(gameTime - waitTime, clock.GetRemainingTime(Player.ONE))); Assert.AreEqual(TimeSpan.Zero, clock.GetRemainingTime(Player.TWO)); }
public void ClockShouldCountdownAsExpected() { var gameTime = GetRandomTimeMinutes(1, 30); var clock = new NoDelayChessClock(gameTime); var playerOneWaitTime = GetRandomTimeMilliseconds(100, 200); var playerTwoWaitTime = GetRandomTimeMilliseconds(100, 200); clock.PressButton(Player.TWO); Thread.Sleep(playerOneWaitTime); clock.PressButton(Player.ONE); var playerOneTimeLeft = clock.GetRemainingTime(Player.ONE); Thread.Sleep(playerTwoWaitTime); clock.PressButton(Player.TWO); var playerTwoTimeLeft = clock.GetRemainingTime(Player.TWO); Assert.IsTrue(IsWithinErrorMargin(gameTime - playerOneWaitTime, playerOneTimeLeft)); Assert.IsTrue(IsWithinErrorMargin(gameTime - playerTwoWaitTime, playerTwoTimeLeft)); }
public void ClockCanBePausedAndResumed() { var gameTime = GetRandomTimeMinutes(4, 5); var clock = new NoDelayChessClock(gameTime); var waitTime = GetRandomTimeMilliseconds(100, 200); clock.PressButton(Player.TWO); Thread.Sleep(waitTime); clock.Pause(); var playerOnePausedTime = clock.GetRemainingTime(Player.ONE); var playerTwoPausedTime = clock.GetRemainingTime(Player.TWO); clock.Resume(); Thread.Sleep(waitTime); Assert.IsTrue(IsWithinErrorMargin(gameTime - waitTime, playerOnePausedTime)); Assert.IsTrue(IsWithinErrorMargin(gameTime - waitTime - waitTime, clock.GetRemainingTime(Player.ONE))); Assert.AreEqual(gameTime, playerTwoPausedTime); Assert.AreEqual(gameTime, clock.GetRemainingTime(Player.TWO)); }