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)); }
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}"); }
public void Cancel_ClearsActive() { ResearchBay bay = new ResearchBay(null, 0, 3, new List <Knowledge> { Science }, 0, PowerGrid(1000), 1000); var activeProperty = typeof(ResearchBay).GetProperty("Active"); activeProperty.SetValue(bay, ScienceProg, BindingFlags.NonPublic | BindingFlags.Instance, null, null, null); bay.Cancel( ); Assert.IsNull(bay.Active); }
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 ConvertReseacherEnergy_AddsToActive() { ResearchBay bay = new ResearchBay(null, 0, 3, new List <Knowledge> { Science }, 0, PowerGrid(1000), 1000); var cit = new Citizen { Energy = new Bank { Maximum = 1000, Quantity = 1000 } }; var activeProperty = typeof(ResearchBay) .GetProperty("Active"); activeProperty.SetValue(bay, ScienceProg, BindingFlags.NonPublic | BindingFlags.Instance, null, null, null); bay.ConvertResearcherEnergy(cit); Assert.IsTrue(bay.Active.Quantity == 5, $"Expected active progress to be 5, actual {bay.Active.Quantity}"); }