Пример #1
0
        public async Task AttackAsync_Reduces_HP_Of_Character()
        {
            //assemble
            var characterId = Guid.NewGuid();
            var character   = new Character("test-name", 2,
                                            new List <(CharacterClass, CharacterClassDetails)>
            {
                (CharacterClass.Barbarian, new CharacterClassDetails
                {
                    HitDiceValue = 2,
                    Level = 2
                })
            }, new CharacterStats(), 11)
            {
                Id = characterId
            };

            var repo = new Mock <IRepository <Character> >();

            repo.Setup(r => r.GetAsync(It.IsAny <Guid>()))
            .ReturnsAsync(character);
            var service = new CharacterService(repo.Object, new TestHPGenerator());

            //act
            await service.AttackAsync(characterId, 10, DamageType.Acid);

            //assert
            Assert.AreEqual(character.CurrentHp, 1);
        }
Пример #2
0
        public async Task AttackAsync_Damage_Is_Zero_With_Character_Imune()
        {
            //assemble
            var characterId = Guid.NewGuid();
            var character   = new Character("test-name", 2,
                                            new List <(CharacterClass, CharacterClassDetails)>
            {
                (CharacterClass.Barbarian, new CharacterClassDetails
                {
                    HitDiceValue = 2,
                    Level = 2
                })
            }, new CharacterStats(), 10)
            {
                Id = characterId
            };

            character.AddModifier(new ResistModifier(DamageType.Acid, ResistType.Immune, DateTime.Now));

            var repo = new Mock <IRepository <Character> >();

            repo.Setup(r => r.GetAsync(It.IsAny <Guid>()))
            .ReturnsAsync(character);
            var service = new CharacterService(repo.Object, null);

            //act
            await service.AttackAsync(characterId, 10, DamageType.Acid);

            //assert
            Assert.IsTrue(character.CurrentHp == 10);
        }
    }