public void Think_ProducesResults() { var bay = new ResearchBay(null, 4, 5, new List <Knowledge> { Physics }, 100, PowerGrid(10000000), 1000000); bay.AddResearcher(PhysicsWorker); bay.AddResearcher(PhysicsWorker); bay.AddResearcher(PhysicsWorker); bay.AddResearcher(PhysicsWorker); bay.AddResearcher(PhysicsWorker); bay.Research(Physics); Func <bool> AllResearchersHaveEnergy = () => bay.Researchers.TrueForAll(wk => wk.Energy.Quantity > 0); while (!bay.IsResearched(Physics)) { if (IPowerableUtils.PowerAvailable(bay.EnergySources) == 0) { Assert.Fail("Test is faulty. Not enough energy in station to complete."); return; } if (!AllResearchersHaveEnergy( )) { Assert.Fail("Test is faulty. Not enough energy in workers to complete."); return; } bay.Think( ); } bay.Researchers.ForEach(wk => Assert.IsTrue(wk.Skills.Contains(Physics.Unlocks), "Did not give the physics skill to the researchers")); Assert.IsTrue(bay.IsResearched(Physics), "Did not complete research, but finished anyways"); }
public void AddResearcher_ListensToLimit() { ResearchBay bay = new ResearchBay(null, 0, 3, new List <Knowledge> { Science }, 0, PowerGrid(1000), 1000); for (int i = 0; i < 3; i++) { bay.AddResearcher(new Citizen( )); } Assert.ThrowsException <LimitMetException>(() => bay.AddResearcher(new Citizen( )), "Expected to error on 4th addition."); }
public void AddResearcher_AddsResearcher() { ResearchBay bay = new ResearchBay(null, 0, 3, new List <Knowledge> { Science }, 0, PowerGrid(1000), 1000); bay.AddResearcher(new Citizen( )); Assert.IsTrue(bay.Researchers.Count == 1, $"Expected 1, actual {bay.Researchers.Count}"); }