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);
        }
コード例 #3
0
        public void TestHasAmount()
        {
            MatterEnergyPile pile = new MatterEnergyPile();

            Assert.IsFalse(pile.HasAmount("matterEnergy", 1.0d));
            Assert.IsTrue(pile.HasAmount("matterEnergy", 0.0d));
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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));
        }
コード例 #6
0
        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));
        }
コード例 #7
0
        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));
        }