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);
        }
Exemple #3
0
        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;
        }