コード例 #1
0
ファイル: SpeciesMPTests.cs プロジェクト: clorton/IDM-CMS
        public void TestSpeciesMPValue()
        {
            //Parameters in order to create a SpeciesMP
            SpeciesDescription info1;
            string             speciesName = "species1";
            int initialPopulation          = 10;

            //Species Info Object
            info1 = new SpeciesDescription(speciesName, initialPopulation);
            var species = new SpeciesMP(info1, new Dictionary <string, IValue>());

            species.Reset();

            //Test get
            Assert.AreEqual((double)initialPopulation, species.Value);

            //Test set
            species.Value = 20.0;
            Assert.AreEqual(20.0, species.Value);
            species.Value = 21.5;
            Assert.AreEqual(21.5, species.Value);

            //Test set via Update
            species.Update(30.0);
            Assert.AreEqual(30.0, species.Value);
        }
コード例 #2
0
        public void ProcessSpeciesTestOneSpecies()
        {
            ModelInfo.ModelBuilder modelInfoEx = new ModelInfo.ModelBuilder("model");
            var species = new SpeciesDescription("testSpecies", 10);

            modelInfoEx.AddSpecies(species);
            ModelInfo      modelInfo            = modelInfoEx.Model;
            Model          model                = new Model(modelInfo);
            MpModelBuilder modelbuilder         = new MpModelBuilder();
            MethodInfo     processSpeciesMethod = ReflectionUtility.GetHiddenMethod("ProcessSpecies", modelbuilder);
            IDictionary <string, IValue>              nmap;
            IDictionary <string, IBoolean>            bmap;
            IDictionary <string, IUpdateable>         umap;
            IDictionary <SpeciesDescription, Species> speciesMap = InitializeMaps(out nmap, out bmap, out umap);

            var newSpecies = new SpeciesMP(species, nmap);

            //Inputs to invoke hidden method ProcessSpecies (needs to be an array of objects)
            var inputArray1 = new object[2];

            inputArray1[0] = model;
            inputArray1[1] = modelInfo;

            //Test to make sure that the model has local variables that are null

            var compareSpeciesMap = ReflectionUtility.GetHiddenField <IDictionary <SpeciesDescription, Species> >("_speciesMap", modelbuilder);
            var compareNmap       = ReflectionUtility.GetHiddenField <IDictionary <string, IValue> >("_nmap", modelbuilder);
            var compareBmap       = ReflectionUtility.GetHiddenField <IDictionary <string, IBoolean> >("_bmap", modelbuilder);
            var compareUMap       = ReflectionUtility.GetHiddenField <IDictionary <string, IUpdateable> >("_umap", modelbuilder);

            Assert.AreEqual(speciesMap, compareSpeciesMap);
            Assert.AreEqual(nmap, compareNmap);
            Assert.AreEqual(bmap, compareBmap);
            Assert.AreEqual(umap, compareUMap);

            processSpeciesMethod.Invoke(modelbuilder, inputArray1);

            //Begin Assertions about the species that was added to the model
            Assert.AreEqual("testSpecies", model.Species[0].Name);
            Assert.AreEqual(species, model.Species[0].Description);
            Assert.AreEqual(1, model.Species.Count);

            //Assert tests about size.

            compareSpeciesMap = ReflectionUtility.GetHiddenField <IDictionary <SpeciesDescription, Species> >("_speciesMap", modelbuilder);
            compareNmap       = ReflectionUtility.GetHiddenField <IDictionary <string, IValue> >("_nmap", modelbuilder);
            compareUMap       = ReflectionUtility.GetHiddenField <IDictionary <string, IUpdateable> >("_umap", modelbuilder);

            Assert.AreEqual(1, compareSpeciesMap.Count);
            Assert.AreEqual(1, compareNmap.Count);
            Assert.AreEqual(1, compareUMap.Count);

            //Assert tests about what was actually added to the dictionary.

            var testSpecies = (SpeciesMP)compareNmap["testSpecies"];

            Assert.AreEqual(testSpecies.Description, newSpecies.Description);
            Assert.AreEqual(testSpecies.Locale, newSpecies.Locale);
            Assert.AreEqual(testSpecies.Name, newSpecies.Name);
        }
コード例 #3
0
ファイル: SpeciesMPTests.cs プロジェクト: clorton/IDM-CMS
        public void TestSpeciesMPCount()
        {
            //Parameters in order to create a SpeciesMP
            SpeciesDescription info1;
            string             speciesName = "species1";
            int initialPopulation          = 10;

            //Species Info Object
            info1 = new SpeciesDescription(speciesName, initialPopulation);
            var species = new SpeciesMP(info1, new Dictionary <string, IValue>());

            species.Reset();

            //Test get
            Assert.AreEqual(initialPopulation, species.Count);

            //Test set
            species.Count = 20;
            Assert.AreEqual(20, species.Count);
            Assert.AreEqual((double)20, species.Value);

            //Test fractional value of species.
            species.Value = 30.2;
            Assert.AreEqual((int)30.2, species.Count);

            //Test get through Update.
            species.Update(30.0);
            Assert.AreEqual(30, species.Count);
        }
コード例 #4
0
ファイル: SpeciesMPTests.cs プロジェクト: clorton/IDM-CMS
        public void TestSpeciesMPConstructorWithDefaults()
        {
            //Parameters in order to create a SpeciesMP
            const string speciesName       = "species1";
            const int    initialPopulation = 10;

            //Species Info and Species Object
            var info1   = new SpeciesDescription(speciesName, initialPopulation);
            var species = new SpeciesMP(info1, new Dictionary <string, IValue>());

            species.Reset();

            //Test Constructor
            Assert.AreEqual(initialPopulation, species.Count);
            Assert.AreEqual(initialPopulation, (int)species.Value);
        }
コード例 #5
0
ファイル: SpeciesMPTests.cs プロジェクト: clorton/IDM-CMS
        public void TestSpeciesMPDecrement()
        {
            //Parameters in order to create a SpeciesMP
            SpeciesDescription info1;
            string             speciesName = "species1";
            int initialPopulation          = 20;

            //Species Info Object
            info1 = new SpeciesDescription(speciesName, initialPopulation);
            var species = new SpeciesMP(info1, new Dictionary <string, IValue>());

            species.Reset();

            //Test Increment
            Assert.AreEqual(initialPopulation, species.Count);

            int    returnCount;
            double returnValue;
            int    deltaInt    = 5;
            double deltaDouble = 5.0;

            returnCount = species.Decrement();
            Assert.AreEqual(initialPopulation - 1, species.Count);
            Assert.AreEqual(initialPopulation - 1, returnCount);

            returnCount = ((Species)species).Decrement(deltaInt);
            Assert.AreEqual(initialPopulation - 6, species.Count);
            Assert.AreEqual(initialPopulation - 6, returnCount);

            returnValue = species.Decrement(deltaDouble);
            Assert.AreEqual(initialPopulation - 11, species.Value);
            Assert.AreEqual(initialPopulation - 11, returnValue);

            deltaInt    = -5;
            deltaDouble = -5.0;

            returnCount = ((Species)species).Decrement(deltaInt);
            Assert.AreEqual(initialPopulation - 6, species.Count);
            Assert.AreEqual(initialPopulation - 6, returnCount);

            returnValue = species.Decrement(deltaDouble);
            Assert.AreEqual(initialPopulation - 1, species.Value);
            Assert.AreEqual(initialPopulation - 1, returnValue);
        }
コード例 #6
0
        private static Reaction CreateReaction(SpeciesDescription info1, SpeciesMP reactant1,
                                               SpeciesDescription info2, SpeciesMP reactant2,
                                               SpeciesDescription info3, SpeciesMP product1, float rate)
        {
            var builder = new ReactionInfo.ReactionBuilder("theReaction");

            builder.AddReactant(info1);
            builder.AddReactant(info2);
            builder.AddProduct(info3);
            builder.SetRate(new NumericExpressionTree(new Constant(rate)));
            var reactionInfo = builder.Reaction;
            var speciesMap   = new Dictionary <SpeciesDescription, Species>(3)
            {
                { info1, reactant1 }, { info2, reactant2 }, { info3, product1 }
            };
            var symbolMap = new Dictionary <string, IValue>();
            var reaction  = new Reaction(reactionInfo, speciesMap, symbolMap);

            return(reaction);
        }
コード例 #7
0
        public void TestSpeciesMPUpdate()
        {
            //Parameters in order to create a SpeciesMP
            SpeciesDescription info1;
            string             speciesName = "species1";
            int initialPopulation          = 10;

            //Species Info Object
            info1 = new SpeciesDescription(speciesName, initialPopulation);
            var species = new SpeciesMP(info1, new Dictionary <string, IValue>());

            species.Reset();

            //Test Update
            species.Update(30.0f);
            Assert.AreEqual(30.0f, species.Value);

            species.Update(0.0f);
            Assert.AreEqual(0.0f, species.Value);

            species.Update(-30.0f);
            Assert.AreEqual(-30.0f, species.Value);
        }
コード例 #8
0
 private static void CreateSpeciesInfoAndSpecies(string speciesName, int initialPopulation, out SpeciesDescription info, out SpeciesMP species)
 {
     info    = new SpeciesDescription(speciesName, initialPopulation);
     species = new SpeciesMP(info, new Dictionary <string, IValue>());
     species.Reset();
 }