public void TestReproducerProcessFailure() { LivingSystem system = new LivingSystem(); MatterEnergyPile input = new MatterEnergyPile(); MatterEnergyPile output = new MatterEnergyPile(); input.AddAmount("matterEnergy", 0.5d); dynamic template = new BasicProcessTemplate(); template.Inputs = new Dictionary <string, double>(); template.Inputs.Add("matterEnergy", 1.0d); template.Outputs = new Dictionary <string, double>(); template.Outputs.Add("matterEnergy", 0.5d); ISet <ComponentType> types = new SortedSet <ComponentType>(); types.Add(ComponentType.REPRODUCER); template.ComponentTypes = types; dynamic executeArgs = new BasicProcessExecuteArgs(); executeArgs.InputPile = input; executeArgs.OutputPile = output; system.AddProcess("reproducerProcess", template); Assert.IsTrue(system.SetExecuteArgs("reproducerProcess", executeArgs)); Assert.IsFalse(system.ExecuteAllProcesses()); Assert.IsNull(executeArgs.System); Assert.IsTrue(input["matterEnergy"] == 0.5d); Assert.ThrowsException <KeyNotFoundException>(() => output["matterEnergy"]); }
public void TestReproducerProcessMultiple() { LivingSystem system = new LivingSystem(); MatterEnergyPile input = new MatterEnergyPile(); MatterEnergyPile output = new MatterEnergyPile(); input.AddAmount("matterEnergy", 2.0d); dynamic template = new BasicProcessTemplate(); ISet <ComponentType> types = new SortedSet <ComponentType>(); types.Add(ComponentType.REPRODUCER); template.ComponentTypes = types; template.Inputs = new Dictionary <string, double>(); template.Inputs.Add("matterEnergy", 1.0d); template.Outputs = new Dictionary <string, double>(); template.Outputs.Add("matterEnergy", 0.5d); template.ProcessesToAdd = new Dictionary <string, IProcessTemplate>(); template.ProcessesToAdd.Add("reproducerProcess", template); dynamic executeArgs = new BasicProcessExecuteArgs(); executeArgs.InputPile = input; executeArgs.OutputPile = output; system.AddProcess("reproducerProcess", template); Assert.IsTrue(system.SetExecuteArgs("reproducerProcess", executeArgs)); Assert.IsTrue(system.ExecuteAllProcesses()); LivingSystem secondSystem = executeArgs.System; Assert.IsNotNull(secondSystem); executeArgs.System = null; Assert.IsTrue(secondSystem.SetExecuteArgs("reproducerProcess", executeArgs)); Assert.IsTrue(secondSystem.ExecuteAllProcesses()); LivingSystem thirdSystem = executeArgs.System; Assert.IsNotNull(thirdSystem); }
public void TestHasAmount() { MatterEnergyPile pile = new MatterEnergyPile(); Assert.IsFalse(pile.HasAmount("matterEnergy", 1.0d)); Assert.IsTrue(pile.HasAmount("matterEnergy", 0.0d)); }
public void TestAddAmount() { MatterEnergyPile pile = new MatterEnergyPile(); pile.AddAmount("matterEnergy", 1.0d); Assert.IsTrue(pile["matterEnergy"] == 1.0d); Assert.IsTrue(pile.HasAmount("matterEnergy", 1.0d)); Assert.IsTrue(pile.HasAmount("matterEnergy", 0.5d)); Assert.IsFalse(pile.HasAmount("matterEnergy", 1.5d)); }
public void TestAddBulk() { MatterEnergyPile pile = new MatterEnergyPile(); pile.AddAmount("matterEnergy1", 1.0d); MatterEnergyPile pile2 = new MatterEnergyPile(); pile2.AddAmount("matterEnergy1", 1.0d); pile2.AddAmount("matterEnergy2", 1.0d); pile.AddBulk(pile2); Assert.AreEqual(pile["matterEnergy1"], 2.0d); Assert.AreEqual(pile["matterEnergy2"], 1.0d); Assert.IsTrue(pile.HasAmount("matterEnergy1", 2.0d)); Assert.IsTrue(pile.HasAmount("matterEnergy2", 1.0d)); }
public void TestRemoveBulk() { MatterEnergyPile pile = new MatterEnergyPile(); pile.AddAmount("matterEnergy1", 2.0d); pile.AddAmount("matterEnergy2", 1.0d); MatterEnergyPile pile2 = new MatterEnergyPile(); pile2.AddAmount("matterEnergy1", 1.0d); pile2.AddAmount("matterEnergy2", 1.0d); Assert.IsTrue(pile.RemoveBulk(pile2)); Assert.AreEqual(pile["matterEnergy1"], 1.0d); Assert.ThrowsException <KeyNotFoundException>(() => pile["matterEnergy2"]); Assert.IsFalse(pile.HasAmount("matterEnergy1", 2.0d)); Assert.IsFalse(pile.HasAmount("matterEnergy2", 1.0d)); }
public void TestHasBulk() { MatterEnergyPile pile = new MatterEnergyPile(); MatterEnergyPile pile2 = new MatterEnergyPile(); MatterEnergyPile pile3 = new MatterEnergyPile(); pile.AddAmount("matterEnergy1", 1.0d); pile2.AddAmount("matterEnergy1", 1.0d); pile.AddAmount("matterEnergy2", 1.0d); pile3.AddAmount("matterEnergy2", 1.0d); Assert.IsTrue(pile.HasBulk(pile)); Assert.IsTrue(pile.HasBulk(pile2)); Assert.IsTrue(pile.HasBulk(pile3)); Assert.IsFalse(pile2.HasBulk(pile)); Assert.IsFalse(pile3.HasBulk(pile)); Assert.IsFalse(pile3.HasBulk(pile2)); }