public void InfiniteRecursionTestTest() { Mock <ICraftingStep> mockChildStep = new Mock <ICraftingStep>(); List <ICraftingStep> craftingSteps = new List <ICraftingStep>(); WhileCraftingStep whileStep = new WhileCraftingStep(); whileStep.Children.Add(mockChildStep.Object); whileStep.Condition = GetTestCondition(); craftingSteps.Add(whileStep); EndCraftingStep endCrafting = new EndCraftingStep(); craftingSteps.Add(endCrafting); Equipment equipment = GetTestEquipment(true); AffixManager affixManager = CreateAffixManager(equipment.ItemBase); CancellationToken token = new CancellationToken(false); mockChildStep.Setup(x => x.Craft(It.IsAny <Equipment>(), It.IsAny <AffixManager>())) .Returns(new Dictionary <string, int>()); mockChildStep.Setup(x => x.ShouldVisitChildren(It.IsAny <Equipment>(), It.IsAny <int>())).Returns(false); _craftManager.Craft(craftingSteps, equipment, affixManager, token, _progressManager); mockChildStep.Verify(x => x.Craft(It.IsAny <Equipment>(), It.IsAny <AffixManager>()), Times.Exactly(4)); Assert.IsTrue(equipment.Completed); }
public void WhileCraftingStepFalseConditionTest() { Mock <ICraftingStep> mockChildStep = new Mock <ICraftingStep>(); List <ICraftingStep> craftingSteps = new List <ICraftingStep>(); WhileCraftingStep whileStep = new WhileCraftingStep(); whileStep.Children.Add(mockChildStep.Object); whileStep.Condition = GetTestCondition(); craftingSteps.Add(whileStep); EndCraftingStep endCrafting = new EndCraftingStep(); craftingSteps.Add(endCrafting); Equipment equipment = GetTestEquipment(false); AffixManager affixManager = CreateAffixManager(equipment.ItemBase); CancellationToken token = new CancellationToken(false); _craftManager.Craft(craftingSteps, equipment, affixManager, token, _progressManager); mockChildStep.Verify(x => x.Craft(It.IsAny <Equipment>(), It.IsAny <AffixManager>()), Times.Never); Assert.IsTrue(equipment.Completed); }
public void WhileCraftingStepRepeatedlyCombinesStatusTest() { List <ICraftingStep> craftingSteps = new List <ICraftingStep>(); WhileCraftingStep whileStep = new WhileCraftingStep(); craftingSteps.Add(whileStep); AddOrb(whileStep.Children, new RegalOrb(_random.Object)); AddOrb(whileStep.Children, new TransmutationOrb(_random.Object)); StatusMetadata metadata = _statusManager.Evaluate(craftingSteps); Assert.IsTrue(metadata.CurrentStatus.Rarity == (EquipmentRarity.Normal | EquipmentRarity.Magic | EquipmentRarity.Rare)); }
public void WhileCraftingStepFourTimesConditionTest() { Mock <ICraftingStep> mockChildStep = new Mock <ICraftingStep>(); List <ICraftingStep> craftingSteps = new List <ICraftingStep>(); WhileCraftingStep whileStep = new WhileCraftingStep(); whileStep.Children.Add(mockChildStep.Object); whileStep.Condition = getTestCondition(); craftingSteps.Add(whileStep); EndCraftingStep endCrafting = new EndCraftingStep(); craftingSteps.Add(endCrafting); Equipment equipment = getTestEquipment(true); AffixManager affixManager = CreateAffixManager(equipment.ItemBase); CancellationToken token = new CancellationToken(false); int calls = 0; mockChildStep.Setup(x => x.Craft(It.IsAny <Equipment>(), It.IsAny <AffixManager>())).Callback(() => { if (calls >= 3) { updateEquipment(equipment, false); } calls++; }); mockChildStep.Setup(x => x.ShouldVisitChildren(It.IsAny <Equipment>(), It.IsAny <int>())).Returns(false); craftManager.Craft(craftingSteps, equipment, affixManager, token, null); mockChildStep.Verify(x => x.Craft(It.IsAny <Equipment>(), It.IsAny <AffixManager>()), Times.Exactly(4)); Assert.IsTrue(equipment.Completed); }
public void NoCurrencyTest() { SimBaseItemInfo baseItemInfo = new SimBaseItemInfo(); SimCraftingInfo craftingInfo = new SimCraftingInfo(); SimFinanceInfo financeInfo = new SimFinanceInfo(); baseItemInfo.ItemName = "Fencer Helm"; financeInfo.BudgetInChaos = 100; var flowControlCraftingStep = new WhileCraftingStep(); craftingInfo.CraftingSteps = new List <ICraftingStep>() { flowControlCraftingStep, }; CraftingSimulator craftingSimulator = new CraftingSimulator(baseItemInfo, financeInfo, craftingInfo); var task = craftingSimulator.Start(); task.Wait(); throw task.Exception; }