示例#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);
        }