Exemplo n.º 1
0
        public void FinishRecipe_ErrorsOnIncompleteActive()
        {
            ProductionBaySlot slot = new ProductionBaySlot(
                new RegeneratingBank {
                Maximum  = 1000,
                Quantity = 0
            },
                new RegeneratingBank {
                Maximum  = 100,
                Quantity = 20
            },
                new ResourceBank(100),
                0)
            {
                Active = new Recipe <Resource, Resource>(MetalRecipe)
            };

            Assert.ThrowsException <NotYetCompletedException>(() => slot.FinishRecipe( ));
        }
Exemplo n.º 2
0
        public void FinishRecipe_CallsClearActiveWhenComplete()
        {
            ProductionBaySlot slot = new ProductionBaySlot(
                new RegeneratingBank {
                Maximum  = 1000,
                Quantity = 0
            },
                new RegeneratingBank {
                Maximum  = 100,
                Quantity = 20
            },
                new ResourceBank(100),
                0)
            {
                Active = new Recipe <Resource, Resource>(MetalRecipe)
            };

            slot.Active.Ingredients.ForEach(ing => ing.Progress.Quantity = ing.Progress.Maximum);
            slot.FinishRecipe( );
            Assert.IsTrue(slot.Active == null, "Active is not null, must not have cleared");
        }
Exemplo n.º 3
0
        public void FinishRecipe_CreatesCorrectAmountOnComplete()
        {
            ProductionBaySlot slot = new ProductionBaySlot(
                new RegeneratingBank {
                Maximum  = 1000,
                Quantity = 0
            },
                new RegeneratingBank {
                Maximum  = 100,
                Quantity = 20
            },
                new ResourceBank(100),
                0)
            {
                Active = new Recipe <Resource, Resource>(MetalRecipe)
            };

            slot.Active.Ingredients.ForEach(ing => ing.Progress.Quantity = ing.Progress.Maximum);
            slot.FinishRecipe( );
            Assert.IsTrue(slot.Resources[0].Quantity == 1, $"Produced too many. Expected 1, actual {slot.Resources[0].Quantity}");
        }
Exemplo n.º 4
0
        public void FinishRecipe_AddsCorrectAmountOnComplete()
        {
            ProductionBaySlot slot = new ProductionBaySlot(
                new RegeneratingBank {
                Maximum  = 1000,
                Quantity = 0
            },
                new RegeneratingBank {
                Maximum  = 100,
                Quantity = 20
            },
                new ResourceBank(100, new List <Quantified <Resource> > {
                new Quantified <Resource>(Metal, 1)
            }),
                0)
            {
                Active = new Recipe <Resource, Resource>(MetalRecipe)
            };

            slot.Active.Ingredients.ForEach(ing => ing.Progress.Quantity = ing.Progress.Maximum);
            slot.FinishRecipe( );
            Assert.IsTrue(slot.Resources[Metal].Quantity > 1, $"Expected 1, actually {slot.Resources[Metal].Quantity}");
        }
Exemplo n.º 5
0
        public void FinishRecipe_CreatesNewResourceOnComplete()
        {
            ProductionBaySlot slot = new ProductionBaySlot(
                new RegeneratingBank {
                Maximum  = 1000,
                Quantity = 0
            },
                new RegeneratingBank {
                Maximum  = 100,
                Quantity = 20
            },
                new ResourceBank(100),
                0)
            {
                Active = new Recipe <Resource, Resource>(MetalRecipe)
            };

            slot.Active.Ingredients.ForEach(ing => ing.Progress.Quantity = ing.Progress.Maximum);
            slot.FinishRecipe(
                () => {
                Assert.Fail($"Not yet completed: {slot.Active.Progress.IsFull.ToString( )}");
            });
            Assert.IsTrue(slot.Resources.Contents.Count > 0, "Was expecting something to be added to the resources.");
        }