public void JewelOfLifeFailRemovesOption() { var contextProvider = new InMemoryPersistenceContextProvider(); var consumeHandler = new LifeJewelConsumeHandler(contextProvider); consumeHandler.Configuration.SuccessChance = 1; var player = this.GetPlayer(); var upgradeableItem = this.GetItemWithPossibleOption(); var upgradableItemSlot = (byte)(ItemSlot + 1); player.Inventory.AddItem(upgradableItemSlot, upgradeableItem); var jol = this.GetItem(); player.Inventory.AddItem(ItemSlot, jol); jol.Durability = 1; consumeHandler.ConsumeItem(player, ItemSlot, upgradableItemSlot); Assert.That(upgradeableItem.ItemOptions.Count, Is.EqualTo(1)); // then adding fails, so one option needs to be removed consumeHandler.Configuration.SuccessChance = 0; var jol2 = this.GetItem(); player.Inventory.AddItem(ItemSlot, jol2); jol2.Durability = 1; var jolConsumed = consumeHandler.ConsumeItem(player, ItemSlot, upgradableItemSlot); Assert.That(jolConsumed, Is.True); Assert.That(upgradeableItem.ItemOptions.Count, Is.EqualTo(0)); }
public void JewelOfLifeFailReducesOptionLevel() { var contextProvider = new InMemoryPersistenceContextProvider(); var consumeHandler = new LifeJewelConsumeHandler(contextProvider); consumeHandler.Configuration.SuccessChance = 1; var player = this.GetPlayer(); var upgradeableItem = this.GetItemWithPossibleOption(); var upgradableItemSlot = (byte)(ItemSlot + 1); player.Inventory.AddItem(upgradableItemSlot, upgradeableItem); // we're adding 3 options first for (int i = 0; i < 3; i++) { var item = this.GetItem(); player.Inventory.AddItem(ItemSlot, item); item.Durability = 1; consumeHandler.ConsumeItem(player, item, upgradeableItem); } // then adding fails, so one option needs to be removed consumeHandler.Configuration.SuccessChance = 0; var jol = this.GetItem(); player.Inventory.AddItem(ItemSlot, jol); jol.Durability = 1; var jolConsumed = consumeHandler.ConsumeItem(player, jol, upgradeableItem); Assert.That(jolConsumed, Is.True); Assert.That(upgradeableItem.ItemOptions.Count, Is.EqualTo(1)); Assert.That(upgradeableItem.ItemOptions.First().Level, Is.EqualTo(2)); }
public void JewelOfLife(int numberOfOptions, bool consumptionExpectation) { var contextProvider = new InMemoryPersistenceContextProvider(); var consumeHandler = new LifeJewelConsumeHandler(contextProvider); consumeHandler.Configuration.SuccessChance = 1; var player = this.GetPlayer(); var upgradeableItem = this.GetItemWithPossibleOption(); var upgradableItemSlot = (byte)(ItemSlot + 1); player.Inventory.AddItem(upgradableItemSlot, upgradeableItem); bool jolConsumed = false; for (int i = 0; i < numberOfOptions; i++) { var item = this.GetItem(); player.Inventory.AddItem(ItemSlot, item); item.Durability = 1; jolConsumed = consumeHandler.ConsumeItem(player, ItemSlot, upgradableItemSlot); } Assert.That(jolConsumed, Is.EqualTo(consumptionExpectation)); if (jolConsumed) { Assert.That(upgradeableItem.ItemOptions.Count, Is.EqualTo(1)); Assert.That(upgradeableItem.ItemOptions.First().Level, Is.EqualTo(numberOfOptions)); } }
public void JewelOfLife(int numberOfOptions, bool expectation) { var repositoryManager = new BaseRepositoryManager(); var consumeHandler = new LifeJewelConsumeHandler(repositoryManager); consumeHandler.Configuration.SuccessChance = 1; var player = this.GetPlayer(); var upgradeableItem = this.GetItemWithPossibleOption(); var upgradableItemSlot = (byte)(ItemSlot + 1); player.Inventory.AddItem(upgradableItemSlot, upgradeableItem); bool success = false; for (int i = 0; i < numberOfOptions; i++) { var item = this.GetItem(); player.Inventory.AddItem(ItemSlot, item); item.Durability = 1; success = consumeHandler.ConsumeItem(player, ItemSlot, upgradableItemSlot); } Assert.That(success, Is.EqualTo(expectation)); if (success) { Assert.That(upgradeableItem.ItemOptions.Count, Is.EqualTo(numberOfOptions)); } }