示例#1
0
        public void ThrowArgumentNullException_WhenICombatStatisticsContainerParameterIsNull()
        {
            // Arrange
            var commandResolutionHandler = new OverriddenCanHandleCommandMethodMockCommandResolutionHandler();

            var command = new Mock <ICommand>();
            ICombatStatisticsContainer combatStatisticsContainer = null;

            // Act & Assert
            Assert.That(
                () => commandResolutionHandler.ResolveCommand(command.Object, combatStatisticsContainer),
                Throws.InstanceOf <ArgumentNullException>().With.Message.Contains(nameof(ICombatStatisticsContainer)));
        }
示例#2
0
        public void ThrowArgumentNullException_WhenICombatStatisticsContainerParameterIsNull()
        {
            // Arrange
            var commandResolutionHandler = new Mock <ICommandResolutionHandler>();
            ICombatStatisticsContainer combatStatisticsContainer = null;
            var combatStatisticsFinalizationStrategy             = new Mock <ICombatStatisticsFinalizationStrategy>();
            var combatStatisticsPersistentStorageStrategy        = new Mock <ICombatStatisticsPersistentStorageStrategy>();
            var liveCombatStatisticsCreationStrategy             = new Mock <ILiveCombatStatisticsCreationStrategy>();

            // Act & Assert
            Assert.That(
                () => new LogFileParserEngine(commandResolutionHandler.Object, combatStatisticsContainer, combatStatisticsFinalizationStrategy.Object, combatStatisticsPersistentStorageStrategy.Object, liveCombatStatisticsCreationStrategy.Object),
                Throws.InstanceOf <ArgumentNullException>().With.Message.Contains(nameof(ICombatStatisticsContainer)));
        }
示例#3
0
        public LogFileParserEngine(ICommandResolutionHandler commandResolutionHandler, ICombatStatisticsContainer combatStatisticsContainer, ICombatStatisticsFinalizationStrategy combatStatisticsFinalizationStrategy, ICombatStatisticsPersistentStorageStrategy combatStatisticsPersistentStorageStrategy, ILiveCombatStatisticsCreationStrategy liveCombatStatisticsCreationStrategy)
        {
            Guard.WhenArgument(commandResolutionHandler, nameof(ICommandResolutionHandler)).IsNull().Throw();
            Guard.WhenArgument(combatStatisticsContainer, nameof(ICombatStatisticsContainer)).IsNull().Throw();
            Guard.WhenArgument(combatStatisticsFinalizationStrategy, nameof(ICombatStatisticsFinalizationStrategy)).IsNull().Throw();
            Guard.WhenArgument(combatStatisticsPersistentStorageStrategy, nameof(ICombatStatisticsPersistentStorageStrategy)).IsNull().Throw();
            Guard.WhenArgument(liveCombatStatisticsCreationStrategy, nameof(ILiveCombatStatisticsCreationStrategy)).IsNull().Throw();

            this.commandResolutionHandler                  = commandResolutionHandler;
            this.combatStatisticsContainer                 = combatStatisticsContainer;
            this.combatStatisticsFinalizationStrategy      = combatStatisticsFinalizationStrategy;
            this.combatStatisticsPersistentStorageStrategy = combatStatisticsPersistentStorageStrategy;
            this.liveCombatStatisticsCreationStrategy      = liveCombatStatisticsCreationStrategy;

            this.combatStatisticsContainer.OnCurrentCombatChanged += this.OnCurrentCombatStatisticsChanged;
        }
示例#4
0
        protected virtual void AssignExitCombatTimestamp(ICommand command, ICombatStatisticsContainer combatStatisticsContainer)
        {
            if (combatStatisticsContainer.CurrentCombatStatistics == null)
            {
                return;
            }

            if (command.TimeStamp != default(DateTime))
            {
                combatStatisticsContainer.CurrentCombatStatistics.ExitCombatTime = command.TimeStamp;

                if (combatStatisticsContainer.CurrentCombatStatistics.EnterCombatTime == default(DateTime))
                {
                    combatStatisticsContainer.CurrentCombatStatistics.EnterCombatTime = command.TimeStamp;
                }
            }
        }
示例#5
0
        public ICombatStatisticsContainer ResolveCommand(ICommand command, ICombatStatisticsContainer combatStatisticsContainer)
        {
            Guard.WhenArgument(command, nameof(ICommand)).IsNull().Throw();
            Guard.WhenArgument(combatStatisticsContainer, nameof(ICombatStatisticsContainer)).IsNull().Throw();

            if (this.CanHandleCommand(command))
            {
                return(this.HandleCommand(command, combatStatisticsContainer));
            }
            else if (this.NextCommandResolutionHandler != null)
            {
                return(this.NextCommandResolutionHandler.ResolveCommand(command, combatStatisticsContainer));
            }
            else
            {
                return(combatStatisticsContainer);
            }
        }
 internal new ICombatStatisticsContainer HandleCommand(ICommand command, ICombatStatisticsContainer combatStatisticsContainer)
 {
     return(base.HandleCommand(command, combatStatisticsContainer));
 }
        protected override ICombatStatisticsContainer HandleCommand(ICommand command, ICombatStatisticsContainer combatStatisticsContainer)
        {
            if (combatStatisticsContainer.CurrentCombatStatistics != null)
            {
                combatStatisticsContainer.CurrentCombatStatistics.DamageDone += command.EffectEffectiveAmount;

                base.AssignExitCombatTimestamp(command, combatStatisticsContainer);
            }

            return(combatStatisticsContainer);
        }
示例#8
0
        protected override ICombatStatisticsContainer HandleCommand(ICommand command, ICombatStatisticsContainer combatStatisticsContainer)
        {
            this.HandleCommandMethodICommandParameter = command;
            this.HandleCommandMethodICombatStatisticsContainerParameter = combatStatisticsContainer;

            this.HandleCommandMethodIsCalled = true;

            return(this.HandleCommandMethodReturnValue);
        }
        protected override ICombatStatisticsContainer HandleCommand(ICommand command, ICombatStatisticsContainer combatStatisticsContainer)
        {
            base.AssignExitCombatTimestamp(command, combatStatisticsContainer);

            combatStatisticsContainer.CurrentCombatStatistics = this.combatStatisticsFactory.CreateCombatStatistics();
            combatStatisticsContainer.AllCombatStatistics.Add(combatStatisticsContainer.CurrentCombatStatistics);
            combatStatisticsContainer.CurrentCombatStatistics.CharacterName   = command.AbilityActivatorName;
            combatStatisticsContainer.CurrentCombatStatistics.EnterCombatTime = command.TimeStamp;

            return(combatStatisticsContainer);
        }
示例#10
0
 internal MockLogFileParserEngine(ICommandResolutionHandler commandResolutionHandler, ICombatStatisticsContainer combatStatisticsContainer, ICombatStatisticsFinalizationStrategy combatStatisticsFinalizationStrategy, ICombatStatisticsPersistentStorageStrategy combatStatisticsPersistentStorageStrategy, ILiveCombatStatisticsCreationStrategy liveCombatStatisticsCreationStrategy)
     : base(commandResolutionHandler, combatStatisticsContainer, combatStatisticsFinalizationStrategy, combatStatisticsPersistentStorageStrategy, liveCombatStatisticsCreationStrategy)
 {
 }
 protected override ICombatStatisticsContainer HandleCommand(ICommand command, ICombatStatisticsContainer combatStatisticsContainer)
 {
     throw new NotImplementedException();
 }
示例#12
0
        public void EnqueueCommand(ICommand command)
        {
            Guard.WhenArgument(command, nameof(ICommand)).IsNull().Throw();

            this.combatStatisticsContainer = this.commandResolutionHandler.ResolveCommand(command, this.combatStatisticsContainer);
        }
示例#13
0
        protected override ICombatStatisticsContainer HandleCommand(ICommand command, ICombatStatisticsContainer combatStatisticsContainer)
        {
            combatStatisticsContainer.CurrentCombatStatistics.ExitCombatTime = command.TimeStamp;
            combatStatisticsContainer.CurrentCombatStatistics.IsCompleted    = true;
            combatStatisticsContainer.CurrentCombatStatistics = null;

            base.AssignExitCombatTimestamp(command, combatStatisticsContainer);

            return(combatStatisticsContainer);
        }
示例#14
0
 protected abstract ICombatStatisticsContainer HandleCommand(ICommand command, ICombatStatisticsContainer combatStatisticsContainer);