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 Research_RefusesUnsupported() { ResearchBay bay = new ResearchBay(null, 0, 3, new List <Knowledge> { Science }, 0, PowerGrid(1000), 1000); Assert.ThrowsException <UnsupportedException>(() => bay.Research(Math), "Expected researching to fail"); }
public void Research_SetsActive() { ResearchBay bay = new ResearchBay(null, 0, 3, new List <Knowledge> { Science }, 0, PowerGrid(1000), 1000); bay.Research(Science); Assert.IsNotNull(bay.Active, "Expected active to be set."); }
public void Research_ThrowsIfActiveNotNull() { ResearchBay bay = new ResearchBay(null, 0, 3, new List <Knowledge> { Science }, 0, PowerGrid(1000), 1000); Active.SetValue(bay, ScienceProg, BindingFlags.NonPublic | BindingFlags.Instance, null, null, null); Assert.ThrowsException <InvalidOperationException>(() => bay.Research(Science)); }