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(pOperatorNode != NULL);
86 CPPUNIT_ASSERT(pNumberNode != NULL);
89 CPPUNIT_ASSERT(pOperatorNode != NULL);
92 CPPUNIT_ASSERT(pObjectNode != NULL);
94 CPPUNIT_ASSERT(!objectCN.empty());
95 std::vector<CCopasiContainer*> listOfContainers;
96 listOfContainers.push_back(pModel);
98 CPPUNIT_ASSERT(pObject != NULL);
100 CPPUNIT_ASSERT(pObject->
getObjectName() == std::string(
"ParticleNumber"));
103 CPPUNIT_ASSERT(pObjectNode != NULL);
104 objectCN = pObjectNode->getObjectCN();
105 CPPUNIT_ASSERT(!objectCN.empty());
107 CPPUNIT_ASSERT(pObject != NULL);
108 CPPUNIT_ASSERT(pObject->isReference() ==
true);
109 CPPUNIT_ASSERT(pObject->getObjectName() == std::string(
"Value"));
110 CPPUNIT_ASSERT(pObject->getObjectParent() == pFactor);
112 CPPUNIT_ASSERT(pModel->getReactions().size() == 2);
113 const CReaction* pReaction1 = pModel->getReactions()[0];
114 CPPUNIT_ASSERT(pReaction1 != NULL);
115 CPPUNIT_ASSERT(pReaction1->isReversible() ==
false);
117 const CFunction* pKineticFunction = pReaction1->getFunction();
118 CPPUNIT_ASSERT(pKineticFunction != NULL);
122 CPPUNIT_ASSERT(pMassAction == NULL);
123 const CChemEq* pChemEq = &pReaction1->getChemEq();
124 CPPUNIT_ASSERT(pChemEq != NULL);
128 CPPUNIT_ASSERT(pElement != NULL);
129 CPPUNIT_ASSERT(fabs(pElement->getMultiplicity() - 1.0) < 1e-3);
130 CPPUNIT_ASSERT(pElement->getMetabolite() == pA);
134 const CReaction* pReaction2 = pModel->getReactions()[1];
135 CPPUNIT_ASSERT(pReaction2 != NULL);
136 CPPUNIT_ASSERT(pReaction2->isReversible() ==
false);
138 pKineticFunction = pReaction2->getFunction();
139 CPPUNIT_ASSERT(pKineticFunction != NULL);
140 CPPUNIT_ASSERT(pKineticFunction->getObjectName() == std::string(
"Henri-Michaelis-Menten (irreversible)"));
142 pChemEq = &pReaction2->getChemEq();
143 CPPUNIT_ASSERT(pChemEq != NULL);
144 CPPUNIT_ASSERT(pChemEq->getCompartmentNumber() == 1);
145 CPPUNIT_ASSERT(pChemEq->getSubstrates().size() == 1);
146 pElement = pChemEq->getSubstrates()[0];
147 CPPUNIT_ASSERT(pElement != NULL);
148 CPPUNIT_ASSERT(fabs(pElement->getMultiplicity() - 1.0) < 1e-3);
149 CPPUNIT_ASSERT(pElement->getMetabolite() == pA);
150 CPPUNIT_ASSERT(pChemEq->getProducts().size() == 1);
151 pElement = pChemEq->getProducts()[0];
152 CPPUNIT_ASSERT(pElement != NULL);
153 CPPUNIT_ASSERT(fabs(pElement->getMultiplicity() - 1.0) < 1e-3);
154 CPPUNIT_ASSERT(pElement->getMetabolite() == pB);
155 CPPUNIT_ASSERT(pChemEq->getModifiers().size() == 0);
156 const std::vector<std::vector<std::string> > parameterMappings = pReaction2->getParameterMappings();
157 CPPUNIT_ASSERT(parameterMappings.size() == 3);
158 CPPUNIT_ASSERT(parameterMappings[0].size() == 1);
159 const std::string parameterKey = parameterMappings[0][0];
160 CPPUNIT_ASSERT(parameterKey == pA->getKey());
164 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
165 "<sbml xmlns=\"http://www.sbml.org/sbml/level2/version3\" level=\"2\" version=\"3\">\n"
167 " <body xmlns=\"http://www.w3.org/1999/xhtml\">\n"
168 " <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 assignment rule for the global parameter that contains a reference to species A multiplied by an arbitrary value.</p>\n"
169 " <p>The imported model should contain an assignment for the global parameter that consists of the reference to the particle number of species A divided by a constant and multiplied by the arbitrary value. The species references in the reactions should be imported multiplied by the volume.</p>\n"
172 " <model id=\"Model_1\" name=\"New Model\">\n"
173 " <listOfFunctionDefinitions>\n"
174 " <functionDefinition id=\"function_1\" name=\"Henri-Michaelis-Menten (irreversible)\">\n"
175 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n"
178 " <ci> substrate </ci>\n"
191 " <ci> substrate </ci>\n"
196 " <ci> substrate </ci>\n"
201 " </functionDefinition>\n"
202 " </listOfFunctionDefinitions>\n"
203 " <listOfUnitDefinitions>\n"
204 " <unitDefinition id=\"volume\">\n"
206 " <unit kind=\"litre\" scale=\"-3\"/>\n"
208 " </unitDefinition>\n"
209 " <unitDefinition id=\"substance\">\n"
211 " <unit kind=\"mole\" scale=\"-3\"/>\n"
213 " </unitDefinition>\n"
214 " </listOfUnitDefinitions>\n"
215 " <listOfCompartments>\n"
216 " <compartment id=\"compartment_1\" name=\"compartment\" size=\"1\"/>\n"
217 " </listOfCompartments>\n"
219 " <species id=\"species_1\" name=\"A\" compartment=\"compartment_1\" initialAmount=\"1\" hasOnlySubstanceUnits=\"true\"/>\n"
220 " <species id=\"species_2\" name=\"B\" compartment=\"compartment_1\" initialAmount=\"1\" hasOnlySubstanceUnits=\"true\"/>\n"
221 " </listOfSpecies>\n"
222 " <listOfParameters>\n"
223 " <parameter id=\"parameter_1\" name=\"K\" value=\"0\" constant=\"false\"/>\n"
224 " </listOfParameters>\n"
226 " <rateRule variable=\"parameter_1\">\n"
227 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n"
230 " <ci> species_1 </ci>\n"
231 " <cn> 3.0221415e20 </cn>\n"
236 " <listOfReactions>\n"
237 " <reaction id=\"reaction_1\" name=\"reaction_0\" reversible=\"false\">\n"
238 " <listOfReactants>\n"
239 " <speciesReference species=\"species_1\"/>\n"
240 " </listOfReactants>\n"
242 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n"
246 " <ci> species_1 </ci>\n"
249 " <listOfParameters>\n"
250 " <parameter id=\"k1\" value=\"0.1\"/>\n"
251 " </listOfParameters>\n"
254 " <reaction id=\"reaction_2\" name=\"reaction_1\" reversible=\"false\">\n"
255 " <listOfReactants>\n"
256 " <speciesReference species=\"species_1\"/>\n"
257 " </listOfReactants>\n"
258 " <listOfProducts>\n"
259 " <speciesReference species=\"species_2\"/>\n"
260 " </listOfProducts>\n"
262 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n"
265 " <ci> compartment_1 </ci>\n"
267 " <ci> function_1 </ci>\n"
270 " <ci> species_1 </ci>\n"
271 " <ci> compartment_1 </ci>\n"
278 " <listOfParameters>\n"
279 " <parameter id=\"Km\" value=\"0.1\"/>\n"
280 " <parameter id=\"V\" value=\"0.1\"/>\n"
281 " </listOfParameters>\n"
284 " </listOfReactions>\n"
const CExpression * getExpressionPtr() const
Header file of class CExpression.
static CCopasiDataModel * pCOPASIDATAMODEL
size_t getCompartmentNumber() const
Header file of class CModelEntity and CModelValue.
const std::string & getObjectName() const
virtual size_t size() const
static const char * MODEL_STRING
const Type & getType() const
const CCopasiVector< CChemEqElement > & getProducts() const
const CCopasiVector< CChemEqElement > & getSubstrates() const
static CCopasiDataModel * addDatamodel()
static Type subType(const Type &type)
const CCopasiVector< CChemEqElement > & getModifiers() const
bool importSBMLFromString(const std::string &sbmlDocumentText, CProcessReport *pImportHandler=NULL, const bool &deleteOldData=true)
The class for handling a chemical kinetic function.
static void init(int argc, char *argv[], const bool &withGui=false)
const CModelEntity::Status & getStatus() const
CCopasiNode< Data > * getChild()
CCopasiObject * ObjectFromName(const std::vector< CCopasiContainer * > &listOfContainer, const CCopasiObjectName &CN) const
CCopasiContainer * getObjectParent() const
void test_hasOnlySubstanceUnits()