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( )); }
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"); }
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}"); }
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}"); }
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."); }