Пример #1
0
        public void PickUpItem_ThatIsUnique_ItShouldNotBePickedUpIfThePlayerAlreadyHasIt()
        {
            // Arrange
            var player = new RpgPlayer(_engine, _playerInventory, _specialEffect);

            player.PickUpItem(ItemBuilder.Build.WithId(100));
            Item uniqueItem = ItemBuilder.Build.WithId(100).IsUnique(true);
            // Act
            var result = player.PickUpItem(uniqueItem);

            // Assert
            result.Should().BeFalse();
        }
Пример #2
0
        public void PickUpItem_ThatIsUnique_ItShouldNotBePickedUpIfThePlayerAlreadyHasIt()
        {
            // Arrange
            var engine = Substitute.For <IGameEngine>();
            var player = new RpgPlayer(engine);

            player.PickUpItem(ItemBuilder.Build.WithId(100));

            Item uniqueItem = ItemBuilder.Build.WithId(100).IsUnique(true);

            // Act
            var result = player.PickUpItem(uniqueItem);

            // Assert
            result.Should().BeFalse();
        }
Пример #3
0
        public void PickUpItem_ThatIsRare_ASpecialEffectShouldBePlayed()
        {
            // Arrange
            var  player   = new RpgPlayer(_engine, _playerInventory, _specialEffect);
            Item rareItem = ItemBuilder.Build.IsRare(true);

            // Act
            player.PickUpItem(rareItem);
            // Assert
            _engine.Received().PlaySpecialEffect("cool_swirly_particles");
        }
Пример #4
0
        public void PickUpItem_ThatIsRareAndUnique_ASpecialEffectShouldBePlayed()
        {
            // Arrange
            var  player          = new RpgPlayer(_engine, _playerInventory, _specialEffect);
            Item iSRareAndUnique = ItemBuilder.Build.IsRare(true).IsUnique(true);

            // Act
            player.PickUpItem(iSRareAndUnique);
            // Assert
            _engine.Received().PlaySpecialEffect("blue_swirly");
        }
Пример #5
0
        public void PickUpItem_ThatIsTooHeavy_TheItemIsNotPickedUp()
        {
            // Arrange
            var  player    = new RpgPlayer(_engine, _playerInventory, _specialEffect);
            var  inventory = new PlayerInventory(_engine, MaximumCarryingCapacity);
            Item heavyItem = ItemBuilder.Build.WithWeight(inventory.CarryingCapacity + 1);
            // Act
            var result = player.PickUpItem(heavyItem);

            // Assert
            result.Should().BeFalse();
        }
Пример #6
0
        public void PickUpItem_ThatDoesMoreThan500Healing_AnExtraGreenSwirlyEffectOccurs()
        {
            // Arrange
            var  player  = new RpgPlayer(_engine, _playerInventory, _specialEffect);
            Item xPotion = ItemBuilder.Build.WithHeal(501);

            // Act
            player.PickUpItem(xPotion);
            player.CalculateHealth(xPotion);
            // Assert
            _engine.Received().PlaySpecialEffect("green_swirly");
        }
Пример #7
0
        public void PickUpItem_ThatDoesMoreThan500Healing_AnExtraGreenSwirlyEffectOccurs()
        {
            // Arrange
            var  engine  = Substitute.For <IGameEngine>();
            var  player  = new RpgPlayer(engine);
            Item xPotion = ItemBuilder.Build.WithHeal(501);

            // Act
            player.PickUpItem(xPotion);

            // Assert
            engine.Received().PlaySpecialEffect("green_swirly");
        }
Пример #8
0
        public void PickUpItem_ThatIsRare_ASpecialEffectShouldBePlayed()
        {
            // Arrange
            var  engine   = Substitute.For <IGameEngine>();
            var  player   = new RpgPlayer(engine);
            Item rareItem = ItemBuilder.Build.IsRare(true);

            // Act
            player.PickUpItem(rareItem);

            // Assert
            engine.Received().PlaySpecialEffect("cool_swirly_particles");
        }
Пример #9
0
        public void PickUpItem_ThatIsTooHeavy_TheItemIsNotPickedUp()
        {
            // Arrange
            var  engine    = Substitute.For <IGameEngine>();
            var  player    = new RpgPlayer(engine);
            Item heavyItem = ItemBuilder.Build.WithWeight(player.CarryingCapacity + 1);

            // Act
            var result = player.PickUpItem(heavyItem);

            // Assert
            result.Should().BeFalse();
        }
Пример #10
0
        public void PickUpItem_ThatGivesArmour_ThePlayersArmourValueShouldBeIncreased()
        {
            // Arrange
            var player = new RpgPlayer(_engine, _playerInventory, _specialEffect);

            player.Armour.Should().Be(0);
            Item armour = ItemBuilder.Build.WithArmour(100);

            // Act
            player.PickUpItem(armour);
            player.CalculateStats();
            // Assert
            player.Armour.Should().Be(100);
        }
Пример #11
0
        public void PickUpItem_ThatCanBePickedUp_ItIsAddedToTheInventory()
        {
            // Arrange
            var  engine = Substitute.For <IGameEngine>();
            var  player = new RpgPlayer(engine);
            Item item   = ItemBuilder.Build;

            player.Inventory.Should().BeEmpty();

            // Act
            player.PickUpItem(item);

            // Assert
            player.Inventory.Should().Contain(item);
        }
Пример #12
0
        public void PickUpItem_ThatCanBePickedUp_ItIsAddedToTheInventory()
        {
            // Arrange
            var  player = new RpgPlayer(_engine, _playerInventory, _specialEffect);
            Item item   = ItemBuilder.Build;

            //Act
            var items = _playerInventory.GetItems();

            // Assert
            Assert.Empty(items);
            // Act
            player.PickUpItem(item);
            // Assert
            Assert.True(_playerInventory.CheckIfItemExistsInInventory(item));
        }
Пример #13
0
        public void TakeDamage_WithMoreArmourThanDamage_NoDamageIsDealtAndParryEffectIsPlayed()
        {
            // Arrange
            var player = new RpgPlayer(_engine, _playerInventory, _specialEffect)
            {
                Health = 200
            };

            player.PickUpItem(ItemBuilder.Build.WithArmour(2000));
            player.CalculateStats();
            // Act
            player.TakeDamage(100);
            // Assert
            player.Health.Should().Be(200);
            _engine.Received().PlaySpecialEffect("parry");
        }
Пример #14
0
        public void PickUpItem_ThatGivesArmour_ThePlayersArmourValueShouldBeIncreased()
        {
            // Arrange
            var engine = Substitute.For <IGameEngine>();
            var player = new RpgPlayer(engine);

            player.Armour.Should().Be(0);

            Item armour = ItemBuilder.Build.WithArmour(100);

            // Act
            player.PickUpItem(armour);

            // Assert
            player.Armour.Should().Be(100);
        }
Пример #15
0
        public void TakeDamage_With50Armour_DamageIsReducedBy50AndParticleEffectIsShown()
        {
            // Arrange
            var player = new RpgPlayer(_engine, _playerInventory, _specialEffect)
            {
                Health = 200
            };

            player.PickUpItem(ItemBuilder.Build.WithArmour(50));
            player.CalculateStats();
            // Act
            player.TakeDamage(100);
            // Assert
            player.Health.Should().Be(150);
            _specialEffect.PlaySpecialEffect(null);
            _engine.Received().PlaySpecialEffect("lots_of_gore");
        }
Пример #16
0
        public void TakeDamage_WithMoreArmourThanDamage_NoDamageIsDealtAndParryEffectIsPlayed()
        {
            // Arrange
            var engine = Substitute.For <IGameEngine>();
            var player = new RpgPlayer(engine)
            {
                Health = 200
            };

            player.PickUpItem(ItemBuilder.Build.WithArmour(2000));

            // Act
            player.TakeDamage(100);

            // Assert
            player.Health.Should().Be(200);
            engine.Received().PlaySpecialEffect("parry");
        }
Пример #17
0
        public void TakeDamage_With50Armour_DamageIsReducedBy50AndParticleEffectIsShown()
        {
            // Arrange
            var engine = Substitute.For <IGameEngine>();
            var player = new RpgPlayer(engine)
            {
                Health = 200
            };

            player.PickUpItem(ItemBuilder.Build.WithArmour(50));

            // Act
            player.TakeDamage(100);

            // Assert
            player.Health.Should().Be(150);
            engine.Received().PlaySpecialEffect("lots_of_gore");
        }
Пример #18
0
        public void PickUpItem_ThatGivesHealth_HealthDoesNotExceedMaxHealth()
        {
            // Arrange
            var engine = Substitute.For <IGameEngine>();
            var player = new RpgPlayer(engine)
            {
                MaxHealth = 50,
                Health    = 10
            };

            Item healthPotion = ItemBuilder.Build.WithHeal(100);

            // Act
            player.PickUpItem(healthPotion);

            // Assert
            player.Inventory.Should().BeEmpty();
            player.Health.Should().Be(50);
        }
Пример #19
0
        public void PickUpItem_ThatGivesHealth_HealthDoesNotExceedMaxHealth()
        {
            // Arrange
            var player = new RpgPlayer(_engine, _playerInventory, _specialEffect)
            {
                MaxHealth = 50,
                Health    = 10
            };

            Item healthPotion = ItemBuilder.Build.WithHeal(100);

            // Act
            player.PickUpItem(healthPotion);
            player.CalculateHealth(healthPotion);
            //Act
            var items = _playerInventory.GetItems();

            // Assert
            Assert.Empty(items);
            player.Health.Should().Be(50);
        }