22 #include "utilities.hpp"
54 CPPUNIT_ASSERT(pModel != NULL);
55 CPPUNIT_ASSERT(pModel->getQuantityUnitEnum() ==
CModel::mMol);
56 CPPUNIT_ASSERT(pModel->getVolumeUnitEnum() ==
CModel::ml);
57 CPPUNIT_ASSERT(pModel->getTimeUnitEnum() ==
CModel::s);
58 CPPUNIT_ASSERT(pModel->getCompartments().size() == 1);
59 const CCompartment* pCompartment = pModel->getCompartments()[0];
60 CPPUNIT_ASSERT(pCompartment != NULL);
62 CPPUNIT_ASSERT(pModel->getMetabolites().size() == 2);
63 CMetab* pA = pModel->getMetabolites()[0];
64 CPPUNIT_ASSERT(pA != NULL);
66 const CMetab* pB = pModel->getMetabolites()[1];
67 CPPUNIT_ASSERT(pB != NULL);
69 CPPUNIT_ASSERT(pModel->getModelValues().size() == 2);
71 const CModelValue* pFactor = pModel->getModelValues()[1];
72 CPPUNIT_ASSERT(pFactor != NULL);
74 CPPUNIT_ASSERT(fabs((pFactor->getInitialValue() - pModel->getQuantity2NumberFactor()) / pModel->getQuantity2NumberFactor()) < 1e-3);
75 const CModelValue* pModelValue = pModel->getModelValues()[0];
76 CPPUNIT_ASSERT(pModelValue != NULL);
81 CPPUNIT_ASSERT(pNode != NULL);
83 CPPUNIT_ASSERT(pObjectNode != NULL);
85 CPPUNIT_ASSERT(!objectCN.empty());
86 std::vector<CCopasiContainer*> listOfContainers;
87 listOfContainers.push_back(pModel);
89 CPPUNIT_ASSERT(pObject != NULL);
91 CPPUNIT_ASSERT(pObject->
getObjectName() == std::string(
"ParticleNumber"));
94 CPPUNIT_ASSERT(pModel->getReactions().size() == 2);
95 const CReaction* pReaction1 = pModel->getReactions()[0];
96 CPPUNIT_ASSERT(pReaction1 != NULL);
97 CPPUNIT_ASSERT(pReaction1->isReversible() ==
false);
99 const CFunction* pKineticFunction = pReaction1->getFunction();
100 CPPUNIT_ASSERT(pKineticFunction != NULL);
104 CPPUNIT_ASSERT(pMassAction == NULL);
105 const CChemEq* pChemEq = &pReaction1->getChemEq();
106 CPPUNIT_ASSERT(pChemEq != NULL);
110 CPPUNIT_ASSERT(pElement != NULL);
111 CPPUNIT_ASSERT(fabs(pElement->getMultiplicity() - 1.0) < 1e-3);
112 CPPUNIT_ASSERT(pElement->getMetabolite() == pA);
116 const CReaction* pReaction2 = pModel->getReactions()[1];
117 CPPUNIT_ASSERT(pReaction2 != NULL);
118 CPPUNIT_ASSERT(pReaction2->isReversible() ==
false);
120 pKineticFunction = pReaction2->getFunction();
121 CPPUNIT_ASSERT(pKineticFunction != NULL);
122 CPPUNIT_ASSERT(pKineticFunction->getObjectName() == std::string(
"Henri-Michaelis-Menten (irreversible)"));
124 pChemEq = &pReaction2->getChemEq();
125 CPPUNIT_ASSERT(pChemEq != NULL);
126 CPPUNIT_ASSERT(pChemEq->getCompartmentNumber() == 1);
127 CPPUNIT_ASSERT(pChemEq->getSubstrates().size() == 1);
128 pElement = pChemEq->getSubstrates()[0];
129 CPPUNIT_ASSERT(pElement != NULL);
130 CPPUNIT_ASSERT(fabs(pElement->getMultiplicity() - 1.0) < 1e-3);
131 CPPUNIT_ASSERT(pElement->getMetabolite() == pA);
132 CPPUNIT_ASSERT(pChemEq->getProducts().size() == 1);
133 pElement = pChemEq->getProducts()[0];
134 CPPUNIT_ASSERT(pElement != NULL);
135 CPPUNIT_ASSERT(fabs(pElement->getMultiplicity() - 1.0) < 1e-3);
136 CPPUNIT_ASSERT(pElement->getMetabolite() == pB);
137 CPPUNIT_ASSERT(pChemEq->getModifiers().size() == 0);
138 const std::vector<std::vector<std::string> > parameterMappings = pReaction2->getParameterMappings();
139 CPPUNIT_ASSERT(parameterMappings.size() == 3);
140 CPPUNIT_ASSERT(parameterMappings[0].size() == 1);
141 const std::string parameterKey = parameterMappings[0][0];
142 CPPUNIT_ASSERT(parameterKey == pA->getKey());
146 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
147 "<sbml xmlns=\"http://www.sbml.org/sbml/level2/version3\" level=\"2\" version=\"3\">\n"
149 " <body xmlns=\"http://www.w3.org/1999/xhtml\">\n"
150 " <p>Model with fixed compartment volume, two species with hasOnlySubstanceUnits flag set to true. The units are set to ml and mMol. There is an ode rule for the global parameter that contains a reference to species A multiplied by a constant parameter.</p>\n"
151 " <p>The imported model should contain an ode rule for the global parameter that consists of the reference to the particle number of species A. The species references in the reactions should be imported multiplied by the volume.</p>\n"
154 " <model id=\"Model_1\" name=\"New Model\">\n"
155 " <listOfFunctionDefinitions>\n"
156 " <functionDefinition id=\"function_1\" name=\"Henri-Michaelis-Menten (irreversible)\">\n"
157 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n"
160 " <ci> substrate </ci>\n"
173 " <ci> substrate </ci>\n"
178 " <ci> substrate </ci>\n"
183 " </functionDefinition>\n"
184 " </listOfFunctionDefinitions>\n"
185 " <listOfUnitDefinitions>\n"
186 " <unitDefinition id=\"volume\">\n"
188 " <unit kind=\"litre\" scale=\"-3\"/>\n"
190 " </unitDefinition>\n"
191 " <unitDefinition id=\"substance\">\n"
193 " <unit kind=\"mole\" scale=\"-3\"/>\n"
195 " </unitDefinition>\n"
196 " </listOfUnitDefinitions>\n"
197 " <listOfCompartments>\n"
198 " <compartment id=\"compartment_1\" name=\"compartment\" size=\"1\"/>\n"
199 " </listOfCompartments>\n"
201 " <species id=\"species_1\" name=\"A\" compartment=\"compartment_1\" initialAmount=\"1\" hasOnlySubstanceUnits=\"true\"/>\n"
202 " <species id=\"species_2\" name=\"B\" compartment=\"compartment_1\" initialAmount=\"1\" hasOnlySubstanceUnits=\"true\"/>\n"
203 " </listOfSpecies>\n"
204 " <listOfParameters>\n"
205 " <parameter id=\"parameter_1\" name=\"K\" value=\"0\" constant=\"false\"/>\n"
206 " <parameter id=\"parameter_2\" name=\"F\" value=\"6.0221415e20\" constant=\"true\"/>\n"
207 " </listOfParameters>\n"
209 " <rateRule variable=\"parameter_1\">\n"
210 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n"
213 " <ci> species_1 </ci>\n"
214 " <ci> parameter_2 </ci>\n"
219 " <listOfReactions>\n"
220 " <reaction id=\"reaction_1\" name=\"reaction_0\" reversible=\"false\">\n"
221 " <listOfReactants>\n"
222 " <speciesReference species=\"species_1\"/>\n"
223 " </listOfReactants>\n"
225 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n"
229 " <ci> species_1 </ci>\n"
232 " <listOfParameters>\n"
233 " <parameter id=\"k1\" value=\"0.1\"/>\n"
234 " </listOfParameters>\n"
237 " <reaction id=\"reaction_2\" name=\"reaction_1\" reversible=\"false\">\n"
238 " <listOfReactants>\n"
239 " <speciesReference species=\"species_1\"/>\n"
240 " </listOfReactants>\n"
241 " <listOfProducts>\n"
242 " <speciesReference species=\"species_2\"/>\n"
243 " </listOfProducts>\n"
245 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n"
248 " <ci> compartment_1 </ci>\n"
250 " <ci> function_1 </ci>\n"
253 " <ci> species_1 </ci>\n"
254 " <ci> compartment_1 </ci>\n"
261 " <listOfParameters>\n"
262 " <parameter id=\"Km\" value=\"0.1\"/>\n"
263 " <parameter id=\"V\" value=\"0.1\"/>\n"
264 " </listOfParameters>\n"
267 " </listOfReactions>\n"
const CExpression * getExpressionPtr() const
Header file of class CExpression.
size_t getCompartmentNumber() const
Header file of class CModelEntity and CModelValue.
const std::string & getObjectName() const
virtual size_t size() const
const CRegisteredObjectName & getObjectCN() const
const CCopasiVector< CChemEqElement > & getProducts() const
const CCopasiVector< CChemEqElement > & getSubstrates() const
static CCopasiDataModel * addDatamodel()
const CCopasiVector< CChemEqElement > & getModifiers() const
bool importSBMLFromString(const std::string &sbmlDocumentText, CProcessReport *pImportHandler=NULL, const bool &deleteOldData=true)
static CCopasiDataModel * pCOPASIDATAMODEL
The class for handling a chemical kinetic function.
void test_hasOnlySubstanceUnits()
static void init(int argc, char *argv[], const bool &withGui=false)
static const char * MODEL_STRING
const CModelEntity::Status & getStatus() const
CCopasiObject * ObjectFromName(const std::vector< CCopasiContainer * > &listOfContainer, const CCopasiObjectName &CN) const
CCopasiContainer * getObjectParent() const