public void AssignCorrectInstance_ToICombatStatisticsContainerParameterCurrentComabtStatisticsProperty() { // Arrange var combatStatisticsFactory = new Mock <ICombatStatisticsFactory>(); var enterCombatCommandResolutionHandler = new MockEnterCombatCommandResolutionHandler(combatStatisticsFactory.Object); var command = new Mock <ICommand>(); var combatStatisticsContainer = new Mock <ICombatStatisticsContainer>(); ICombatStatistics actualCombatStatisticsInstance = null; var currentCombatStatistics = new Mock <ICombatStatistics>(); var allCombatStatistics = new Mock <ICollection <ICombatStatistics> >(); combatStatisticsContainer.SetupGet(c => c.AllCombatStatistics).Returns(allCombatStatistics.Object); combatStatisticsContainer.SetupGet(c => c.CurrentCombatStatistics).Returns(currentCombatStatistics.Object); combatStatisticsContainer.SetupSet(c => c.CurrentCombatStatistics = It.IsAny <ICombatStatistics>()).Callback <ICombatStatistics>((combatStats) => actualCombatStatisticsInstance = combatStats); var combatStatistics = new Mock <ICombatStatistics>(); combatStatisticsFactory.Setup(f => f.CreateCombatStatistics()).Returns(combatStatistics.Object); var expectedComabtStatisticsInstance = combatStatistics.Object; // Act enterCombatCommandResolutionHandler.HandleCommand(command.Object, combatStatisticsContainer.Object); // Assert Assert.That(actualCombatStatisticsInstance, Is.SameAs(expectedComabtStatisticsInstance)); }
protected virtual void CurrentCombatChanged(ICombatStatistics combatStatistics) { Guard.WhenArgument(combatStatistics, nameof(ICombatStatistics)).IsNull().Throw(); var currentCombatStatisticsChangedEventArgs = this.currentCombatStatisticsChangedEventArgsFactory.CreateCurrentCombatStatisticsChangedEventArgs(combatStatistics); this.OnCurrentCombatChanged?.Invoke(this, currentCombatStatisticsChangedEventArgs); }
private TimeSpan GetCombatDuration(ICombatStatistics combatStatistics) { if (combatStatistics.EnterCombatTime > combatStatistics.ExitCombatTime) { combatStatistics.ExitCombatTime = combatStatistics.ExitCombatTime.AddDays(1); } return(combatStatistics.ExitCombatTime - combatStatistics.EnterCombatTime); }
public void ThrowArgumentNullException_WhenICombatStatisticsParameterIsNull() { // Arrange ICombatStatistics combatStatistics = null; // Act & Assert Assert.That( () => new CurrentCombatStatisticsChangedEventArgs(combatStatistics), Throws.InstanceOf <ArgumentNullException>().With.Message.Contains(nameof(ICombatStatistics))); }
private IFinalizedCombatStatistics GetHealingDoneAndHealingDonePerSecond(ICombatStatistics combatStatistics, IFinalizedCombatStatistics finalizedCombatStatistics) { var healingDone = combatStatistics.HealingDone; var healingDonePerSecond = healingDone / finalizedCombatStatistics.CombatDurationInSeconds; finalizedCombatStatistics.HealingDone = healingDone; finalizedCombatStatistics.HealingDonePerSecond = healingDonePerSecond; return(finalizedCombatStatistics); }
private IFinalizedCombatStatistics GetDamageTakenAndDamageTakenPerSecond(ICombatStatistics combatStatistics, IFinalizedCombatStatistics finalizedCombatStatistics) { var damageTaken = combatStatistics.DamageTaken; var damageTakenPerSecond = damageTaken / finalizedCombatStatistics.CombatDurationInSeconds; finalizedCombatStatistics.DamageTaken = damageTaken; finalizedCombatStatistics.DamageTakenPerSecond = damageTakenPerSecond; return(finalizedCombatStatistics); }
private IFinalizedCombatStatistics GetDamageDoneAndDamageDonePerSecond(ICombatStatistics combatStatistics, IFinalizedCombatStatistics finalizedCombatStatistics) { var damageDone = combatStatistics.DamageDone; var damageDonePerSecond = damageDone / finalizedCombatStatistics.CombatDurationInSeconds; finalizedCombatStatistics.DamageDone = damageDone; finalizedCombatStatistics.DamageDonePerSecond = damageDonePerSecond; return(finalizedCombatStatistics); }
public void ThrowArgumentNullException_WhenICombatStatisticsParameterIsNull() { // Arrange var finalizedCombatStatisticsFactory = new Mock <IFinalizedCombatStatisticsFactory>(); var combatStatisticsFinalizationStrategy = new CombatStatisticsFinalizationStrategy(finalizedCombatStatisticsFactory.Object); ICombatStatistics combatStatistics = null; // Act & Assert Assert.That( () => combatStatisticsFinalizationStrategy.FinalizeCombatStatistics(combatStatistics), Throws.InstanceOf <ArgumentNullException>().With.Message.Contains(nameof(ICombatStatistics))); }
public IFinalizedCombatStatistics FinalizeCombatStatistics(ICombatStatistics combatStatistics) { Guard.WhenArgument(combatStatistics, nameof(ICombatStatistics)).IsNull().Throw(); var finalizedCombatStatistics = this.finalizedCombatStatisticsFactory.CreateFinalizedCombatStatistics(); finalizedCombatStatistics.CharacterName = combatStatistics.CharacterName; finalizedCombatStatistics.CombatDurationInSeconds = this.GetCombatDurationInSeconds(combatStatistics); finalizedCombatStatistics = this.GetDamageDoneAndDamageDonePerSecond(combatStatistics, finalizedCombatStatistics); finalizedCombatStatistics = this.GetDamageTakenAndDamageTakenPerSecond(combatStatistics, finalizedCombatStatistics); finalizedCombatStatistics = this.GetHealingDoneAndHealingDonePerSecond(combatStatistics, finalizedCombatStatistics); return(finalizedCombatStatistics); }
public ILiveCombatStatistics CreateLiveCombatStatistics(ICombatStatistics combatStatistics) { if (combatStatistics == null) { return(null); } var liveCombatStatistics = this.liveCombatStatisticsFactory.CreateLiveCombatStatistics(); liveCombatStatistics.CharacterName = combatStatistics.CharacterName; liveCombatStatistics.CombatDuration = this.GetCombatDuration(combatStatistics); liveCombatStatistics.DamageDonePerSecond = this.GetDamageDonePerSecond(liveCombatStatistics, combatStatistics); liveCombatStatistics.HealingDonePerSecond = this.GetHealingDonePerSecond(liveCombatStatistics, combatStatistics); return(liveCombatStatistics); }
public ExitCombatEventArgs(ICombatStatistics combatStatistics) { Guard.WhenArgument(combatStatistics, nameof(ICombatStatistics)).IsNull().Throw(); this.CombatStatistics = combatStatistics; }
private double GetHealingDonePerSecond(ILiveCombatStatistics liveCombatStatistics, ICombatStatistics combatStatistics) { return(combatStatistics.HealingDone / liveCombatStatistics.CombatDuration.TotalSeconds); }
private double GetCombatDurationInSeconds(ICombatStatistics combatStatistics) { var timeSpan = combatStatistics.ExitCombatTime - combatStatistics.EnterCombatTime; return(timeSpan.TotalSeconds); }