Beispiel #1
0
        public async Task <Result> Handle(CreateDamageCodeCommand request, CancellationToken cancellationToken)
        {
            Result result;
            var    id = _identifierProvider.Generate();

            var damageCodeToCreate = new DamageCode(id, request.Code, request.Name, bool.Parse(request.DamagedQuantityRequired), request.Source);

            damageCodeToCreate.Version = _versionProvider.Generate();

            try
            {
                await _damageCodeWriteRepository.CreateAsync(damageCodeToCreate);

                result = Result.Ok(id, damageCodeToCreate.Version);
            }
            catch (UniqueKeyException)
            {
                result = Result.Fail(new System.Collections.Generic.List <Failure>()
                {
                    new HandlerFault()
                    {
                        Code    = HandlerFaultCode.Conflict.Name,
                        Message = HandlerFailures.CodeSourceConflict,
                        Target  = "code-source"
                    }
                }
                                     );
            }
            catch
            {
                result = Result.Fail(CustomFailures.CreateDamageCodeFailure);
            }

            return(result);
        }
Beispiel #2
0
        public void CreateDamageCodeShouldSucceed()
        {
            // Arrange
            Guid   id     = Guid.NewGuid();
            string name   = "DamageCodeTest";
            string source = "Belgium";
            bool   damagedQuantityRequired = true;
            string code = "code";
            // Act
            var damageCode = new DamageCode(id, code, name, damagedQuantityRequired, source);

            // Assert
            damageCode.Name.Should().Be(name);
        }
        public async Task CreateShouldSucceedWhenNameIsSame()
        {
            //Arrange
            var name = "TestName";

            var DamageCode = new DamageCode(Guid.NewGuid(), "TestCode1", name, true, "TestSource1");
            await _repository.CreateAsync(DamageCode);

            var DamageCode2 = new DamageCode(Guid.NewGuid(), "TestCode2", name, true, "TestSource2");
            //Act
            Action act = () => { _repository.CreateAsync(DamageCode2).GetAwaiter().GetResult(); };

            //Assert
            act.Should().NotThrow();
        }
Beispiel #4
0
    // Start is called before the first frame update
    void Start()
    {
        // --- Number of Attacker Successes --- //
        // Calculate the average number of dice that come up a success.
        float chanceForOneDieToBeSuccessful    = GetChanceForSingleDieToBeatTargetNumber(GunTargetNumber);
        float chanceForOneSuccess              = 1 - Mathf.Pow(((1 - chanceForOneDieToBeSuccessful)), GunSkillDice);
        float averageNumberOfAttackerSuccesses = chanceForOneDieToBeSuccessful * GunSkillDice;

        Debug.Log("Attacker Chance to Get at least 1 Success against a Target Number of " + GunTargetNumber + ": " + chanceForOneSuccess);
        Debug.Log("Average Number of Attacker Successes against a Target Number of " + GunTargetNumber + ": " + averageNumberOfAttackerSuccesses);


        // --- Number of Defender Successes --- //
        // Subtract ballistic armor from power.
        int   defenderTargetNumber             = GunPower - TargetBallisticArmor;
        float averageNumberOfDefenderSuccesses = GetChanceForSingleDieToBeatTargetNumber(defenderTargetNumber) * TargetBodyDice;

        Debug.Log("Average Number of Defender Successes against a Target Number of " + defenderTargetNumber + " (GunPower minus Armor): " + averageNumberOfDefenderSuccesses);


        // --- Calculate Damage Results --- //
        float averageSuccesses = averageNumberOfAttackerSuccesses - averageNumberOfDefenderSuccesses;

        Debug.Log("Average Successes Total (attacker == positive): " + averageSuccesses);

        DamageCode finalDamageCode = GunDamageCode;

        while (Mathf.Abs(averageSuccesses) > 2)
        {
            // Stage damage up
            if (averageSuccesses > 0)
            {
                finalDamageCode   = (finalDamageCode == DamageCode.D ? DamageCode.D : finalDamageCode + 1);
                averageSuccesses -= 2;
            }
            // Stage damage down.
            else
            {
                finalDamageCode   = (finalDamageCode == DamageCode.NoDamage ? DamageCode.NoDamage : finalDamageCode - 1);
                averageSuccesses += 2;
            }
        }

        Debug.Log("Average Damage on Hit: " + finalDamageCode);
    }
        public async Task CreateShouldFailWhenCodeAndSourceSame()
        {
            //Arrange
            var code   = "TestCode";
            var name   = "TestName";
            var source = "TestSource";
            var damagedQuantityRequired = true;

            var damageCode = new DamageCode(Guid.NewGuid(), code, name, damagedQuantityRequired, source);
            await _repository.CreateAsync(damageCode);

            var damageCode2 = new DamageCode(Guid.NewGuid(), code, name, damagedQuantityRequired, source);
            //Act
            Action act = () => { _repository.CreateAsync(damageCode2).GetAwaiter().GetResult(); };

            //Assert
            act.Should().Throw <UniqueKeyException>();
        }
            public static DamageCode CreateDamageCode(Guid id, string code, string name, bool DamagedQuantityRequired, string source)
            {
                // prepare
                var writeRepository = new DamageCodeWriteRepository(new DataContext(new PersistenceConfiguration(RepositoryTestsHelper.ConnectionString)));
                var readRepository  = new DamageCodeReadRepository(new DataContext(new PersistenceConfiguration(RepositoryTestsHelper.ConnectionString)));

                // create
                var damageCode = new DamageCode(id, code, name, DamagedQuantityRequired, source);
                IEnumerable <DamageCode> damageCodes = new List <DamageCode>()
                {
                    damageCode
                };

                foreach (var item in damageCodes)
                {
                    writeRepository.CreateAsync(item).GetAwaiter().GetResult();
                }

                // result
                var result = readRepository.GetAsync(damageCode.Id).Result;

                return(result);
            }
        public async Task CreateShouldSucceed()
        {
            //Arrange
            var code   = "TestCode";
            var name   = "TestName";
            var source = "TestSource";
            var damagedQuantityRequired = true;

            var damageCode = new DamageCode(Guid.NewGuid(), code, name, damagedQuantityRequired, source);

            //Act
            await _repository.CreateAsync(damageCode);

            //Asssert
            var data = RepositoryHelper.ForDamageCode.GetDamageCodes();

            data.Should().HaveCount(1);
            var result = data.First();

            result.Name.Should().Be(name);
            result.Code.Should().Be(code);
            result.Source.Should().Be(source);
        }