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);
76 const CModelValue* pModelValue = pModel->getModelValues()[0];
77 CPPUNIT_ASSERT(pModelValue != NULL);
83 CPPUNIT_ASSERT(pNode != NULL);
85 CPPUNIT_ASSERT(pObjectNode != NULL);
87 CPPUNIT_ASSERT(!objectCN.empty());
88 std::vector<CCopasiContainer*> listOfContainers;
89 listOfContainers.push_back(pModel);
91 CPPUNIT_ASSERT(pObject != NULL);
93 CPPUNIT_ASSERT(pObject->
getObjectName() == std::string(
"InitialParticleNumber"));
96 CPPUNIT_ASSERT(pModel->getReactions().size() == 2);
97 const CReaction* pReaction1 = pModel->getReactions()[0];
98 CPPUNIT_ASSERT(pReaction1 != NULL);
99 CPPUNIT_ASSERT(pReaction1->isReversible() ==
false);
101 const CFunction* pKineticFunction = pReaction1->getFunction();
102 CPPUNIT_ASSERT(pKineticFunction != NULL);
106 CPPUNIT_ASSERT(pMassAction == NULL);
107 const CChemEq* pChemEq = &pReaction1->getChemEq();
108 CPPUNIT_ASSERT(pChemEq != NULL);
112 CPPUNIT_ASSERT(pElement != NULL);
113 CPPUNIT_ASSERT(fabs(pElement->getMultiplicity() - 1.0) < 1e-3);
114 CPPUNIT_ASSERT(pElement->getMetabolite() == pA);
118 const CReaction* pReaction2 = pModel->getReactions()[1];
119 CPPUNIT_ASSERT(pReaction2 != NULL);
120 CPPUNIT_ASSERT(pReaction2->isReversible() ==
false);
122 pKineticFunction = pReaction2->getFunction();
123 CPPUNIT_ASSERT(pKineticFunction != NULL);
124 CPPUNIT_ASSERT(pKineticFunction->getObjectName() == std::string(
"Henri-Michaelis-Menten (irreversible)"));
126 pChemEq = &pReaction2->getChemEq();
127 CPPUNIT_ASSERT(pChemEq != NULL);
128 CPPUNIT_ASSERT(pChemEq->getCompartmentNumber() == 1);
129 CPPUNIT_ASSERT(pChemEq->getSubstrates().size() == 1);
130 pElement = pChemEq->getSubstrates()[0];
131 CPPUNIT_ASSERT(pElement != NULL);
132 CPPUNIT_ASSERT(fabs(pElement->getMultiplicity() - 1.0) < 1e-3);
133 CPPUNIT_ASSERT(pElement->getMetabolite() == pA);
134 CPPUNIT_ASSERT(pChemEq->getProducts().size() == 1);
135 pElement = pChemEq->getProducts()[0];
136 CPPUNIT_ASSERT(pElement != NULL);
137 CPPUNIT_ASSERT(fabs(pElement->getMultiplicity() - 1.0) < 1e-3);
138 CPPUNIT_ASSERT(pElement->getMetabolite() == pB);
139 CPPUNIT_ASSERT(pChemEq->getModifiers().size() == 0);
140 const std::vector<std::vector<std::string> > parameterMappings = pReaction2->getParameterMappings();
141 CPPUNIT_ASSERT(parameterMappings.size() == 3);
142 CPPUNIT_ASSERT(parameterMappings[0].size() == 1);
143 const std::string parameterKey = parameterMappings[0][0];
144 CPPUNIT_ASSERT(parameterKey == pA->getKey());
148 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
149 "<sbml xmlns=\"http://www.sbml.org/sbml/level2/version3\" level=\"2\" version=\"3\">\n"
150 " <model id=\"Model_1\" name=\"New Model\">\n"
152 " <body xmlns=\"http://www.w3.org/1999/xhtml\">\n"
153 " <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 initial assignment for the global parameter that contains a reference to species A multiplied by a constant parameter.</p>\n"
154 " <p>The imported model should contain an initial assignment for the global parameter that consists of the reference to the particel number of species A. The species references in the reactions should be imported multiplied by the volume.</p>\n"
157 " <listOfFunctionDefinitions>\n"
158 " <functionDefinition id=\"function_1\" name=\"Henri-Michaelis-Menten (irreversible)\">\n"
159 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n"
162 " <ci> substrate </ci>\n"
175 " <ci> substrate </ci>\n"
180 " <ci> substrate </ci>\n"
185 " </functionDefinition>\n"
186 " </listOfFunctionDefinitions>\n"
187 " <listOfUnitDefinitions>\n"
188 " <unitDefinition id=\"volume\">\n"
190 " <unit kind=\"litre\" scale=\"-3\"/>\n"
192 " </unitDefinition>\n"
193 " <unitDefinition id=\"substance\">\n"
195 " <unit kind=\"mole\" scale=\"-3\"/>\n"
197 " </unitDefinition>\n"
198 " </listOfUnitDefinitions>\n"
199 " <listOfCompartments>\n"
200 " <compartment id=\"compartment_1\" name=\"compartment\" size=\"1\"/>\n"
201 " </listOfCompartments>\n"
203 " <species id=\"species_1\" name=\"A\" compartment=\"compartment_1\" initialAmount=\"1\" hasOnlySubstanceUnits=\"true\"/>\n"
204 " <species id=\"species_2\" name=\"B\" compartment=\"compartment_1\" initialAmount=\"1\" hasOnlySubstanceUnits=\"true\"/>\n"
205 " </listOfSpecies>\n"
206 " <listOfParameters>\n"
207 " <parameter id=\"parameter_1\" name=\"K\" value=\"0\" constant=\"true\"/>\n"
208 " <parameter id=\"parameter_2\" name=\"F\" value=\"6.0221415e20\" constant=\"true\"/>\n"
209 " </listOfParameters>\n"
210 " <listOfInitialAssignments>\n"
211 " <initialAssignment symbol=\"parameter_1\">\n"
212 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n"
215 " <ci> species_1 </ci>\n"
216 " <ci> parameter_2 </ci>\n"
219 " </initialAssignment>\n"
220 " </listOfInitialAssignments>\n"
221 " <listOfReactions>\n"
222 " <reaction id=\"reaction_1\" name=\"reaction_0\" reversible=\"false\">\n"
223 " <listOfReactants>\n"
224 " <speciesReference species=\"species_1\"/>\n"
225 " </listOfReactants>\n"
227 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n"
231 " <ci> species_1 </ci>\n"
234 " <listOfParameters>\n"
235 " <parameter id=\"k1\" value=\"0.1\"/>\n"
236 " </listOfParameters>\n"
239 " <reaction id=\"reaction_2\" name=\"reaction_1\" reversible=\"false\">\n"
240 " <listOfReactants>\n"
241 " <speciesReference species=\"species_1\"/>\n"
242 " </listOfReactants>\n"
243 " <listOfProducts>\n"
244 " <speciesReference species=\"species_2\"/>\n"
245 " </listOfProducts>\n"
247 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n"
250 " <ci> compartment_1 </ci>\n"
252 " <ci> function_1 </ci>\n"
255 " <ci> species_1 </ci>\n"
256 " <ci> compartment_1 </ci>\n"
263 " <listOfParameters>\n"
264 " <parameter id=\"Km\" value=\"0.1\"/>\n"
265 " <parameter id=\"V\" value=\"0.1\"/>\n"
266 " </listOfParameters>\n"
269 " </listOfReactions>\n"
Header file of class CExpression.
size_t getCompartmentNumber() const
Header file of class CModelEntity and CModelValue.
static CCopasiDataModel * pCOPASIDATAMODEL
void test_hasOnlySubstanceUnits()
const std::string & getObjectName() const
virtual size_t size() const
const CRegisteredObjectName & getObjectCN() const
const CCopasiVector< CChemEqElement > & getProducts() const
std::string getInitialExpression() 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 const char * MODEL_STRING
The class for handling a chemical kinetic function.
static void init(int argc, char *argv[], const bool &withGui=false)
const CModelEntity::Status & getStatus() const
CCopasiObject * ObjectFromName(const std::vector< CCopasiContainer * > &listOfContainer, const CCopasiObjectName &CN) const
CCopasiContainer * getObjectParent() const
const CExpression * getInitialExpressionPtr() const