private static void CreateSpeciesInfoAndSpecies(string speciesName, int initialPopulation, out SpeciesDescription description, out Species species) { description = new SpeciesDescription(speciesName, initialPopulation); //species = new Species(description) { Count = description.InitialValue }; species = new Species(description, new Dictionary <string, IValue>()); species.Reset(); }
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); }
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); }
public void ReactionIsLocalTest() { var builder = new ReactionInfo.ReactionBuilder(); ReactionInfo reaction = builder.Reaction; var reactantA = new SpeciesDescription("reactantA", new LocaleInfo("locale1")); var productA = new SpeciesDescription("productA", reactantA.Locale); builder.AddReactant(reactantA); builder.AddProduct(productA); Console.WriteLine("Checking for reaction.IsLocal with reactants and products in same locale..."); Expect(reaction.IsLocal); Expect(!reaction.IsDiffusion); builder = new ReactionInfo.ReactionBuilder(); reaction = builder.Reaction; var productB = new SpeciesDescription("productB", new LocaleInfo("locale2")); builder.AddReactant(reactantA); builder.AddProduct(productB); Console.WriteLine("Checking for !reaction.IsLocal with reactants and products from different locales..."); Expect(!reaction.IsLocal); Expect(reaction.IsDiffusion); Console.WriteLine(""); }
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); }
public void MixedLocaleproductTest() { var builder = new ReactionInfo.ReactionBuilder(); var species1 = new SpeciesDescription("A-Species", new LocaleInfo("compartment-A")); builder.AddProduct(species1); Console.WriteLine("Checking for ArgumentException() with products from difference locales..."); Console.WriteLine(""); var species2 = new SpeciesDescription("B-Species", new LocaleInfo("compartment-B")); builder.AddProduct(species2); }
public void SpeciesInfoTest() { const string nameOne = "NameOnly"; var speciesName = new SpeciesDescription(nameOne); Console.Write("Created species: "); Console.WriteLine(speciesName); Console.WriteLine("SpeciesInfoTest: testing named species Name property..."); Expect(speciesName.Name == nameOne); Console.WriteLine("SpeciesInfoTest: testing named species Locale property..."); Expect(speciesName.Locale == null); const string nameTwo = "NameAndPop"; const int initialPopOne = 2012; var speciesNamePop = new SpeciesDescription(nameTwo, initialPopOne); Console.Write("Created species: "); Console.WriteLine(speciesNamePop); Console.WriteLine("SpeciesInfoTest: testing name+pop species Name property..."); Expect(speciesNamePop.Name == nameTwo); Console.WriteLine("SpeciesInfoTest: testing name+pop species Locale property..."); Expect(speciesNamePop.Locale == null); const string nameThree = "NameAndLocale"; const string localeOneName = "univ"; var localeOne = new LocaleInfo(localeOneName); var speciesNameLocale = new SpeciesDescription(nameThree, localeOne); Console.Write("Created species: "); Console.WriteLine(speciesNameLocale); Console.WriteLine("SpeciesInfoTest: testing name+locale species Name property..."); Expect(speciesNameLocale.Name == nameThree); Console.WriteLine("SpeciesInfoTest: testing name+locale species Locale property..."); Expect(speciesNameLocale.Locale == localeOne); const string nameFour = "NamePopAndLocale"; const int initialPopTwo = 2112; const string localeTwoName = "bellevue"; var localeTwo = new LocaleInfo(localeTwoName); var speciesNamePopLocale = new SpeciesDescription(nameFour, initialPopTwo, localeTwo); Console.Write("Created species: "); Console.WriteLine(speciesNamePopLocale); Console.WriteLine("SpeciesInfoTest: testing name+pop+locale species Name property..."); Expect(speciesNamePopLocale.Name == nameFour); Console.WriteLine("SpeciesInfoTest: testing name+pop+locale species Locale property..."); Expect(speciesNamePopLocale.Locale == localeTwo); }
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); }
public void ReactionInfoTest() { // Add a reactant, reactant shows up in Reactants list var builder = new ReactionInfo.ReactionBuilder(); ReactionInfo reaction = builder.Reaction; var reactant = new SpeciesDescription("reactant", 2012); builder.AddReactant(reactant); Console.WriteLine("Checking for reactant added to reaction with ReactionBuilder..."); Expect(reaction.Reactants.First() == reactant); // Add a product, product shows up in Products list var product = new SpeciesDescription("product", 2112); builder.AddProduct(product); Console.WriteLine("Checking for product added to reaction with ReactionBuilder..."); Expect(reaction.Products.First() == product); // Set rate, reaction rate is set. var expression = new NumericExpressionTree(string.Empty, new MultiplyOperator(new SymbolReference("reactant"), new SymbolReference("product"))); builder.SetRate(expression); Console.WriteLine("Checking for reaction rate set from ReactionBuilder..."); Expect(reaction.RateExpression == expression); Console.WriteLine("Checking !reaction.HasDelay (before calling builder.SetDelay())..."); Expect(!reaction.HasDelay); var delay = new NumericExpressionTree(string.Empty, new Constant(3.14159265f)); builder.SetDelay(delay); Console.WriteLine("Checking reaction.HasDelay (after calling builder.SetDelay())..."); Expect(reaction.HasDelay); Console.WriteLine("Checking reaction for correct delay..."); Expect(reaction.DelayExpression == delay); Console.WriteLine(""); }
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); }
private static Reaction CreateReaction(SpeciesDescription info1, Species reactant1, SpeciesDescription info2, Species reactant2, SpeciesDescription info3, Species product1, double 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); }
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); }
public SpeciesMP(SpeciesDescription speciesDescription, IDictionary <string, IValue> map) : base(speciesDescription, map) { }
public Species(SpeciesDescription speciesDescription, IDictionary <string, IValue> map) { Description = speciesDescription; _initialPopulation = speciesDescription.InitialPopulation.ResolveReferences(map); }
public void ModelInfoTest() { const string modelName = "test model"; var builder = new ModelInfo.ModelBuilder(modelName); const string constraintName = "test constraint"; const string constraintPredicateName = "constraint predicate"; var constraintExpression = new EqualToOperator(Two, Two); var constraintPredicate = new BooleanExpressionTree(constraintPredicateName, constraintExpression); var constraint = new ConstraintInfo(constraintName, constraintPredicate); builder.AddConstraint(constraint); /* * const string eventName = "test event"; * const string eventPredicateName = "event predicate"; * var eventExpression = new GreaterThanOperator(Three, Two); * var eventPredicate = new BooleanExpressionTree(eventPredicateName, eventExpression); * int eventCount = 0; * var testEvent = new EventInfo(eventName, eventPredicate, () => { eventCount++; }); * builder.AddEvent(testEvent); */ const string expressionName = "test expression"; var expression = new AddOperator(Three, Two); var expressionTree = new NumericExpressionTree(expressionName, expression); builder.AddExpression(expressionTree); const string localeName = "test locale"; var locale = new LocaleInfo(localeName); builder.AddLocale(locale); const string observableName = "test observable"; const string observableExpressionName = "observable expression"; var rootOperator = new PowerOperator(Two, Three); var observableExpressionTree = new NumericExpressionTree(observableExpressionName, rootOperator); var observable = new ObservableInfo(observableName, observableExpressionTree); builder.AddObservable(observable); const string parameterName = "test parameter"; var parameter = new ParameterInfo(parameterName, 3.14159265f); builder.AddParameter(parameter); const string predicateName = "test predicate"; var predicateExpression = new LessThanOperator(Two, Three); var predicate = new BooleanExpressionTree(predicateName, predicateExpression); builder.AddPredicate(predicate); const string speciesName = "reactant"; var reactant = new SpeciesDescription(speciesName, 2012, locale); builder.AddSpecies(reactant); const string reactionName = "test reaction"; var rBuilder = new ReactionInfo.ReactionBuilder(reactionName); rBuilder.AddReactant(reactant); var rateExpression = new MultiplyOperator(Ten, new SymbolReference(speciesName)); var reactionRate = new NumericExpressionTree(null, rateExpression); rBuilder.SetRate(reactionRate); var reaction = rBuilder.Reaction; builder.AddReaction(reaction); var modelInfo = builder.Model; Console.WriteLine("ModelInfoTests: checking model name..."); Expect(modelInfo.Name == modelName); Console.WriteLine("ModelInfoTests: checking constraint count (1)..."); Expect(modelInfo.Constraints.Count() == 1); Console.WriteLine("ModelInfoTests: checking constraint..."); Expect(modelInfo.Constraints.First() == constraint); /* * Console.WriteLine("ModelInfoTests: checking event count (1)..."); * Expect(modelInfo.Events.Count() == 1); * Console.WriteLine("ModelInfoTests: checking event..."); * Expect(modelInfo.Events.First() == testEvent); */ Console.WriteLine("ModelInfoTests: checking expression count (3)..."); Expect(modelInfo.Expressions.Count() == 3); Console.WriteLine("ModelInfoTests: checking expressions..."); var expressions = modelInfo.Expressions.Where(net => net.Name == expressionName).ToList(); Expect(expressions.Count == 1); Expect(expressions[0] == expressionTree); Console.WriteLine("ModelInfoTests: checking locale count (1)..."); Expect(modelInfo.Locales.Count() == 1); Console.WriteLine("ModelInfoTests: checking locale..."); Expect(modelInfo.Locales.First() == locale); Console.WriteLine("ModelInfoTests: checking observable count (1)..."); Expect(modelInfo.Observables.Count() == 1); Console.WriteLine("ModelInfoTests: checking observable..."); Expect(modelInfo.Observables.First() == observable); Console.WriteLine("ModelInfoTests: checking parameter count (1)..."); Expect(modelInfo.Parameters.Count() == 1); Console.WriteLine("ModelInfoTests: checking parameter..."); Expect(modelInfo.Parameters.First() == parameter); /* * Console.WriteLine("ModelInfoTests: checking predicate count (3)..."); * Expect(modelInfo.Predicates.Count() == 3); */ Console.WriteLine("ModelInfoTests: checking predicate count (2)..."); Expect(modelInfo.Predicates.Count() == 2); Console.WriteLine("ModelInfoTests: checking predicate..."); var predicates = modelInfo.Predicates.Where(pi => pi.Name == predicateName).ToList(); Expect(predicates.Count == 1); Expect(predicates[0] == predicate); Console.WriteLine("ModelInfoTests: checking reaction count (1)..."); Expect(modelInfo.Reactions.Count() == 1); Console.WriteLine("ModelInfoTests: checking reaction..."); Expect(modelInfo.Reactions.First() == reaction); Console.WriteLine("ModelInfoTests: checking species count (1)..."); Expect(modelInfo.Species.Count() == 1); Console.WriteLine("ModelInfoTests: checking species..."); Expect(modelInfo.Species.First() == reactant); }
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(); }