22 #include "utilities.hpp"
32 #include "sbml/math/ASTNode.h"
33 #include "sbml/SBMLDocument.h"
34 #include "sbml/Model.h"
35 #include "sbml/Compartment.h"
36 #include "sbml/Species.h"
37 #include "sbml/Parameter.h"
38 #include "sbml/Rule.h"
39 #include "sbml/UnitDefinition.h"
40 #include "sbml/Unit.h"
41 #include "sbml/UnitKind.h"
42 #include "sbml/Event.h"
43 #include "sbml/Trigger.h"
44 #include "sbml/Delay.h"
45 #include "sbml/EventAssignment.h"
74 CPPUNIT_ASSERT(pModel != NULL);
75 CPPUNIT_ASSERT(pModel->getQuantityUnitEnum() ==
CModel::mMol);
76 CPPUNIT_ASSERT(pModel->getVolumeUnitEnum() ==
CModel::ml);
77 CPPUNIT_ASSERT(pModel->getTimeUnitEnum() ==
CModel::s);
78 CPPUNIT_ASSERT(pModel->getCompartments().size() == 1);
79 const CCompartment* pCompartment = pModel->getCompartments()[0];
80 CPPUNIT_ASSERT(pCompartment != NULL);
82 CPPUNIT_ASSERT(pModel->getMetabolites().size() == 2);
83 CMetab* pA = pModel->getMetabolites()[0];
84 CPPUNIT_ASSERT(pA != NULL);
86 const CMetab* pB = pModel->getMetabolites()[1];
87 CPPUNIT_ASSERT(pB != NULL);
89 CPPUNIT_ASSERT(pModel->getModelValues().size() == 1);
90 const CModelValue* pModelValue = pModel->getModelValues()[0];
91 CPPUNIT_ASSERT(pModelValue != NULL);
96 CPPUNIT_ASSERT(pNode != NULL);
100 CPPUNIT_ASSERT(pNode != NULL);
103 CPPUNIT_ASSERT(pObjectNode != NULL);
105 CPPUNIT_ASSERT(!objectCN.empty());
106 std::vector<CCopasiContainer*> listOfContainers;
107 listOfContainers.push_back(pModel);
109 CPPUNIT_ASSERT(pObject != NULL);
111 CPPUNIT_ASSERT(pObject->
getObjectName() == std::string(
"Value"));
114 CPPUNIT_ASSERT(pNode != NULL);
117 CPPUNIT_ASSERT(pObjectNode != NULL);
119 CPPUNIT_ASSERT(!objectCN.empty());
121 CPPUNIT_ASSERT(pObject != NULL);
122 CPPUNIT_ASSERT(pObject->isReference() ==
true);
123 CPPUNIT_ASSERT(pObject->getObjectName() == std::string(
"Volume"));
124 CPPUNIT_ASSERT(pObject->getObjectParent() == pCompartment);
128 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
129 "<sbml xmlns=\"http://www.sbml.org/sbml/level2/version3\" level=\"2\" version=\"3\">"
130 " <model id=\"Model_1\" name=\"New Model\">"
132 " <body xmlns=\"http://www.w3.org/1999/xhtml\">"
133 " <p>Model with fixed compartment volume, two species where one has the hasOnlySubstanceUnits flag set to true. The units are set to ml and mMol. There is an assignment rule for the species with the hasOnlySubstanceUnits flag set to true.</p>"
134 " <p>The imported model should contain an assignment for the species that consists of the original expression divided by the volume of the compartment.</p>"
137 " <listOfUnitDefinitions>"
138 " <unitDefinition id=\"volume\">"
140 " <unit kind=\"litre\" scale=\"-3\"/>"
143 " <unitDefinition id=\"substance\">"
145 " <unit kind=\"mole\" scale=\"-3\"/>"
148 " </listOfUnitDefinitions>"
149 " <listOfCompartments>"
150 " <compartment id=\"compartment_1\" name=\"compartment\" size=\"1\"/>"
151 " </listOfCompartments>"
153 " <species id=\"species_1\" name=\"A\" compartment=\"compartment_1\" initialConcentration=\"1\" hasOnlySubstanceUnits=\"true\"/>"
154 " <species id=\"species_2\" name=\"B\" compartment=\"compartment_1\" initialConcentration=\"1\"/>"
156 " <listOfParameters>"
157 " <parameter id=\"parameter_1\" name=\"K\" value=\"0\" constant=\"false\"/>"
158 " </listOfParameters>"
160 " <assignmentRule variable=\"species_1\">"
161 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
162 " <ci> parameter_1 </ci>"
175 CPPUNIT_ASSERT(pModel != NULL);
176 CPPUNIT_ASSERT(pModel->getQuantityUnitEnum() ==
CModel::mMol);
177 CPPUNIT_ASSERT(pModel->getVolumeUnitEnum() ==
CModel::ml);
178 CPPUNIT_ASSERT(pModel->getTimeUnitEnum() ==
CModel::s);
179 CPPUNIT_ASSERT(pModel->getCompartments().size() == 1);
180 const CCompartment* pCompartment = pModel->getCompartments()[0];
181 CPPUNIT_ASSERT(pCompartment != NULL);
183 CPPUNIT_ASSERT(pModel->getMetabolites().size() == 2);
184 CMetab* pA = pModel->getMetabolites()[0];
185 CPPUNIT_ASSERT(pA != NULL);
187 const CMetab* pB = pModel->getMetabolites()[1];
188 CPPUNIT_ASSERT(pB != NULL);
190 CPPUNIT_ASSERT(pModel->getModelValues().size() == 1);
191 const CModelValue* pModelValue = pModel->getModelValues()[0];
192 CPPUNIT_ASSERT(pModelValue != NULL);
197 CPPUNIT_ASSERT(pNode != NULL);
200 CPPUNIT_ASSERT(pObjectNode != NULL);
202 CPPUNIT_ASSERT(!objectCN.empty());
203 std::vector<CCopasiContainer*> listOfContainers;
204 listOfContainers.push_back(pModel);
206 CPPUNIT_ASSERT(pObject != NULL);
208 CPPUNIT_ASSERT(pObject->
getObjectName() == std::string(
"Value"));
213 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
214 "<sbml xmlns=\"http://www.sbml.org/sbml/level2/version3\" level=\"2\" version=\"3\">"
215 " <model id=\"Model_1\" name=\"New Model\">"
217 " <body xmlns=\"http://www.w3.org/1999/xhtml\">"
218 " <p>Model with fixed compartment volume, two species where both have the hasOnlySubstanceUnits flag set to false. The units are set to ml and mMol. There is an assignment rule for the first species.</p>"
219 " <p>The imported model should contain an assignment for the species that consists of the original expression.</p>"
222 " <listOfUnitDefinitions>"
223 " <unitDefinition id=\"volume\">"
225 " <unit kind=\"litre\" scale=\"-3\"/>"
228 " <unitDefinition id=\"substance\">"
230 " <unit kind=\"mole\" scale=\"-3\"/>"
233 " </listOfUnitDefinitions>"
234 " <listOfCompartments>"
235 " <compartment id=\"compartment_1\" name=\"compartment\" size=\"1\"/>"
236 " </listOfCompartments>"
238 " <species id=\"species_1\" name=\"A\" compartment=\"compartment_1\" initialConcentration=\"1\" />"
239 " <species id=\"species_2\" name=\"B\" compartment=\"compartment_1\" initialConcentration=\"1\"/>"
241 " <listOfParameters>"
242 " <parameter id=\"parameter_1\" name=\"K\" value=\"0\" constant=\"false\"/>"
243 " </listOfParameters>"
245 " <assignmentRule variable=\"species_1\">"
246 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
247 " <ci> parameter_1 </ci>"
260 CPPUNIT_ASSERT(pModel != NULL);
262 CPPUNIT_ASSERT(pModel->getVolumeUnitEnum() ==
CModel::ml);
263 CPPUNIT_ASSERT(pModel->getTimeUnitEnum() ==
CModel::s);
264 CPPUNIT_ASSERT(pModel->getCompartments().size() == 1);
265 const CCompartment* pCompartment = pModel->getCompartments()[0];
266 CPPUNIT_ASSERT(pCompartment != NULL);
268 CPPUNIT_ASSERT(pModel->getMetabolites().size() == 2);
269 CMetab* pA = pModel->getMetabolites()[0];
270 CPPUNIT_ASSERT(pA != NULL);
272 const CMetab* pB = pModel->getMetabolites()[1];
273 CPPUNIT_ASSERT(pB != NULL);
275 CPPUNIT_ASSERT(pModel->getModelValues().size() == 1);
276 const CModelValue* pModelValue = pModel->getModelValues()[0];
277 CPPUNIT_ASSERT(pModelValue != NULL);
282 CPPUNIT_ASSERT(pNode != NULL);
285 CPPUNIT_ASSERT(pObjectNode != NULL);
287 CPPUNIT_ASSERT(!objectCN.empty());
288 std::vector<CCopasiContainer*> listOfContainers;
289 listOfContainers.push_back(pModel);
291 CPPUNIT_ASSERT(pObject != NULL);
293 CPPUNIT_ASSERT(pObject->
getObjectName() == std::string(
"Value"));
298 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
299 "<sbml xmlns=\"http://www.sbml.org/sbml/level2/version3\" level=\"2\" version=\"3\">"
300 " <model id=\"Model_1\" name=\"New Model\">"
302 " <body xmlns=\"http://www.w3.org/1999/xhtml\">"
303 " <p>Model with fixed compartment volume, two species where both have the hasOnlySubstanceUnits flag set to false. The units are set to ml and item. There is an assignment rule for the first species.</p>"
304 " <p>The imported model should contain an assignment for the species that consists of the original expression.</p>"
307 " <listOfUnitDefinitions>"
308 " <unitDefinition id=\"volume\">"
310 " <unit kind=\"litre\" scale=\"-3\"/>"
313 " <unitDefinition id=\"substance\">"
315 " <unit kind=\"item\" />"
318 " </listOfUnitDefinitions>"
319 " <listOfCompartments>"
320 " <compartment id=\"compartment_1\" name=\"compartment\" size=\"1\"/>"
321 " </listOfCompartments>"
323 " <species id=\"species_1\" name=\"A\" compartment=\"compartment_1\" initialConcentration=\"1\" />"
324 " <species id=\"species_2\" name=\"B\" compartment=\"compartment_1\" initialConcentration=\"1\"/>"
326 " <listOfParameters>"
327 " <parameter id=\"parameter_1\" name=\"K\" value=\"0\" constant=\"false\"/>"
328 " </listOfParameters>"
330 " <assignmentRule variable=\"species_1\">"
331 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
332 " <ci> parameter_1 </ci>"
345 CPPUNIT_ASSERT(pModel != NULL);
347 CPPUNIT_ASSERT(pModel->getVolumeUnitEnum() ==
CModel::ml);
348 CPPUNIT_ASSERT(pModel->getTimeUnitEnum() ==
CModel::s);
349 CPPUNIT_ASSERT(pModel->getCompartments().size() == 1);
350 const CCompartment* pCompartment = pModel->getCompartments()[0];
351 CPPUNIT_ASSERT(pCompartment != NULL);
353 CPPUNIT_ASSERT(pModel->getMetabolites().size() == 2);
354 CMetab* pA = pModel->getMetabolites()[0];
355 CPPUNIT_ASSERT(pA != NULL);
357 const CMetab* pB = pModel->getMetabolites()[1];
358 CPPUNIT_ASSERT(pB != NULL);
360 CPPUNIT_ASSERT(pModel->getModelValues().size() == 1);
361 const CModelValue* pModelValue = pModel->getModelValues()[0];
362 CPPUNIT_ASSERT(pModelValue != NULL);
367 CPPUNIT_ASSERT(pNode != NULL);
371 CPPUNIT_ASSERT(pNode != NULL);
374 CPPUNIT_ASSERT(pObjectNode != NULL);
376 CPPUNIT_ASSERT(!objectCN.empty());
377 std::vector<CCopasiContainer*> listOfContainers;
378 listOfContainers.push_back(pModel);
380 CPPUNIT_ASSERT(pObject != NULL);
382 CPPUNIT_ASSERT(pObject->
getObjectName() == std::string(
"Value"));
385 CPPUNIT_ASSERT(pNode != NULL);
388 CPPUNIT_ASSERT(pObjectNode != NULL);
390 CPPUNIT_ASSERT(!objectCN.empty());
392 CPPUNIT_ASSERT(pObject != NULL);
393 CPPUNIT_ASSERT(pObject->isReference() ==
true);
394 CPPUNIT_ASSERT(pObject->getObjectName() == std::string(
"Volume"));
395 CPPUNIT_ASSERT(pObject->getObjectParent() == pCompartment);
399 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
400 "<sbml xmlns=\"http://www.sbml.org/sbml/level2/version3\" level=\"2\" version=\"3\">"
401 " <model id=\"Model_1\" name=\"New Model\">"
403 " <body xmlns=\"http://www.w3.org/1999/xhtml\">"
404 " <p>Model with fixed compartment volume, two species where one has the hasOnlySubstanceUnits flag set to true. The units are set to ml and item. There is an assignment rule for the species with the hasOnlySubstanceUnits flag set to true.</p>"
405 " <p>The imported model should contain an assignment for the species that consists of the original expression divided by the volume of the compartment.</p>"
408 " <listOfUnitDefinitions>"
409 " <unitDefinition id=\"volume\">"
411 " <unit kind=\"litre\" scale=\"-3\"/>"
414 " <unitDefinition id=\"substance\">"
416 " <unit kind=\"item\" />"
419 " </listOfUnitDefinitions>"
420 " <listOfCompartments>"
421 " <compartment id=\"compartment_1\" name=\"compartment\" size=\"1\"/>"
422 " </listOfCompartments>"
424 " <species id=\"species_1\" name=\"A\" compartment=\"compartment_1\" initialConcentration=\"1\" hasOnlySubstanceUnits=\"true\" />"
425 " <species id=\"species_2\" name=\"B\" compartment=\"compartment_1\" initialConcentration=\"1\"/>"
427 " <listOfParameters>"
428 " <parameter id=\"parameter_1\" name=\"K\" value=\"0\" constant=\"false\"/>"
429 " </listOfParameters>"
431 " <assignmentRule variable=\"species_1\">"
432 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
433 " <ci> parameter_1 </ci>"
446 CPPUNIT_ASSERT(pModel != NULL);
447 CPPUNIT_ASSERT(pModel->getQuantityUnitEnum() ==
CModel::mMol);
448 CPPUNIT_ASSERT(pModel->getVolumeUnitEnum() ==
CModel::ml);
449 CPPUNIT_ASSERT(pModel->getTimeUnitEnum() ==
CModel::s);
450 CPPUNIT_ASSERT(pModel->getCompartments().size() == 1);
451 const CCompartment* pCompartment = pModel->getCompartments()[0];
452 CPPUNIT_ASSERT(pCompartment != NULL);
454 CPPUNIT_ASSERT(pModel->getMetabolites().size() == 2);
455 CMetab* pA = pModel->getMetabolites()[0];
456 CPPUNIT_ASSERT(pA != NULL);
458 const CMetab* pB = pModel->getMetabolites()[1];
459 CPPUNIT_ASSERT(pB != NULL);
461 CPPUNIT_ASSERT(pModel->getModelValues().size() == 1);
462 const CModelValue* pModelValue = pModel->getModelValues()[0];
463 CPPUNIT_ASSERT(pModelValue != NULL);
465 CPPUNIT_ASSERT(pModel->getEvents().size() == 1);
466 const CEvent* pEvent = pModel->getEvents()[0];
467 CPPUNIT_ASSERT(pEvent != NULL);
469 const CExpression* pExpr = pEvent->getTriggerExpressionPtr();
470 CPPUNIT_ASSERT(pExpr != NULL);
472 CPPUNIT_ASSERT(pNode != NULL);
476 CPPUNIT_ASSERT(pNode != NULL);
479 CPPUNIT_ASSERT(pObjectNode != NULL);
481 CPPUNIT_ASSERT(!objectCN.empty());
482 std::vector<CCopasiContainer*> listOfContainers;
483 listOfContainers.push_back(pModel);
485 CPPUNIT_ASSERT(pObject != NULL);
487 CPPUNIT_ASSERT(pObject->
getObjectName() == std::string(
"Time"));
490 CPPUNIT_ASSERT(pNode != NULL);
493 CPPUNIT_ASSERT(pNumberNode != NULL);
494 CPPUNIT_ASSERT(fabs((pNumberNode->
getValue() - 2.0) / 2.0) < 1e-6);
496 const CExpression* pExpression = pEvent->getDelayExpressionPtr();
497 CPPUNIT_ASSERT(pExpression == NULL);
498 CPPUNIT_ASSERT(pEvent->getAssignments().size() == 1);
500 std::string key = pEvent->getAssignments()[0]->getTargetKey();
501 CPPUNIT_ASSERT(key == pA->getKey());
502 pExpression = pEvent->getAssignments()[0]->getExpressionPtr();
503 CPPUNIT_ASSERT(pExpression != NULL);
504 pNode = pExpression->getRoot();
505 CPPUNIT_ASSERT(pNode != NULL);
509 CPPUNIT_ASSERT(pNode != NULL);
512 CPPUNIT_ASSERT(pObjectNode != NULL);
514 CPPUNIT_ASSERT(!objectCN.empty());
516 CPPUNIT_ASSERT(pObject != NULL);
517 CPPUNIT_ASSERT(pObject->isReference() ==
true);
518 CPPUNIT_ASSERT(pObject->getObjectName() == std::string(
"Value"));
519 CPPUNIT_ASSERT(pObject->getObjectParent() == pModelValue);
521 CPPUNIT_ASSERT(pNode != NULL);
524 CPPUNIT_ASSERT(pObjectNode != NULL);
526 CPPUNIT_ASSERT(!objectCN.empty());
528 CPPUNIT_ASSERT(pObject != NULL);
529 CPPUNIT_ASSERT(pObject->isReference() ==
true);
530 CPPUNIT_ASSERT(pObject->getObjectName() == std::string(
"Volume"));
531 CPPUNIT_ASSERT(pObject->getObjectParent() == pCompartment);
535 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
536 "<sbml xmlns=\"http://www.sbml.org/sbml/level2/version3\" level=\"2\" version=\"3\">"
537 " <model id=\"Model_1\" name=\"New Model\">"
539 " <body xmlns=\"http://www.w3.org/1999/xhtml\">"
540 " <p>Model with fixed compartment volume, two species where one has the hasOnlySubstanceUnits flag set to true. The units are set to ml and mMol. There is an event assignment for the species with the hasOnlySubstanceUnits flag set to true.</p>"
541 " <p>The imported model should contain an event assignment for the species that consists of the original expression divided by the volume of the compartment.</p>"
544 " <listOfUnitDefinitions>"
545 " <unitDefinition id=\"volume\">"
547 " <unit kind=\"litre\" scale=\"-3\"/>"
550 " <unitDefinition id=\"substance\">"
552 " <unit kind=\"mole\" scale=\"-3\"/>"
555 " </listOfUnitDefinitions>"
556 " <listOfCompartments>"
557 " <compartment id=\"compartment_1\" name=\"compartment\" size=\"1\"/>"
558 " </listOfCompartments>"
560 " <species id=\"species_1\" name=\"A\" compartment=\"compartment_1\" initialConcentration=\"1\" hasOnlySubstanceUnits=\"true\"/>"
561 " <species id=\"species_2\" name=\"B\" compartment=\"compartment_1\" initialConcentration=\"1\"/>"
563 " <listOfParameters>"
564 " <parameter id=\"parameter_1\" name=\"K\" value=\"0\" constant=\"false\"/>"
565 " </listOfParameters>"
569 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
572 " <csymbol encoding=\"text\" definitionURL=\"http://www.sbml.org/sbml/symbols/time\"> time </csymbol>"
577 " <listOfEventAssignments>"
578 " <eventAssignment variable=\"species_1\">"
579 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
580 " <ci> parameter_1 </ci>"
582 " </eventAssignment>"
583 " </listOfEventAssignments>"
595 CPPUNIT_ASSERT(pModel != NULL);
596 CPPUNIT_ASSERT(pModel->getQuantityUnitEnum() ==
CModel::mMol);
597 CPPUNIT_ASSERT(pModel->getVolumeUnitEnum() ==
CModel::ml);
598 CPPUNIT_ASSERT(pModel->getTimeUnitEnum() ==
CModel::s);
599 CPPUNIT_ASSERT(pModel->getCompartments().size() == 1);
600 const CCompartment* pCompartment = pModel->getCompartments()[0];
601 CPPUNIT_ASSERT(pCompartment != NULL);
603 CPPUNIT_ASSERT(pModel->getMetabolites().size() == 2);
604 CMetab* pA = pModel->getMetabolites()[0];
605 CPPUNIT_ASSERT(pA != NULL);
607 const CMetab* pB = pModel->getMetabolites()[1];
608 CPPUNIT_ASSERT(pB != NULL);
610 CPPUNIT_ASSERT(pModel->getModelValues().size() == 1);
611 const CModelValue* pModelValue = pModel->getModelValues()[0];
612 CPPUNIT_ASSERT(pModelValue != NULL);
614 CPPUNIT_ASSERT(pModel->getEvents().size() == 1);
615 const CEvent* pEvent = pModel->getEvents()[0];
616 CPPUNIT_ASSERT(pEvent != NULL);
618 const CExpression* pExpr = pEvent->getTriggerExpressionPtr();
619 CPPUNIT_ASSERT(pExpr != NULL);
621 CPPUNIT_ASSERT(pNode != NULL);
625 CPPUNIT_ASSERT(pNode != NULL);
628 CPPUNIT_ASSERT(pObjectNode != NULL);
630 CPPUNIT_ASSERT(!objectCN.empty());
631 std::vector<CCopasiContainer*> listOfContainers;
632 listOfContainers.push_back(pModel);
634 CPPUNIT_ASSERT(pObject != NULL);
636 CPPUNIT_ASSERT(pObject->
getObjectName() == std::string(
"Time"));
639 CPPUNIT_ASSERT(pNode != NULL);
642 CPPUNIT_ASSERT(pNumberNode != NULL);
643 CPPUNIT_ASSERT(fabs((pNumberNode->
getValue() - 2.0) / 2.0) < 1e-6);
645 const CExpression* pExpression = pEvent->getDelayExpressionPtr();
646 CPPUNIT_ASSERT(pExpression == NULL);
647 CPPUNIT_ASSERT(pEvent->getAssignments().size() == 1);
649 std::string key = pEvent->getAssignments()[0]->getTargetKey();
650 CPPUNIT_ASSERT(key == pA->getKey());
651 pExpression = pEvent->getAssignments()[0]->getExpressionPtr();
652 CPPUNIT_ASSERT(pExpression != NULL);
653 pNode = pExpression->getRoot();
654 CPPUNIT_ASSERT(pNode != NULL);
657 CPPUNIT_ASSERT(pObjectNode != NULL);
659 CPPUNIT_ASSERT(!objectCN.empty());
661 CPPUNIT_ASSERT(pObject != NULL);
662 CPPUNIT_ASSERT(pObject->isReference() ==
true);
663 CPPUNIT_ASSERT(pObject->getObjectName() == std::string(
"Value"));
664 CPPUNIT_ASSERT(pObject->getObjectParent() == pModelValue);
668 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
669 "<sbml xmlns=\"http://www.sbml.org/sbml/level2/version3\" level=\"2\" version=\"3\">"
670 " <model id=\"Model_1\" name=\"New Model\">"
672 " <body xmlns=\"http://www.w3.org/1999/xhtml\">"
673 " <p>Model with fixed compartment volume, two species where both have the hasOnlySubstanceUnits flag set to false. The units are set to ml and mMol. There is an event assignment for the first species.</p>"
674 " <p>The imported model should contain an event assignment for the species that consists of the original expression.</p>"
677 " <listOfUnitDefinitions>"
678 " <unitDefinition id=\"volume\">"
680 " <unit kind=\"litre\" scale=\"-3\"/>"
683 " <unitDefinition id=\"substance\">"
685 " <unit kind=\"mole\" scale=\"-3\"/>"
688 " </listOfUnitDefinitions>"
689 " <listOfCompartments>"
690 " <compartment id=\"compartment_1\" name=\"compartment\" size=\"1\"/>"
691 " </listOfCompartments>"
693 " <species id=\"species_1\" name=\"A\" compartment=\"compartment_1\" initialConcentration=\"1\" />"
694 " <species id=\"species_2\" name=\"B\" compartment=\"compartment_1\" initialConcentration=\"1\"/>"
696 " <listOfParameters>"
697 " <parameter id=\"parameter_1\" name=\"K\" value=\"0\" constant=\"false\"/>"
698 " </listOfParameters>"
702 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
705 " <csymbol encoding=\"text\" definitionURL=\"http://www.sbml.org/sbml/symbols/time\"> time </csymbol>"
710 " <listOfEventAssignments>"
711 " <eventAssignment variable=\"species_1\">"
712 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
713 " <ci> parameter_1 </ci>"
715 " </eventAssignment>"
716 " </listOfEventAssignments>"
728 CPPUNIT_ASSERT(pModel != NULL);
730 CPPUNIT_ASSERT(pModel->getVolumeUnitEnum() ==
CModel::ml);
731 CPPUNIT_ASSERT(pModel->getTimeUnitEnum() ==
CModel::s);
732 CPPUNIT_ASSERT(pModel->getCompartments().size() == 1);
733 const CCompartment* pCompartment = pModel->getCompartments()[0];
734 CPPUNIT_ASSERT(pCompartment != NULL);
736 CPPUNIT_ASSERT(pModel->getMetabolites().size() == 2);
737 CMetab* pA = pModel->getMetabolites()[0];
738 CPPUNIT_ASSERT(pA != NULL);
740 const CMetab* pB = pModel->getMetabolites()[1];
741 CPPUNIT_ASSERT(pB != NULL);
743 CPPUNIT_ASSERT(pModel->getModelValues().size() == 1);
744 const CModelValue* pModelValue = pModel->getModelValues()[0];
745 CPPUNIT_ASSERT(pModelValue != NULL);
747 CPPUNIT_ASSERT(pModel->getEvents().size() == 1);
748 const CEvent* pEvent = pModel->getEvents()[0];
749 CPPUNIT_ASSERT(pEvent != NULL);
751 const CExpression* pExpr = pEvent->getTriggerExpressionPtr();
752 CPPUNIT_ASSERT(pExpr != NULL);
754 CPPUNIT_ASSERT(pNode != NULL);
758 CPPUNIT_ASSERT(pNode != NULL);
761 CPPUNIT_ASSERT(pObjectNode != NULL);
763 CPPUNIT_ASSERT(!objectCN.empty());
764 std::vector<CCopasiContainer*> listOfContainers;
765 listOfContainers.push_back(pModel);
767 CPPUNIT_ASSERT(pObject != NULL);
769 CPPUNIT_ASSERT(pObject->
getObjectName() == std::string(
"Time"));
772 CPPUNIT_ASSERT(pNode != NULL);
775 CPPUNIT_ASSERT(pNumberNode != NULL);
776 CPPUNIT_ASSERT(fabs((pNumberNode->
getValue() - 2.0) / 2.0) < 1e-6);
778 const CExpression* pExpression = pEvent->getDelayExpressionPtr();
779 CPPUNIT_ASSERT(pExpression == NULL);
780 CPPUNIT_ASSERT(pEvent->getAssignments().size() == 1);
782 std::string key = pEvent->getAssignments()[0]->getTargetKey();
783 CPPUNIT_ASSERT(key == pA->getKey());
784 pExpression = pEvent->getAssignments()[0]->getExpressionPtr();
785 CPPUNIT_ASSERT(pExpression != NULL);
786 pNode = pExpression->getRoot();
787 CPPUNIT_ASSERT(pNode != NULL);
790 CPPUNIT_ASSERT(pObjectNode != NULL);
792 CPPUNIT_ASSERT(!objectCN.empty());
794 CPPUNIT_ASSERT(pObject != NULL);
795 CPPUNIT_ASSERT(pObject->isReference() ==
true);
796 CPPUNIT_ASSERT(pObject->getObjectName() == std::string(
"Value"));
797 CPPUNIT_ASSERT(pObject->getObjectParent() == pModelValue);
801 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
802 "<sbml xmlns=\"http://www.sbml.org/sbml/level2/version3\" level=\"2\" version=\"3\">"
803 " <model id=\"Model_1\" name=\"New Model\">"
805 " <body xmlns=\"http://www.w3.org/1999/xhtml\">"
806 " <p>Model with fixed compartment volume, two species where both have the hasOnlySubstanceUnits flag set to false. The units are set to ml and item. There is an event assignment for the first species.</p>"
807 " <p>The imported model should contain an event assignment for the species that consists of the original expression.</p>"
810 " <listOfUnitDefinitions>"
811 " <unitDefinition id=\"volume\">"
813 " <unit kind=\"litre\" scale=\"-3\"/>"
816 " <unitDefinition id=\"substance\">"
818 " <unit kind=\"item\" />"
821 " </listOfUnitDefinitions>"
822 " <listOfCompartments>"
823 " <compartment id=\"compartment_1\" name=\"compartment\" size=\"1\"/>"
824 " </listOfCompartments>"
826 " <species id=\"species_1\" name=\"A\" compartment=\"compartment_1\" initialConcentration=\"1\" />"
827 " <species id=\"species_2\" name=\"B\" compartment=\"compartment_1\" initialConcentration=\"1\"/>"
829 " <listOfParameters>"
830 " <parameter id=\"parameter_1\" name=\"K\" value=\"0\" constant=\"false\"/>"
831 " </listOfParameters>"
835 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
838 " <csymbol encoding=\"text\" definitionURL=\"http://www.sbml.org/sbml/symbols/time\"> time </csymbol>"
843 " <listOfEventAssignments>"
844 " <eventAssignment variable=\"species_1\">"
845 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
846 " <ci> parameter_1 </ci>"
848 " </eventAssignment>"
849 " </listOfEventAssignments>"
861 CPPUNIT_ASSERT(pModel != NULL);
863 CPPUNIT_ASSERT(pModel->getVolumeUnitEnum() ==
CModel::ml);
864 CPPUNIT_ASSERT(pModel->getTimeUnitEnum() ==
CModel::s);
865 CPPUNIT_ASSERT(pModel->getCompartments().size() == 1);
866 const CCompartment* pCompartment = pModel->getCompartments()[0];
867 CPPUNIT_ASSERT(pCompartment != NULL);
869 CPPUNIT_ASSERT(pModel->getMetabolites().size() == 2);
870 CMetab* pA = pModel->getMetabolites()[0];
871 CPPUNIT_ASSERT(pA != NULL);
873 const CMetab* pB = pModel->getMetabolites()[1];
874 CPPUNIT_ASSERT(pB != NULL);
876 CPPUNIT_ASSERT(pModel->getModelValues().size() == 1);
877 const CModelValue* pModelValue = pModel->getModelValues()[0];
878 CPPUNIT_ASSERT(pModelValue != NULL);
880 CPPUNIT_ASSERT(pModel->getEvents().size() == 1);
881 const CEvent* pEvent = pModel->getEvents()[0];
882 CPPUNIT_ASSERT(pEvent != NULL);
884 const CExpression* pExpr = pEvent->getTriggerExpressionPtr();
885 CPPUNIT_ASSERT(pExpr != NULL);
887 CPPUNIT_ASSERT(pNode != NULL);
891 CPPUNIT_ASSERT(pNode != NULL);
894 CPPUNIT_ASSERT(pObjectNode != NULL);
896 CPPUNIT_ASSERT(!objectCN.empty());
897 std::vector<CCopasiContainer*> listOfContainers;
898 listOfContainers.push_back(pModel);
900 CPPUNIT_ASSERT(pObject != NULL);
902 CPPUNIT_ASSERT(pObject->
getObjectName() == std::string(
"Time"));
905 CPPUNIT_ASSERT(pNode != NULL);
908 CPPUNIT_ASSERT(pNumberNode != NULL);
909 CPPUNIT_ASSERT(fabs((pNumberNode->
getValue() - 2.0) / 2.0) < 1e-6);
911 const CExpression* pExpression = pEvent->getDelayExpressionPtr();
912 CPPUNIT_ASSERT(pExpression == NULL);
913 CPPUNIT_ASSERT(pEvent->getAssignments().size() == 1);
915 std::string key = pEvent->getAssignments()[0]->getTargetKey();
916 CPPUNIT_ASSERT(key == pA->getKey());
917 pExpression = pEvent->getAssignments()[0]->getExpressionPtr();
918 CPPUNIT_ASSERT(pExpression != NULL);
919 pNode = pExpression->getRoot();
920 CPPUNIT_ASSERT(pNode != NULL);
924 CPPUNIT_ASSERT(pNode != NULL);
927 CPPUNIT_ASSERT(pObjectNode != NULL);
929 CPPUNIT_ASSERT(!objectCN.empty());
931 CPPUNIT_ASSERT(pObject != NULL);
932 CPPUNIT_ASSERT(pObject->isReference() ==
true);
933 CPPUNIT_ASSERT(pObject->getObjectName() == std::string(
"Value"));
934 CPPUNIT_ASSERT(pObject->getObjectParent() == pModelValue);
936 CPPUNIT_ASSERT(pNode != NULL);
939 CPPUNIT_ASSERT(pObjectNode != NULL);
941 CPPUNIT_ASSERT(!objectCN.empty());
943 CPPUNIT_ASSERT(pObject != NULL);
944 CPPUNIT_ASSERT(pObject->isReference() ==
true);
945 CPPUNIT_ASSERT(pObject->getObjectName() == std::string(
"Volume"));
946 CPPUNIT_ASSERT(pObject->getObjectParent() == pCompartment);
950 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
951 "<sbml xmlns=\"http://www.sbml.org/sbml/level2/version3\" level=\"2\" version=\"3\">"
952 " <model id=\"Model_1\" name=\"New Model\">"
954 " <body xmlns=\"http://www.w3.org/1999/xhtml\">"
955 " <p>Model with fixed compartment volume, two species where one has the hasOnlySubstanceUnits flag set to true. The units are set to ml and item. There is an event assignment for the species with the hasOnlySubstanceUnits flag set to true.</p>"
956 " <p>The imported model should contain an event assignment for the species that consists of the original expression divided by the volume of the compartment.</p>"
959 " <listOfUnitDefinitions>"
960 " <unitDefinition id=\"volume\">"
962 " <unit kind=\"litre\" scale=\"-3\"/>"
965 " <unitDefinition id=\"substance\">"
967 " <unit kind=\"item\" />"
970 " </listOfUnitDefinitions>"
971 " <listOfCompartments>"
972 " <compartment id=\"compartment_1\" name=\"compartment\" size=\"1\"/>"
973 " </listOfCompartments>"
975 " <species id=\"species_1\" name=\"A\" compartment=\"compartment_1\" initialConcentration=\"1\" hasOnlySubstanceUnits=\"true\" />"
976 " <species id=\"species_2\" name=\"B\" compartment=\"compartment_1\" initialConcentration=\"1\"/>"
978 " <listOfParameters>"
979 " <parameter id=\"parameter_1\" name=\"K\" value=\"0\" constant=\"false\"/>"
980 " </listOfParameters>"
984 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
987 " <csymbol encoding=\"text\" definitionURL=\"http://www.sbml.org/sbml/symbols/time\"> time </csymbol>"
992 " <listOfEventAssignments>"
993 " <eventAssignment variable=\"species_1\">"
994 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
995 " <ci> parameter_1 </ci>"
997 " </eventAssignment>"
998 " </listOfEventAssignments>"
1010 CPPUNIT_ASSERT(pModel != NULL);
1011 CPPUNIT_ASSERT(pModel->getQuantityUnitEnum() ==
CModel::mMol);
1012 CPPUNIT_ASSERT(pModel->getVolumeUnitEnum() ==
CModel::ml);
1013 CPPUNIT_ASSERT(pModel->getTimeUnitEnum() ==
CModel::s);
1014 CPPUNIT_ASSERT(pModel->getCompartments().size() == 1);
1015 const CCompartment* pCompartment = pModel->getCompartments()[0];
1016 CPPUNIT_ASSERT(pCompartment != NULL);
1018 CPPUNIT_ASSERT(pModel->getMetabolites().size() == 2);
1019 CMetab* pA = pModel->getMetabolites()[0];
1020 CPPUNIT_ASSERT(pA != NULL);
1022 const CMetab* pB = pModel->getMetabolites()[1];
1023 CPPUNIT_ASSERT(pB != NULL);
1025 CPPUNIT_ASSERT(pModel->getModelValues().size() == 1);
1026 const CModelValue* pModelValue = pModel->getModelValues()[0];
1027 CPPUNIT_ASSERT(pModelValue != NULL);
1029 const CExpression* pExpr = pA->getExpressionPtr();
1032 CPPUNIT_ASSERT(pNode != NULL);
1035 CPPUNIT_ASSERT(pObjectNode != NULL);
1037 CPPUNIT_ASSERT(!objectCN.empty());
1038 std::vector<CCopasiContainer*> listOfContainers;
1039 listOfContainers.push_back(pModel);
1041 CPPUNIT_ASSERT(pObject != NULL);
1043 CPPUNIT_ASSERT(pObject->
getObjectName() == std::string(
"Value"));
1048 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
1049 "<sbml xmlns=\"http://www.sbml.org/sbml/level2/version3\" level=\"2\" version=\"3\">"
1050 " <model id=\"Model_1\" name=\"New Model\">"
1052 " <body xmlns=\"http://www.w3.org/1999/xhtml\">"
1053 " <p>Model with fixed compartment volume, two species where one has the hasOnlySubstanceUnits flag set to true. The units are set to ml and mMol. There is an assignment rule for the species with the hasOnlySubstanceUnits flag set to true.</p>"
1054 " <p>The imported model should contain an assignment for the species that consists a reference to the parameter.</p>"
1057 " <listOfUnitDefinitions>"
1058 " <unitDefinition id=\"volume\">"
1060 " <unit kind=\"litre\" scale=\"-3\"/>"
1062 " </unitDefinition>"
1063 " <unitDefinition id=\"substance\">"
1065 " <unit kind=\"mole\" scale=\"-3\"/>"
1067 " </unitDefinition>"
1068 " </listOfUnitDefinitions>"
1069 " <listOfCompartments>"
1070 " <compartment id=\"compartment_1\" name=\"compartment\" size=\"1\"/>"
1071 " </listOfCompartments>"
1073 " <species id=\"species_1\" name=\"A\" compartment=\"compartment_1\" initialConcentration=\"1\" hasOnlySubstanceUnits=\"true\"/>"
1074 " <species id=\"species_2\" name=\"B\" compartment=\"compartment_1\" initialConcentration=\"1\"/>"
1076 " <listOfParameters>"
1077 " <parameter id=\"parameter_1\" name=\"K\" value=\"0\" constant=\"false\"/>"
1078 " </listOfParameters>"
1080 " <assignmentRule variable=\"species_1\">"
1081 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
1084 " <ci> parameter_1 </ci>"
1085 " <ci> compartment_1 </ci>"
1088 " </assignmentRule>"
1099 CPPUNIT_ASSERT(pModel != NULL);
1100 CPPUNIT_ASSERT(pModel->getQuantityUnitEnum() ==
CModel::mMol);
1101 CPPUNIT_ASSERT(pModel->getVolumeUnitEnum() ==
CModel::ml);
1102 CPPUNIT_ASSERT(pModel->getTimeUnitEnum() ==
CModel::s);
1103 CPPUNIT_ASSERT(pModel->getCompartments().size() == 1);
1104 const CCompartment* pCompartment = pModel->getCompartments()[0];
1105 CPPUNIT_ASSERT(pCompartment != NULL);
1107 CPPUNIT_ASSERT(pModel->getMetabolites().size() == 2);
1108 CMetab* pA = pModel->getMetabolites()[0];
1109 CPPUNIT_ASSERT(pA != NULL);
1111 const CMetab* pB = pModel->getMetabolites()[1];
1112 CPPUNIT_ASSERT(pB != NULL);
1114 CPPUNIT_ASSERT(pModel->getModelValues().size() == 1);
1115 const CModelValue* pModelValue = pModel->getModelValues()[0];
1116 CPPUNIT_ASSERT(pModelValue != NULL);
1118 const CExpression* pExpr = pA->getExpressionPtr();
1121 CPPUNIT_ASSERT(pNode != NULL);
1125 CPPUNIT_ASSERT(pNode != NULL);
1128 CPPUNIT_ASSERT(pObjectNode != NULL);
1130 CPPUNIT_ASSERT(!objectCN.empty());
1131 std::vector<CCopasiContainer*> listOfContainers;
1132 listOfContainers.push_back(pModel);
1134 CPPUNIT_ASSERT(pObject != NULL);
1136 CPPUNIT_ASSERT(pObject->
getObjectName() == std::string(
"Value"));
1139 CPPUNIT_ASSERT(pNode != NULL);
1142 CPPUNIT_ASSERT(pObjectNode != NULL);
1144 CPPUNIT_ASSERT(!objectCN.empty());
1146 CPPUNIT_ASSERT(pObject != NULL);
1147 CPPUNIT_ASSERT(pObject->isReference() ==
true);
1148 CPPUNIT_ASSERT(pObject->getObjectName() == std::string(
"Volume"));
1149 CPPUNIT_ASSERT(pObject->getObjectParent() == pCompartment);
1153 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
1154 "<sbml xmlns=\"http://www.sbml.org/sbml/level2/version3\" level=\"2\" version=\"3\">"
1155 " <model id=\"Model_1\" name=\"New Model\">"
1157 " <body xmlns=\"http://www.w3.org/1999/xhtml\">"
1158 " <p>Model with fixed compartment volume, two species where both have the hasOnlySubstanceUnits flag set to false. The units are set to ml and mMol. There is an assignment rule for the first species.</p>"
1159 " <p>The imported model should contain an assignment for the species that consists of a reference to the global parameter multiplied by the compartment volume.</p>"
1162 " <listOfUnitDefinitions>"
1163 " <unitDefinition id=\"volume\">"
1165 " <unit kind=\"litre\" scale=\"-3\"/>"
1167 " </unitDefinition>"
1168 " <unitDefinition id=\"substance\">"
1170 " <unit kind=\"mole\" scale=\"-3\"/>"
1172 " </unitDefinition>"
1173 " </listOfUnitDefinitions>"
1174 " <listOfCompartments>"
1175 " <compartment id=\"compartment_1\" name=\"compartment\" size=\"1\"/>"
1176 " </listOfCompartments>"
1178 " <species id=\"species_1\" name=\"A\" compartment=\"compartment_1\" initialConcentration=\"1\" />"
1179 " <species id=\"species_2\" name=\"B\" compartment=\"compartment_1\" initialConcentration=\"1\"/>"
1181 " <listOfParameters>"
1182 " <parameter id=\"parameter_1\" name=\"K\" value=\"0\" constant=\"false\"/>"
1183 " </listOfParameters>"
1185 " <assignmentRule variable=\"species_1\">"
1186 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
1189 " <ci> parameter_1 </ci>"
1190 " <ci> compartment_1 </ci>"
1193 " </assignmentRule>"
1204 CPPUNIT_ASSERT(pModel != NULL);
1206 CPPUNIT_ASSERT(pModel->getVolumeUnitEnum() ==
CModel::ml);
1207 CPPUNIT_ASSERT(pModel->getTimeUnitEnum() ==
CModel::s);
1208 CPPUNIT_ASSERT(pModel->getCompartments().size() == 1);
1209 const CCompartment* pCompartment = pModel->getCompartments()[0];
1210 CPPUNIT_ASSERT(pCompartment != NULL);
1212 CPPUNIT_ASSERT(pModel->getMetabolites().size() == 2);
1213 CMetab* pA = pModel->getMetabolites()[0];
1214 CPPUNIT_ASSERT(pA != NULL);
1216 const CMetab* pB = pModel->getMetabolites()[1];
1217 CPPUNIT_ASSERT(pB != NULL);
1219 CPPUNIT_ASSERT(pModel->getModelValues().size() == 1);
1220 const CModelValue* pModelValue = pModel->getModelValues()[0];
1221 CPPUNIT_ASSERT(pModelValue != NULL);
1223 const CExpression* pExpr = pA->getExpressionPtr();
1226 CPPUNIT_ASSERT(pNode != NULL);
1230 CPPUNIT_ASSERT(pNode != NULL);
1233 CPPUNIT_ASSERT(pObjectNode != NULL);
1235 CPPUNIT_ASSERT(!objectCN.empty());
1236 std::vector<CCopasiContainer*> listOfContainers;
1237 listOfContainers.push_back(pModel);
1239 CPPUNIT_ASSERT(pObject != NULL);
1241 CPPUNIT_ASSERT(pObject->
getObjectName() == std::string(
"Value"));
1244 CPPUNIT_ASSERT(pNode != NULL);
1247 CPPUNIT_ASSERT(pObjectNode != NULL);
1249 CPPUNIT_ASSERT(!objectCN.empty());
1251 CPPUNIT_ASSERT(pObject != NULL);
1252 CPPUNIT_ASSERT(pObject->isReference() ==
true);
1253 CPPUNIT_ASSERT(pObject->getObjectName() == std::string(
"Volume"));
1254 CPPUNIT_ASSERT(pObject->getObjectParent() == pCompartment);
1258 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
1259 "<sbml xmlns=\"http://www.sbml.org/sbml/level2/version3\" level=\"2\" version=\"3\">"
1260 " <model id=\"Model_1\" name=\"New Model\">"
1262 " <body xmlns=\"http://www.w3.org/1999/xhtml\">"
1263 " <p>Model with fixed compartment volume, two species where both have the hasOnlySubstanceUnits flag set to false. The units are set to ml and item. There is an assignment rule for the first species.</p>"
1264 " <p>The imported model should contain an assignment for the species that consists of a reference to the global parameter multiplied by the compartment volume.</p>"
1267 " <listOfUnitDefinitions>"
1268 " <unitDefinition id=\"volume\">"
1270 " <unit kind=\"litre\" scale=\"-3\"/>"
1272 " </unitDefinition>"
1273 " <unitDefinition id=\"substance\">"
1275 " <unit kind=\"item\" />"
1277 " </unitDefinition>"
1278 " </listOfUnitDefinitions>"
1279 " <listOfCompartments>"
1280 " <compartment id=\"compartment_1\" name=\"compartment\" size=\"1\"/>"
1281 " </listOfCompartments>"
1283 " <species id=\"species_1\" name=\"A\" compartment=\"compartment_1\" initialConcentration=\"1\" />"
1284 " <species id=\"species_2\" name=\"B\" compartment=\"compartment_1\" initialConcentration=\"1\"/>"
1286 " <listOfParameters>"
1287 " <parameter id=\"parameter_1\" name=\"K\" value=\"0\" constant=\"false\"/>"
1288 " </listOfParameters>"
1290 " <assignmentRule variable=\"species_1\">"
1291 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
1294 " <ci> parameter_1 </ci>"
1295 " <ci> compartment_1 </ci>"
1298 " </assignmentRule>"
1309 CPPUNIT_ASSERT(pModel != NULL);
1311 CPPUNIT_ASSERT(pModel->getVolumeUnitEnum() ==
CModel::ml);
1312 CPPUNIT_ASSERT(pModel->getTimeUnitEnum() ==
CModel::s);
1313 CPPUNIT_ASSERT(pModel->getCompartments().size() == 1);
1314 const CCompartment* pCompartment = pModel->getCompartments()[0];
1315 CPPUNIT_ASSERT(pCompartment != NULL);
1317 CPPUNIT_ASSERT(pModel->getMetabolites().size() == 2);
1318 CMetab* pA = pModel->getMetabolites()[0];
1319 CPPUNIT_ASSERT(pA != NULL);
1321 const CMetab* pB = pModel->getMetabolites()[1];
1322 CPPUNIT_ASSERT(pB != NULL);
1324 CPPUNIT_ASSERT(pModel->getModelValues().size() == 1);
1325 const CModelValue* pModelValue = pModel->getModelValues()[0];
1326 CPPUNIT_ASSERT(pModelValue != NULL);
1328 const CExpression* pExpr = pA->getExpressionPtr();
1331 CPPUNIT_ASSERT(pNode != NULL);
1334 CPPUNIT_ASSERT(pObjectNode != NULL);
1336 CPPUNIT_ASSERT(!objectCN.empty());
1337 std::vector<CCopasiContainer*> listOfContainers;
1338 listOfContainers.push_back(pModel);
1340 CPPUNIT_ASSERT(pObject != NULL);
1342 CPPUNIT_ASSERT(pObject->
getObjectName() == std::string(
"Value"));
1347 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
1348 "<sbml xmlns=\"http://www.sbml.org/sbml/level2/version3\" level=\"2\" version=\"3\">"
1349 " <model id=\"Model_1\" name=\"New Model\">"
1351 " <body xmlns=\"http://www.w3.org/1999/xhtml\">"
1352 " <p>Model with fixed compartment volume, two species where one has the hasOnlySubstanceUnits flag set to true. The units are set to ml and item. There is an assignment rule for the species with the hasOnlySubstanceUnits flag set to true.</p>"
1353 " <p>The imported model should contain an assignment for the species that consists of a reference to the global parameter.</p>"
1356 " <listOfUnitDefinitions>"
1357 " <unitDefinition id=\"volume\">"
1359 " <unit kind=\"litre\" scale=\"-3\"/>"
1361 " </unitDefinition>"
1362 " <unitDefinition id=\"substance\">"
1364 " <unit kind=\"item\" />"
1366 " </unitDefinition>"
1367 " </listOfUnitDefinitions>"
1368 " <listOfCompartments>"
1369 " <compartment id=\"compartment_1\" name=\"compartment\" size=\"1\"/>"
1370 " </listOfCompartments>"
1372 " <species id=\"species_1\" name=\"A\" compartment=\"compartment_1\" initialConcentration=\"1\" hasOnlySubstanceUnits=\"true\" />"
1373 " <species id=\"species_2\" name=\"B\" compartment=\"compartment_1\" initialConcentration=\"1\"/>"
1375 " <listOfParameters>"
1376 " <parameter id=\"parameter_1\" name=\"K\" value=\"0\" constant=\"false\"/>"
1377 " </listOfParameters>"
1379 " <assignmentRule variable=\"species_1\">"
1380 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
1383 " <ci> parameter_1 </ci>"
1384 " <ci> compartment_1 </ci>"
1387 " </assignmentRule>"
1398 CPPUNIT_ASSERT(pModel != NULL);
1399 CPPUNIT_ASSERT(pModel->getQuantityUnitEnum() ==
CModel::mMol);
1400 CPPUNIT_ASSERT(pModel->getVolumeUnitEnum() ==
CModel::ml);
1401 CPPUNIT_ASSERT(pModel->getTimeUnitEnum() ==
CModel::s);
1402 CPPUNIT_ASSERT(pModel->getCompartments().size() == 1);
1403 const CCompartment* pCompartment = pModel->getCompartments()[0];
1404 CPPUNIT_ASSERT(pCompartment != NULL);
1406 CPPUNIT_ASSERT(pModel->getMetabolites().size() == 2);
1407 CMetab* pA = pModel->getMetabolites()[0];
1408 CPPUNIT_ASSERT(pA != NULL);
1410 const CMetab* pB = pModel->getMetabolites()[1];
1411 CPPUNIT_ASSERT(pB != NULL);
1413 CPPUNIT_ASSERT(pModel->getModelValues().size() == 1);
1414 const CModelValue* pModelValue = pModel->getModelValues()[0];
1415 CPPUNIT_ASSERT(pModelValue != NULL);
1417 CPPUNIT_ASSERT(pModel->getEvents().size() == 1);
1418 const CEvent* pEvent = pModel->getEvents()[0];
1419 CPPUNIT_ASSERT(pEvent != NULL);
1421 const CExpression* pExpr = pEvent->getTriggerExpressionPtr();
1422 CPPUNIT_ASSERT(pExpr != NULL);
1424 CPPUNIT_ASSERT(pNode != NULL);
1428 CPPUNIT_ASSERT(pNode != NULL);
1431 CPPUNIT_ASSERT(pObjectNode != NULL);
1433 CPPUNIT_ASSERT(!objectCN.empty());
1434 std::vector<CCopasiContainer*> listOfContainers;
1435 listOfContainers.push_back(pModel);
1437 CPPUNIT_ASSERT(pObject != NULL);
1439 CPPUNIT_ASSERT(pObject->
getObjectName() == std::string(
"Time"));
1442 CPPUNIT_ASSERT(pNode != NULL);
1445 CPPUNIT_ASSERT(pNumberNode != NULL);
1446 CPPUNIT_ASSERT(fabs((pNumberNode->
getValue() - 2.0) / 2.0) < 1e-6);
1448 const CExpression* pExpression = pEvent->getDelayExpressionPtr();
1449 CPPUNIT_ASSERT(pExpression == NULL);
1450 CPPUNIT_ASSERT(pEvent->getAssignments().size() == 1);
1452 std::string key = pEvent->getAssignments()[0]->getTargetKey();
1453 CPPUNIT_ASSERT(key == pA->getKey());
1454 pExpression = pEvent->getAssignments()[0]->getExpressionPtr();
1455 CPPUNIT_ASSERT(pExpression != NULL);
1456 pNode = pExpression->getRoot();
1457 CPPUNIT_ASSERT(pNode != NULL);
1460 CPPUNIT_ASSERT(pObjectNode != NULL);
1462 CPPUNIT_ASSERT(!objectCN.empty());
1464 CPPUNIT_ASSERT(pObject != NULL);
1465 CPPUNIT_ASSERT(pObject->isReference() ==
true);
1466 CPPUNIT_ASSERT(pObject->getObjectName() == std::string(
"Value"));
1467 CPPUNIT_ASSERT(pObject->getObjectParent() == pModelValue);
1471 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
1472 "<sbml xmlns=\"http://www.sbml.org/sbml/level2/version3\" level=\"2\" version=\"3\">"
1473 " <model id=\"Model_1\" name=\"New Model\">"
1475 " <body xmlns=\"http://www.w3.org/1999/xhtml\">"
1476 " <p>Model with fixed compartment volume, two species where one has the hasOnlySubstanceUnits flag set to true. The units are set to ml and mMol. There is an event assignment for the species with the hasOnlySubstanceUnits flag set to true.</p>"
1477 " <p>The imported model should contain an event assignment for the species that consists of a reference to the global parameter.</p>"
1480 " <listOfUnitDefinitions>"
1481 " <unitDefinition id=\"volume\">"
1483 " <unit kind=\"litre\" scale=\"-3\"/>"
1485 " </unitDefinition>"
1486 " <unitDefinition id=\"substance\">"
1488 " <unit kind=\"mole\" scale=\"-3\"/>"
1490 " </unitDefinition>"
1491 " </listOfUnitDefinitions>"
1492 " <listOfCompartments>"
1493 " <compartment id=\"compartment_1\" name=\"compartment\" size=\"1\"/>"
1494 " </listOfCompartments>"
1496 " <species id=\"species_1\" name=\"A\" compartment=\"compartment_1\" initialConcentration=\"1\" hasOnlySubstanceUnits=\"true\"/>"
1497 " <species id=\"species_2\" name=\"B\" compartment=\"compartment_1\" initialConcentration=\"1\"/>"
1499 " <listOfParameters>"
1500 " <parameter id=\"parameter_1\" name=\"K\" value=\"0\" constant=\"false\"/>"
1501 " </listOfParameters>"
1505 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
1508 " <csymbol encoding=\"text\" definitionURL=\"http://www.sbml.org/sbml/symbols/time\"> time </csymbol>"
1513 " <listOfEventAssignments>"
1514 " <eventAssignment variable=\"species_1\">"
1515 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
1518 " <ci> parameter_1 </ci>"
1519 " <ci> compartment_1 </ci>"
1522 " </eventAssignment>"
1523 " </listOfEventAssignments>"
1535 CPPUNIT_ASSERT(pModel != NULL);
1536 CPPUNIT_ASSERT(pModel->getQuantityUnitEnum() ==
CModel::mMol);
1537 CPPUNIT_ASSERT(pModel->getVolumeUnitEnum() ==
CModel::ml);
1538 CPPUNIT_ASSERT(pModel->getTimeUnitEnum() ==
CModel::s);
1539 CPPUNIT_ASSERT(pModel->getCompartments().size() == 1);
1540 const CCompartment* pCompartment = pModel->getCompartments()[0];
1541 CPPUNIT_ASSERT(pCompartment != NULL);
1543 CPPUNIT_ASSERT(pModel->getMetabolites().size() == 2);
1544 CMetab* pA = pModel->getMetabolites()[0];
1545 CPPUNIT_ASSERT(pA != NULL);
1547 const CMetab* pB = pModel->getMetabolites()[1];
1548 CPPUNIT_ASSERT(pB != NULL);
1550 CPPUNIT_ASSERT(pModel->getModelValues().size() == 1);
1551 const CModelValue* pModelValue = pModel->getModelValues()[0];
1552 CPPUNIT_ASSERT(pModelValue != NULL);
1554 CPPUNIT_ASSERT(pModel->getEvents().size() == 1);
1555 const CEvent* pEvent = pModel->getEvents()[0];
1556 CPPUNIT_ASSERT(pEvent != NULL);
1558 const CExpression* pExpr = pEvent->getTriggerExpressionPtr();
1559 CPPUNIT_ASSERT(pExpr != NULL);
1561 CPPUNIT_ASSERT(pNode != NULL);
1565 CPPUNIT_ASSERT(pNode != NULL);
1568 CPPUNIT_ASSERT(pObjectNode != NULL);
1570 CPPUNIT_ASSERT(!objectCN.empty());
1571 std::vector<CCopasiContainer*> listOfContainers;
1572 listOfContainers.push_back(pModel);
1574 CPPUNIT_ASSERT(pObject != NULL);
1576 CPPUNIT_ASSERT(pObject->
getObjectName() == std::string(
"Time"));
1579 CPPUNIT_ASSERT(pNode != NULL);
1582 CPPUNIT_ASSERT(pNumberNode != NULL);
1583 CPPUNIT_ASSERT(fabs((pNumberNode->
getValue() - 2.0) / 2.0) < 1e-6);
1585 const CExpression* pExpression = pEvent->getDelayExpressionPtr();
1586 CPPUNIT_ASSERT(pExpression == NULL);
1587 CPPUNIT_ASSERT(pEvent->getAssignments().size() == 1);
1589 std::string key = pEvent->getAssignments()[0]->getTargetKey();
1590 CPPUNIT_ASSERT(key == pA->getKey());
1591 pExpression = pEvent->getAssignments()[0]->getExpressionPtr();
1592 CPPUNIT_ASSERT(pExpression != NULL);
1593 pNode = pExpression->getRoot();
1594 CPPUNIT_ASSERT(pNode != NULL);
1598 CPPUNIT_ASSERT(pNode != NULL);
1601 CPPUNIT_ASSERT(pObjectNode != NULL);
1603 CPPUNIT_ASSERT(!objectCN.empty());
1605 CPPUNIT_ASSERT(pObject != NULL);
1606 CPPUNIT_ASSERT(pObject->isReference() ==
true);
1607 CPPUNIT_ASSERT(pObject->getObjectName() == std::string(
"Value"));
1608 CPPUNIT_ASSERT(pObject->getObjectParent() == pModelValue);
1610 CPPUNIT_ASSERT(pNode != NULL);
1613 CPPUNIT_ASSERT(pObjectNode != NULL);
1615 CPPUNIT_ASSERT(!objectCN.empty());
1617 CPPUNIT_ASSERT(pObject != NULL);
1618 CPPUNIT_ASSERT(pObject->isReference() ==
true);
1619 CPPUNIT_ASSERT(pObject->getObjectName() == std::string(
"Volume"));
1620 CPPUNIT_ASSERT(pObject->getObjectParent() == pCompartment);
1624 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
1625 "<sbml xmlns=\"http://www.sbml.org/sbml/level2/version3\" level=\"2\" version=\"3\">"
1626 " <model id=\"Model_1\" name=\"New Model\">"
1628 " <body xmlns=\"http://www.w3.org/1999/xhtml\">"
1629 " <p>Model with fixed compartment volume, two species where both have the hasOnlySubstanceUnits flag set to false. The units are set to ml and mMol. There is an event assignment for the first species.</p>"
1630 " <p>The imported model should contain an event assignment for the species that consists of a reference to the global parameter multiplied by the compartment volume.</p>"
1633 " <listOfUnitDefinitions>"
1634 " <unitDefinition id=\"volume\">"
1636 " <unit kind=\"litre\" scale=\"-3\"/>"
1638 " </unitDefinition>"
1639 " <unitDefinition id=\"substance\">"
1641 " <unit kind=\"mole\" scale=\"-3\"/>"
1643 " </unitDefinition>"
1644 " </listOfUnitDefinitions>"
1645 " <listOfCompartments>"
1646 " <compartment id=\"compartment_1\" name=\"compartment\" size=\"1\"/>"
1647 " </listOfCompartments>"
1649 " <species id=\"species_1\" name=\"A\" compartment=\"compartment_1\" initialConcentration=\"1\" />"
1650 " <species id=\"species_2\" name=\"B\" compartment=\"compartment_1\" initialConcentration=\"1\"/>"
1652 " <listOfParameters>"
1653 " <parameter id=\"parameter_1\" name=\"K\" value=\"0\" constant=\"false\"/>"
1654 " </listOfParameters>"
1658 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
1661 " <csymbol encoding=\"text\" definitionURL=\"http://www.sbml.org/sbml/symbols/time\"> time </csymbol>"
1666 " <listOfEventAssignments>"
1667 " <eventAssignment variable=\"species_1\">"
1668 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
1671 " <ci> parameter_1 </ci>"
1672 " <ci> compartment_1 </ci>"
1675 " </eventAssignment>"
1676 " </listOfEventAssignments>"
1688 CPPUNIT_ASSERT(pModel != NULL);
1690 CPPUNIT_ASSERT(pModel->getVolumeUnitEnum() ==
CModel::ml);
1691 CPPUNIT_ASSERT(pModel->getTimeUnitEnum() ==
CModel::s);
1692 CPPUNIT_ASSERT(pModel->getCompartments().size() == 1);
1693 const CCompartment* pCompartment = pModel->getCompartments()[0];
1694 CPPUNIT_ASSERT(pCompartment != NULL);
1696 CPPUNIT_ASSERT(pModel->getMetabolites().size() == 2);
1697 CMetab* pA = pModel->getMetabolites()[0];
1698 CPPUNIT_ASSERT(pA != NULL);
1700 const CMetab* pB = pModel->getMetabolites()[1];
1701 CPPUNIT_ASSERT(pB != NULL);
1703 CPPUNIT_ASSERT(pModel->getModelValues().size() == 1);
1704 const CModelValue* pModelValue = pModel->getModelValues()[0];
1705 CPPUNIT_ASSERT(pModelValue != NULL);
1707 CPPUNIT_ASSERT(pModel->getEvents().size() == 1);
1708 const CEvent* pEvent = pModel->getEvents()[0];
1709 CPPUNIT_ASSERT(pEvent != NULL);
1711 const CExpression* pExpr = pEvent->getTriggerExpressionPtr();
1712 CPPUNIT_ASSERT(pExpr != NULL);
1714 CPPUNIT_ASSERT(pNode != NULL);
1718 CPPUNIT_ASSERT(pNode != NULL);
1721 CPPUNIT_ASSERT(pObjectNode != NULL);
1723 CPPUNIT_ASSERT(!objectCN.empty());
1724 std::vector<CCopasiContainer*> listOfContainers;
1725 listOfContainers.push_back(pModel);
1727 CPPUNIT_ASSERT(pObject != NULL);
1729 CPPUNIT_ASSERT(pObject->
getObjectName() == std::string(
"Time"));
1732 CPPUNIT_ASSERT(pNode != NULL);
1735 CPPUNIT_ASSERT(pNumberNode != NULL);
1736 CPPUNIT_ASSERT(fabs((pNumberNode->
getValue() - 2.0) / 2.0) < 1e-6);
1738 const CExpression* pExpression = pEvent->getDelayExpressionPtr();
1739 CPPUNIT_ASSERT(pExpression == NULL);
1740 CPPUNIT_ASSERT(pEvent->getAssignments().size() == 1);
1742 std::string key = pEvent->getAssignments()[0]->getTargetKey();
1743 CPPUNIT_ASSERT(key == pA->getKey());
1744 pExpression = pEvent->getAssignments()[0]->getExpressionPtr();
1745 CPPUNIT_ASSERT(pExpression != NULL);
1746 pNode = pExpression->getRoot();
1747 CPPUNIT_ASSERT(pNode != NULL);
1751 CPPUNIT_ASSERT(pNode != NULL);
1754 CPPUNIT_ASSERT(pObjectNode != NULL);
1756 CPPUNIT_ASSERT(!objectCN.empty());
1758 CPPUNIT_ASSERT(pObject != NULL);
1759 CPPUNIT_ASSERT(pObject->isReference() ==
true);
1760 CPPUNIT_ASSERT(pObject->getObjectName() == std::string(
"Value"));
1761 CPPUNIT_ASSERT(pObject->getObjectParent() == pModelValue);
1763 CPPUNIT_ASSERT(pNode != NULL);
1766 CPPUNIT_ASSERT(pObjectNode != NULL);
1768 CPPUNIT_ASSERT(!objectCN.empty());
1770 CPPUNIT_ASSERT(pObject != NULL);
1771 CPPUNIT_ASSERT(pObject->isReference() ==
true);
1772 CPPUNIT_ASSERT(pObject->getObjectName() == std::string(
"Volume"));
1773 CPPUNIT_ASSERT(pObject->getObjectParent() == pCompartment);
1777 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
1778 "<sbml xmlns=\"http://www.sbml.org/sbml/level2/version3\" level=\"2\" version=\"3\">"
1779 " <model id=\"Model_1\" name=\"New Model\">"
1781 " <body xmlns=\"http://www.w3.org/1999/xhtml\">"
1782 " <p>Model with fixed compartment volume, two species where both have the hasOnlySubstanceUnits flag set to false. The units are set to ml and item. There is an event assignment for the first species.</p>"
1783 " <p>The imported model should contain an event assignment for the species that consists of a reference to the global parameter multiplied by the compartment volume.</p>"
1786 " <listOfUnitDefinitions>"
1787 " <unitDefinition id=\"volume\">"
1789 " <unit kind=\"litre\" scale=\"-3\"/>"
1791 " </unitDefinition>"
1792 " <unitDefinition id=\"substance\">"
1794 " <unit kind=\"item\" />"
1796 " </unitDefinition>"
1797 " </listOfUnitDefinitions>"
1798 " <listOfCompartments>"
1799 " <compartment id=\"compartment_1\" name=\"compartment\" size=\"1\"/>"
1800 " </listOfCompartments>"
1802 " <species id=\"species_1\" name=\"A\" compartment=\"compartment_1\" initialConcentration=\"1\" />"
1803 " <species id=\"species_2\" name=\"B\" compartment=\"compartment_1\" initialConcentration=\"1\"/>"
1805 " <listOfParameters>"
1806 " <parameter id=\"parameter_1\" name=\"K\" value=\"0\" constant=\"false\"/>"
1807 " </listOfParameters>"
1811 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
1814 " <csymbol encoding=\"text\" definitionURL=\"http://www.sbml.org/sbml/symbols/time\"> time </csymbol>"
1819 " <listOfEventAssignments>"
1820 " <eventAssignment variable=\"species_1\">"
1821 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
1824 " <ci> parameter_1 </ci>"
1825 " <ci> compartment_1 </ci>"
1828 " </eventAssignment>"
1829 " </listOfEventAssignments>"
1841 CPPUNIT_ASSERT(pModel != NULL);
1843 CPPUNIT_ASSERT(pModel->getVolumeUnitEnum() ==
CModel::ml);
1844 CPPUNIT_ASSERT(pModel->getTimeUnitEnum() ==
CModel::s);
1845 CPPUNIT_ASSERT(pModel->getCompartments().size() == 1);
1846 const CCompartment* pCompartment = pModel->getCompartments()[0];
1847 CPPUNIT_ASSERT(pCompartment != NULL);
1849 CPPUNIT_ASSERT(pModel->getMetabolites().size() == 2);
1850 CMetab* pA = pModel->getMetabolites()[0];
1851 CPPUNIT_ASSERT(pA != NULL);
1853 const CMetab* pB = pModel->getMetabolites()[1];
1854 CPPUNIT_ASSERT(pB != NULL);
1856 CPPUNIT_ASSERT(pModel->getModelValues().size() == 1);
1857 const CModelValue* pModelValue = pModel->getModelValues()[0];
1858 CPPUNIT_ASSERT(pModelValue != NULL);
1860 CPPUNIT_ASSERT(pModel->getEvents().size() == 1);
1861 const CEvent* pEvent = pModel->getEvents()[0];
1862 CPPUNIT_ASSERT(pEvent != NULL);
1864 const CExpression* pExpr = pEvent->getTriggerExpressionPtr();
1865 CPPUNIT_ASSERT(pExpr != NULL);
1867 CPPUNIT_ASSERT(pNode != NULL);
1871 CPPUNIT_ASSERT(pNode != NULL);
1874 CPPUNIT_ASSERT(pObjectNode != NULL);
1876 CPPUNIT_ASSERT(!objectCN.empty());
1877 std::vector<CCopasiContainer*> listOfContainers;
1878 listOfContainers.push_back(pModel);
1880 CPPUNIT_ASSERT(pObject != NULL);
1882 CPPUNIT_ASSERT(pObject->
getObjectName() == std::string(
"Time"));
1885 CPPUNIT_ASSERT(pNode != NULL);
1888 CPPUNIT_ASSERT(pNumberNode != NULL);
1889 CPPUNIT_ASSERT(fabs((pNumberNode->
getValue() - 2.0) / 2.0) < 1e-6);
1891 const CExpression* pExpression = pEvent->getDelayExpressionPtr();
1892 CPPUNIT_ASSERT(pExpression == NULL);
1893 CPPUNIT_ASSERT(pEvent->getAssignments().size() == 1);
1895 std::string key = pEvent->getAssignments()[0]->getTargetKey();
1896 CPPUNIT_ASSERT(key == pA->getKey());
1897 pExpression = pEvent->getAssignments()[0]->getExpressionPtr();
1898 CPPUNIT_ASSERT(pExpression != NULL);
1899 pNode = pExpression->getRoot();
1900 CPPUNIT_ASSERT(pNode != NULL);
1903 CPPUNIT_ASSERT(pObjectNode != NULL);
1905 CPPUNIT_ASSERT(!objectCN.empty());
1907 CPPUNIT_ASSERT(pObject != NULL);
1908 CPPUNIT_ASSERT(pObject->isReference() ==
true);
1909 CPPUNIT_ASSERT(pObject->getObjectName() == std::string(
"Value"));
1910 CPPUNIT_ASSERT(pObject->getObjectParent() == pModelValue);
1914 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
1915 "<sbml xmlns=\"http://www.sbml.org/sbml/level2/version3\" level=\"2\" version=\"3\">"
1916 " <model id=\"Model_1\" name=\"New Model\">"
1918 " <body xmlns=\"http://www.w3.org/1999/xhtml\">"
1919 " <p>Model with fixed compartment volume, two species where one has the hasOnlySubstanceUnits flag set to true. The units are set to ml and item. There is an event assignment for the species with the hasOnlySubstanceUnits flag set to true.</p>"
1920 " <p>The imported model should contain an event assignment for the species that consists of a reference to the global parameter.</p>"
1923 " <listOfUnitDefinitions>"
1924 " <unitDefinition id=\"volume\">"
1926 " <unit kind=\"litre\" scale=\"-3\"/>"
1928 " </unitDefinition>"
1929 " <unitDefinition id=\"substance\">"
1931 " <unit kind=\"item\" />"
1933 " </unitDefinition>"
1934 " </listOfUnitDefinitions>"
1935 " <listOfCompartments>"
1936 " <compartment id=\"compartment_1\" name=\"compartment\" size=\"1\"/>"
1937 " </listOfCompartments>"
1939 " <species id=\"species_1\" name=\"A\" compartment=\"compartment_1\" initialConcentration=\"1\" hasOnlySubstanceUnits=\"true\" />"
1940 " <species id=\"species_2\" name=\"B\" compartment=\"compartment_1\" initialConcentration=\"1\"/>"
1942 " <listOfParameters>"
1943 " <parameter id=\"parameter_1\" name=\"K\" value=\"0\" constant=\"false\"/>"
1944 " </listOfParameters>"
1948 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
1951 " <csymbol encoding=\"text\" definitionURL=\"http://www.sbml.org/sbml/symbols/time\"> time </csymbol>"
1956 " <listOfEventAssignments>"
1957 " <eventAssignment variable=\"species_1\">"
1958 " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
1961 " <ci> parameter_1 </ci>"
1962 " <ci> compartment_1 </ci>"
1965 " </eventAssignment>"
1966 " </listOfEventAssignments>"
1981 CPPUNIT_ASSERT(pDataModel->
getModel() != NULL);
1984 CPPUNIT_ASSERT(pDocument != NULL);
1985 Model* pModel = pDocument->getModel();
1986 CPPUNIT_ASSERT(pModel != NULL);
1988 UnitDefinition* pUDef = pModel->getUnitDefinition(
"time");
1995 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
1996 pUnit = pUDef->getUnit(0);
1997 CPPUNIT_ASSERT(pUnit != NULL);
1998 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_SECOND);
1999 CPPUNIT_ASSERT(pUnit->getScale() == 0);
2000 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2001 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2004 pUDef = pModel->getUnitDefinition(
"substance");
2005 CPPUNIT_ASSERT(pUDef != NULL);
2006 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2007 pUnit = pUDef->getUnit(0);
2008 CPPUNIT_ASSERT(pUnit != NULL);
2009 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_MOLE);
2010 CPPUNIT_ASSERT(pUnit->getScale() == -3);
2011 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2012 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2013 pUDef = pModel->getUnitDefinition(
"volume");
2014 CPPUNIT_ASSERT(pUDef != NULL);
2015 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2016 pUnit = pUDef->getUnit(0);
2017 CPPUNIT_ASSERT(pUnit != NULL);
2018 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_LITRE);
2019 CPPUNIT_ASSERT(pUnit->getScale() == -3);
2020 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2021 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2024 CPPUNIT_ASSERT(pModel->getNumCompartments() == 1);
2025 Compartment* pCompartment = pModel->getCompartment(0);
2026 CPPUNIT_ASSERT(pCompartment->getConstant() ==
true);
2027 CPPUNIT_ASSERT(pModel->getNumParameters() == 1);
2028 Parameter* pParameter = pModel->getParameter(0);
2029 CPPUNIT_ASSERT(pParameter != NULL);
2030 CPPUNIT_ASSERT(pModel->getNumSpecies() == 2);
2031 Species* pSpecies1 = pModel->getSpecies(0);
2032 CPPUNIT_ASSERT(pSpecies1->getHasOnlySubstanceUnits() ==
false);
2033 std::string idSpeciesA = pSpecies1->getId();
2034 Species* pSpecies2 = pModel->getSpecies(1);
2035 CPPUNIT_ASSERT(pSpecies2->getHasOnlySubstanceUnits() ==
false);
2036 CPPUNIT_ASSERT(pModel->getNumRules() == 1);
2037 AssignmentRule* pRule =
dynamic_cast<AssignmentRule*
>(pModel->getRule(0));
2038 CPPUNIT_ASSERT(pRule != NULL);
2039 CPPUNIT_ASSERT(pRule->getVariable() == pSpecies1->getId());
2040 const ASTNode* pMath = pRule->getMath();
2041 CPPUNIT_ASSERT(pMath != NULL);
2044 CPPUNIT_ASSERT(pMath->getType() == AST_NAME);
2045 CPPUNIT_ASSERT(pMath->getName() == pParameter->getId());
2046 CPPUNIT_ASSERT(pModel->getNumReactions() == 0);
2050 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
2051 "<!-- generated with COPASI 4.4.26 (Debug) (http://www.copasi.org) at 2008-06-12 09:00:21 UTC -->\n"
2052 "<COPASI xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://www.copasi.org/static/schema.xsd\" versionMajor=\"1\" versionMinor=\"0\" versionDevel=\"26\">\n"
2053 " <Model key=\"Model_0\" name=\"New Model\" timeUnit=\"s\" volumeUnit=\"ml\" quantityUnit=\"mmol\" type=\"deterministic\">\n"
2055 " <html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta name=\"qrichtext\" content=\"1\" /></head><body style=\"font-size:9pt;font-family:Sans Serif\">\n"
2056 "<p>Simple model with two species and a global parameter. The compartment is fixed and one species is determined by an assignment rule.</p>\n"
2057 "<p>The substance unit is set to mmol.</p>\n"
2058 "<p>On export both species should be exported with the hasOnlySubstanceUnits flag set to false and the expression for the assignment should contain only a reference to the global parameter.</p>\n"
2061 " <ListOfCompartments>\n"
2062 " <Compartment key=\"Compartment_0\" name=\"compartment\" simulationType=\"fixed\">\n"
2064 " </ListOfCompartments>\n"
2065 " <ListOfMetabolites>\n"
2066 " <Metabolite key=\"Metabolite_0\" name=\"A\" simulationType=\"assignment\" compartment=\"Compartment_0\">\n"
2068 " <CN=Root,Model=New Model,Vector=Values[K],Reference=Value>\n"
2071 " <Metabolite key=\"Metabolite_1\" name=\"B\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
2073 " </ListOfMetabolites>\n"
2074 " <ListOfModelValues>\n"
2075 " <ModelValue key=\"ModelValue_0\" name=\"K\" simulationType=\"fixed\">\n"
2077 " </ListOfModelValues>\n"
2078 " <StateTemplate>\n"
2079 " <StateTemplateVariable objectReference=\"Model_0\"/>\n"
2080 " <StateTemplateVariable objectReference=\"Metabolite_0\"/>\n"
2081 " <StateTemplateVariable objectReference=\"Metabolite_1\"/>\n"
2082 " <StateTemplateVariable objectReference=\"ModelValue_0\"/>\n"
2083 " <StateTemplateVariable objectReference=\"Compartment_0\"/>\n"
2084 " </StateTemplate>\n"
2085 " <InitialState type=\"initialState\">\n"
2086 " 0 1.2044283e+21 6.022141500000001e+20 2 1\n"
2087 " </InitialState>\n"
2100 CPPUNIT_ASSERT(pDataModel->
getModel() != NULL);
2103 CPPUNIT_ASSERT(pDocument != NULL);
2104 Model* pModel = pDocument->getModel();
2105 CPPUNIT_ASSERT(pModel != NULL);
2107 UnitDefinition* pUDef = pModel->getUnitDefinition(
"time");
2114 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2115 pUnit = pUDef->getUnit(0);
2116 CPPUNIT_ASSERT(pUnit != NULL);
2117 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_SECOND);
2118 CPPUNIT_ASSERT(pUnit->getScale() == 0);
2119 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2120 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2123 pUDef = pModel->getUnitDefinition(
"substance");
2124 CPPUNIT_ASSERT(pUDef != NULL);
2125 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2126 pUnit = pUDef->getUnit(0);
2127 CPPUNIT_ASSERT(pUnit != NULL);
2128 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_MOLE);
2129 CPPUNIT_ASSERT(pUnit->getScale() == -3);
2130 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2131 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2132 pUDef = pModel->getUnitDefinition(
"volume");
2133 CPPUNIT_ASSERT(pUDef != NULL);
2134 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2135 pUnit = pUDef->getUnit(0);
2136 CPPUNIT_ASSERT(pUnit != NULL);
2137 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_LITRE);
2138 CPPUNIT_ASSERT(pUnit->getScale() == -3);
2139 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2140 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2143 CPPUNIT_ASSERT(pModel->getNumCompartments() == 1);
2144 Compartment* pCompartment = pModel->getCompartment(0);
2145 CPPUNIT_ASSERT(pCompartment->getConstant() ==
false);
2146 CPPUNIT_ASSERT(pModel->getNumParameters() == 2);
2147 Parameter* pParameter1 = pModel->getParameter(0);
2148 CPPUNIT_ASSERT(pParameter1 != NULL);
2149 Parameter* pParameter2 = NULL;
2151 if (pParameter1->getName() ==
"K")
2153 pParameter2 = pModel->getParameter(1);
2154 CPPUNIT_ASSERT(pParameter2 != NULL);
2158 pParameter2 = pParameter1;
2159 pParameter1 = pModel->getParameter(1);
2160 CPPUNIT_ASSERT(pParameter1 != NULL);
2163 CPPUNIT_ASSERT(pParameter1->getName() ==
"K");
2164 CPPUNIT_ASSERT(pParameter2->getName() ==
"P");
2165 CPPUNIT_ASSERT(pModel->getNumSpecies() == 2);
2166 Species* pSpecies1 = pModel->getSpecies(0);
2167 CPPUNIT_ASSERT(pSpecies1->getHasOnlySubstanceUnits() ==
true);
2168 std::string idSpeciesA = pSpecies1->getId();
2169 Species* pSpecies2 = pModel->getSpecies(1);
2170 CPPUNIT_ASSERT(pSpecies2->getHasOnlySubstanceUnits() ==
true);
2171 CPPUNIT_ASSERT(pModel->getNumRules() == 2);
2172 AssignmentRule* pRule1 =
dynamic_cast<AssignmentRule*
>(pModel->getRule(0));
2173 AssignmentRule* pRule2 = NULL;
2174 CPPUNIT_ASSERT(pRule1 != NULL);
2176 if (pRule1->getVariable() == pSpecies1->getId())
2179 pRule1 =
dynamic_cast<AssignmentRule*
>(pModel->getRule(1));
2183 pRule2 =
dynamic_cast<AssignmentRule*
>(pModel->getRule(1));
2187 const ASTNode* pMath = pRule1->getMath();
2188 CPPUNIT_ASSERT(pMath != NULL);
2191 CPPUNIT_ASSERT(pMath->getType() == AST_NAME);
2192 CPPUNIT_ASSERT(pMath->getName() == pParameter2->getId());
2193 pMath = pRule2->getMath();
2194 CPPUNIT_ASSERT(pMath != NULL);
2197 CPPUNIT_ASSERT(pMath->getType() == AST_TIMES);
2198 CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
2199 ASTNode* pChild1 = pMath->getChild(0);
2200 ASTNode* pChild2 = pMath->getChild(1);
2201 CPPUNIT_ASSERT(pChild1->getType() == AST_NAME);
2202 CPPUNIT_ASSERT(pChild2->getType() == AST_NAME);
2203 CPPUNIT_ASSERT(pChild1->getName() == pParameter1->getId() || pChild2->getName() == pParameter1->getId());
2204 CPPUNIT_ASSERT(pChild1->getName() == pCompartment->getId() || pChild2->getName() == pCompartment->getId());
2205 CPPUNIT_ASSERT(pModel->getNumReactions() == 0);
2209 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
2210 "<!-- generated with COPASI 4.4.26 (Debug) (http://www.copasi.org) at 2008-06-12 09:00:21 UTC -->\n"
2211 "<COPASI xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://www.copasi.org/static/schema.xsd\" versionMajor=\"1\" versionMinor=\"0\" versionDevel=\"26\">\n"
2212 " <Model key=\"Model_0\" name=\"New Model\" timeUnit=\"s\" volumeUnit=\"ml\" quantityUnit=\"mmol\" type=\"deterministic\">\n"
2214 " <html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta name=\"qrichtext\" content=\"1\" /></head><body style=\"font-size:9pt;font-family:Sans Serif\">\n"
2215 "<p>Simple model with two species and two global parameters. The compartment is variable and one species is determined by an assignment rule.</p>\n"
2216 "<p>The substance unit is set to mmol.</p>\n"
2217 "<p>On export both species should be exported with the hasOnlySubstanceUnits flag set to true and the expression for the assignment should contain a reference to the global parameter multiplied by the volume of the compartment.</p>\n"
2220 " <ListOfCompartments>\n"
2221 " <Compartment key=\"Compartment_0\" name=\"compartment\" simulationType=\"assignment\">\n"
2223 " <CN=Root,Model=New Model,Vector=Values[P],Reference=Value>\n"
2226 " </ListOfCompartments>\n"
2227 " <ListOfMetabolites>\n"
2228 " <Metabolite key=\"Metabolite_0\" name=\"A\" simulationType=\"assignment\" compartment=\"Compartment_0\">\n"
2230 " <CN=Root,Model=New Model,Vector=Values[K],Reference=Value>\n"
2233 " <Metabolite key=\"Metabolite_1\" name=\"B\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
2235 " </ListOfMetabolites>\n"
2236 " <ListOfModelValues>\n"
2237 " <ModelValue key=\"ModelValue_0\" name=\"K\" simulationType=\"fixed\">\n"
2239 " <ModelValue key=\"ModelValue_1\" name=\"P\" simulationType=\"fixed\">\n"
2241 " </ListOfModelValues>\n"
2242 " <StateTemplate>\n"
2243 " <StateTemplateVariable objectReference=\"Model_0\"/>\n"
2244 " <StateTemplateVariable objectReference=\"Metabolite_0\"/>\n"
2245 " <StateTemplateVariable objectReference=\"Metabolite_1\"/>\n"
2246 " <StateTemplateVariable objectReference=\"ModelValue_0\"/>\n"
2247 " <StateTemplateVariable objectReference=\"ModelValue_1\"/>\n"
2248 " <StateTemplateVariable objectReference=\"Compartment_0\"/>\n"
2249 " </StateTemplate>\n"
2250 " <InitialState type=\"initialState\">\n"
2251 " 0 1.2044283e+21 6.022141500000001e+20 2 3 1\n"
2252 " </InitialState>\n"
2265 CPPUNIT_ASSERT(pDataModel->
getModel() != NULL);
2268 CPPUNIT_ASSERT(pDocument != NULL);
2269 Model* pModel = pDocument->getModel();
2270 CPPUNIT_ASSERT(pModel != NULL);
2272 UnitDefinition* pUDef = pModel->getUnitDefinition(
"time");
2279 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2280 pUnit = pUDef->getUnit(0);
2281 CPPUNIT_ASSERT(pUnit != NULL);
2282 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_SECOND);
2283 CPPUNIT_ASSERT(pUnit->getScale() == 0);
2284 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2285 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2288 pUDef = pModel->getUnitDefinition(
"substance");
2289 CPPUNIT_ASSERT(pUDef != NULL);
2290 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2291 pUnit = pUDef->getUnit(0);
2292 CPPUNIT_ASSERT(pUnit != NULL);
2293 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_ITEM);
2294 CPPUNIT_ASSERT(pUnit->getScale() == 0);
2295 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2296 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2297 pUDef = pModel->getUnitDefinition(
"volume");
2298 CPPUNIT_ASSERT(pUDef != NULL);
2299 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2300 pUnit = pUDef->getUnit(0);
2301 CPPUNIT_ASSERT(pUnit != NULL);
2302 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_LITRE);
2303 CPPUNIT_ASSERT(pUnit->getScale() == -3);
2304 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2305 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2308 CPPUNIT_ASSERT(pModel->getNumCompartments() == 1);
2309 Compartment* pCompartment = pModel->getCompartment(0);
2310 CPPUNIT_ASSERT(pCompartment->getConstant() ==
true);
2311 CPPUNIT_ASSERT(pModel->getNumParameters() == 1);
2312 Parameter* pParameter = pModel->getParameter(0);
2313 CPPUNIT_ASSERT(pParameter != NULL);
2314 CPPUNIT_ASSERT(pModel->getNumSpecies() == 2);
2315 Species* pSpecies1 = pModel->getSpecies(0);
2316 CPPUNIT_ASSERT(pSpecies1->getHasOnlySubstanceUnits() ==
false);
2317 std::string idSpeciesA = pSpecies1->getId();
2318 Species* pSpecies2 = pModel->getSpecies(1);
2319 CPPUNIT_ASSERT(pSpecies2->getHasOnlySubstanceUnits() ==
false);
2320 CPPUNIT_ASSERT(pModel->getNumRules() == 1);
2321 AssignmentRule* pRule =
dynamic_cast<AssignmentRule*
>(pModel->getRule(0));
2322 CPPUNIT_ASSERT(pRule != NULL);
2323 CPPUNIT_ASSERT(pRule->getVariable() == pSpecies1->getId());
2324 const ASTNode* pMath = pRule->getMath();
2325 CPPUNIT_ASSERT(pMath != NULL);
2328 CPPUNIT_ASSERT(pMath->getType() == AST_NAME);
2329 CPPUNIT_ASSERT(pMath->getName() == pParameter->getId());
2330 CPPUNIT_ASSERT(pModel->getNumReactions() == 0);
2334 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
2335 "<!-- generated with COPASI 4.4.26 (Debug) (http://www.copasi.org) at 2008-06-12 09:00:21 UTC -->\n"
2336 "<COPASI xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://www.copasi.org/static/schema.xsd\" versionMajor=\"1\" versionMinor=\"0\" versionDevel=\"26\">\n"
2337 " <Model key=\"Model_0\" name=\"New Model\" timeUnit=\"s\" volumeUnit=\"ml\" quantityUnit=\"#\" type=\"deterministic\">\n"
2339 " <html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta name=\"qrichtext\" content=\"1\" /></head><body style=\"font-size:9pt;font-family:Sans Serif\">\n"
2340 "<p>Simple model with two species and a global parameter. The compartment is fixed and one species is determined by an assignment rule.</p>\n"
2341 "<p>The substance unit is set to particle number.</p>\n"
2342 "<p>On export both species should be exported with the hasOnlySubstanceUnits flag set to false and the expression for the assignment should contain only a reference to the global parameter.</p>\n"
2345 " <ListOfCompartments>\n"
2346 " <Compartment key=\"Compartment_0\" name=\"compartment\" simulationType=\"fixed\">\n"
2348 " </ListOfCompartments>\n"
2349 " <ListOfMetabolites>\n"
2350 " <Metabolite key=\"Metabolite_0\" name=\"A\" simulationType=\"assignment\" compartment=\"Compartment_0\">\n"
2352 " <CN=Root,Model=New Model,Vector=Values[K],Reference=Value>\n"
2355 " <Metabolite key=\"Metabolite_1\" name=\"B\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
2357 " </ListOfMetabolites>\n"
2358 " <ListOfModelValues>\n"
2359 " <ModelValue key=\"ModelValue_0\" name=\"K\" simulationType=\"fixed\">\n"
2361 " </ListOfModelValues>\n"
2362 " <StateTemplate>\n"
2363 " <StateTemplateVariable objectReference=\"Model_0\"/>\n"
2364 " <StateTemplateVariable objectReference=\"Metabolite_0\"/>\n"
2365 " <StateTemplateVariable objectReference=\"Metabolite_1\"/>\n"
2366 " <StateTemplateVariable objectReference=\"ModelValue_0\"/>\n"
2367 " <StateTemplateVariable objectReference=\"Compartment_0\"/>\n"
2368 " </StateTemplate>\n"
2369 " <InitialState type=\"initialState\">\n"
2370 " 0 1.2044283e+21 6.022141500000001e+20 2 1\n"
2371 " </InitialState>\n"
2384 CPPUNIT_ASSERT(pDataModel->
getModel() != NULL);
2387 CPPUNIT_ASSERT(pDocument != NULL);
2388 Model* pModel = pDocument->getModel();
2389 CPPUNIT_ASSERT(pModel != NULL);
2391 UnitDefinition* pUDef = pModel->getUnitDefinition(
"time");
2398 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2399 pUnit = pUDef->getUnit(0);
2400 CPPUNIT_ASSERT(pUnit != NULL);
2401 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_SECOND);
2402 CPPUNIT_ASSERT(pUnit->getScale() == 0);
2403 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2404 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2407 pUDef = pModel->getUnitDefinition(
"substance");
2408 CPPUNIT_ASSERT(pUDef != NULL);
2409 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2410 pUnit = pUDef->getUnit(0);
2411 CPPUNIT_ASSERT(pUnit != NULL);
2412 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_ITEM);
2413 CPPUNIT_ASSERT(pUnit->getScale() == 0);
2414 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2415 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2416 pUDef = pModel->getUnitDefinition(
"volume");
2417 CPPUNIT_ASSERT(pUDef != NULL);
2418 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2419 pUnit = pUDef->getUnit(0);
2420 CPPUNIT_ASSERT(pUnit != NULL);
2421 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_LITRE);
2422 CPPUNIT_ASSERT(pUnit->getScale() == -3);
2423 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2424 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2427 CPPUNIT_ASSERT(pModel->getNumCompartments() == 1);
2428 Compartment* pCompartment = pModel->getCompartment(0);
2429 CPPUNIT_ASSERT(pCompartment->getConstant() ==
false);
2430 CPPUNIT_ASSERT(pModel->getNumParameters() == 2);
2431 Parameter* pParameter1 = pModel->getParameter(0);
2432 CPPUNIT_ASSERT(pParameter1 != NULL);
2433 Parameter* pParameter2 = NULL;
2435 if (pParameter1->getName() ==
"K")
2437 pParameter2 = pModel->getParameter(1);
2438 CPPUNIT_ASSERT(pParameter2 != NULL);
2442 pParameter2 = pParameter1;
2443 pParameter1 = pModel->getParameter(1);
2444 CPPUNIT_ASSERT(pParameter1 != NULL);
2447 CPPUNIT_ASSERT(pParameter1->getName() ==
"K");
2448 CPPUNIT_ASSERT(pParameter2->getName() ==
"P");
2449 CPPUNIT_ASSERT(pModel->getNumSpecies() == 2);
2450 Species* pSpecies1 = pModel->getSpecies(0);
2451 CPPUNIT_ASSERT(pSpecies1->getHasOnlySubstanceUnits() ==
true);
2452 std::string idSpeciesA = pSpecies1->getId();
2453 Species* pSpecies2 = pModel->getSpecies(1);
2454 CPPUNIT_ASSERT(pSpecies2->getHasOnlySubstanceUnits() ==
true);
2455 CPPUNIT_ASSERT(pModel->getNumRules() == 2);
2456 AssignmentRule* pRule1 =
dynamic_cast<AssignmentRule*
>(pModel->getRule(0));
2457 AssignmentRule* pRule2 = NULL;
2458 CPPUNIT_ASSERT(pRule1 != NULL);
2460 if (pRule1->getVariable() == pSpecies1->getId())
2463 pRule1 =
dynamic_cast<AssignmentRule*
>(pModel->getRule(1));
2467 pRule2 =
dynamic_cast<AssignmentRule*
>(pModel->getRule(1));
2471 const ASTNode* pMath = pRule1->getMath();
2472 CPPUNIT_ASSERT(pMath != NULL);
2475 CPPUNIT_ASSERT(pMath->getType() == AST_NAME);
2476 CPPUNIT_ASSERT(pMath->getName() == pParameter2->getId());
2477 pMath = pRule2->getMath();
2478 CPPUNIT_ASSERT(pMath != NULL);
2481 CPPUNIT_ASSERT(pMath->getType() == AST_TIMES);
2482 CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
2483 ASTNode* pChild1 = pMath->getChild(0);
2484 ASTNode* pChild2 = pMath->getChild(1);
2485 CPPUNIT_ASSERT(pChild1->getType() == AST_NAME);
2486 CPPUNIT_ASSERT(pChild2->getType() == AST_NAME);
2487 CPPUNIT_ASSERT(pChild1->getName() == pParameter1->getId() || pChild2->getName() == pParameter1->getId());
2488 CPPUNIT_ASSERT(pChild1->getName() == pCompartment->getId() || pChild2->getName() == pCompartment->getId());
2489 CPPUNIT_ASSERT(pModel->getNumReactions() == 0);
2493 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
2494 "<!-- generated with COPASI 4.4.26 (Debug) (http://www.copasi.org) at 2008-06-12 09:00:21 UTC -->\n"
2495 "<COPASI xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://www.copasi.org/static/schema.xsd\" versionMajor=\"1\" versionMinor=\"0\" versionDevel=\"26\">\n"
2496 " <Model key=\"Model_0\" name=\"New Model\" timeUnit=\"s\" volumeUnit=\"ml\" quantityUnit=\"#\" type=\"deterministic\">\n"
2498 " <html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta name=\"qrichtext\" content=\"1\" /></head><body style=\"font-size:9pt;font-family:Sans Serif\">\n"
2499 "<p>Simple model with two species and two global parameters. The compartment is variable and one species is determined by an assignment rule.</p>\n"
2500 "<p>The substance unit is set to particle number.</p>\n"
2501 "<p>On export both species should be exported with the hasOnlySubstanceUnits flag set to true and the expression for the assignment should contain a reference to the global parameter multiplied by the volume of the compartment.</p>\n"
2504 " <ListOfCompartments>\n"
2505 " <Compartment key=\"Compartment_0\" name=\"compartment\" simulationType=\"assignment\">\n"
2507 " <CN=Root,Model=New Model,Vector=Values[P],Reference=Value>\n"
2510 " </ListOfCompartments>\n"
2511 " <ListOfMetabolites>\n"
2512 " <Metabolite key=\"Metabolite_0\" name=\"A\" simulationType=\"assignment\" compartment=\"Compartment_0\">\n"
2514 " <CN=Root,Model=New Model,Vector=Values[K],Reference=Value>\n"
2517 " <Metabolite key=\"Metabolite_1\" name=\"B\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
2519 " </ListOfMetabolites>\n"
2520 " <ListOfModelValues>\n"
2521 " <ModelValue key=\"ModelValue_0\" name=\"K\" simulationType=\"fixed\">\n"
2523 " <ModelValue key=\"ModelValue_1\" name=\"P\" simulationType=\"fixed\">\n"
2525 " </ListOfModelValues>\n"
2526 " <StateTemplate>\n"
2527 " <StateTemplateVariable objectReference=\"Model_0\"/>\n"
2528 " <StateTemplateVariable objectReference=\"Metabolite_0\"/>\n"
2529 " <StateTemplateVariable objectReference=\"Metabolite_1\"/>\n"
2530 " <StateTemplateVariable objectReference=\"ModelValue_0\"/>\n"
2531 " <StateTemplateVariable objectReference=\"ModelValue_1\"/>\n"
2532 " <StateTemplateVariable objectReference=\"Compartment_0\"/>\n"
2533 " </StateTemplate>\n"
2534 " <InitialState type=\"initialState\">\n"
2535 " 0 1.2044283e+21 6.022141500000001e+20 2 3 1\n"
2536 " </InitialState>\n"
2548 CPPUNIT_ASSERT(pDataModel->
getModel() != NULL);
2551 CPPUNIT_ASSERT(pDocument != NULL);
2552 Model* pModel = pDocument->getModel();
2553 CPPUNIT_ASSERT(pModel != NULL);
2555 UnitDefinition* pUDef = pModel->getUnitDefinition(
"time");
2562 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2563 pUnit = pUDef->getUnit(0);
2564 CPPUNIT_ASSERT(pUnit != NULL);
2565 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_SECOND);
2566 CPPUNIT_ASSERT(pUnit->getScale() == 0);
2567 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2568 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2571 pUDef = pModel->getUnitDefinition(
"substance");
2572 CPPUNIT_ASSERT(pUDef != NULL);
2573 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2574 pUnit = pUDef->getUnit(0);
2575 CPPUNIT_ASSERT(pUnit != NULL);
2576 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_MOLE);
2577 CPPUNIT_ASSERT(pUnit->getScale() == -3);
2578 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2579 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2580 pUDef = pModel->getUnitDefinition(
"volume");
2581 CPPUNIT_ASSERT(pUDef != NULL);
2582 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2583 pUnit = pUDef->getUnit(0);
2584 CPPUNIT_ASSERT(pUnit != NULL);
2585 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_LITRE);
2586 CPPUNIT_ASSERT(pUnit->getScale() == -3);
2587 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2588 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2591 CPPUNIT_ASSERT(pModel->getNumCompartments() == 1);
2592 Compartment* pCompartment = pModel->getCompartment(0);
2593 CPPUNIT_ASSERT(pCompartment->getConstant() ==
true);
2594 CPPUNIT_ASSERT(pModel->getNumParameters() == 1);
2595 Parameter* pParameter = pModel->getParameter(0);
2596 CPPUNIT_ASSERT(pParameter != NULL);
2597 CPPUNIT_ASSERT(pModel->getNumSpecies() == 2);
2598 Species* pSpecies1 = pModel->getSpecies(0);
2599 CPPUNIT_ASSERT(pSpecies1->getHasOnlySubstanceUnits() ==
false);
2600 std::string idSpeciesA = pSpecies1->getId();
2601 Species* pSpecies2 = pModel->getSpecies(1);
2602 CPPUNIT_ASSERT(pSpecies2->getHasOnlySubstanceUnits() ==
false);
2603 CPPUNIT_ASSERT(pModel->getNumRules() == 1);
2604 AssignmentRule* pRule =
dynamic_cast<AssignmentRule*
>(pModel->getRule(0));
2605 CPPUNIT_ASSERT(pRule != NULL);
2606 CPPUNIT_ASSERT(pRule->getVariable() == pSpecies1->getId());
2607 const ASTNode* pMath = pRule->getMath();
2608 CPPUNIT_ASSERT(pMath != NULL);
2611 CPPUNIT_ASSERT(pMath->getType() == AST_DIVIDE);
2612 CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
2613 ASTNode* pChild = pMath->getChild(0);
2614 CPPUNIT_ASSERT(pChild->getType() == AST_NAME);
2615 CPPUNIT_ASSERT(pChild->getName() == pParameter->getId());
2616 pChild = pMath->getChild(1);
2617 CPPUNIT_ASSERT(pChild->getType() == AST_NAME);
2618 CPPUNIT_ASSERT(pChild->getName() == pCompartment->getId());
2619 CPPUNIT_ASSERT(pModel->getNumReactions() == 0);
2623 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
2624 "<!-- generated with COPASI 4.4.26 (Debug) (http://www.copasi.org) at 2008-06-12 09:00:21 UTC -->\n"
2625 "<COPASI xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://www.copasi.org/static/schema.xsd\" versionMajor=\"1\" versionMinor=\"0\" versionDevel=\"26\">\n"
2626 " <Model key=\"Model_0\" name=\"New Model\" timeUnit=\"s\" volumeUnit=\"ml\" quantityUnit=\"mmol\" type=\"deterministic\">\n"
2628 " <html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta name=\"qrichtext\" content=\"1\" /></head><body style=\"font-size:9pt;font-family:Sans Serif\">\n"
2629 "<p>Simple model with two species and a global parameter. The compartment is fixed and one species is determined by an assignment rule.</p>\n"
2630 "<p>The substance unit is set to mmol.</p>\n"
2631 "<p>On export both species should be exported with the hasOnlySubstanceUnits flag set to false and the expression for the assignment should contain the global parameter divided by the compartment volume.</p>\n"
2634 " <ListOfCompartments>\n"
2635 " <Compartment key=\"Compartment_0\" name=\"compartment\" simulationType=\"fixed\">\n"
2637 " </ListOfCompartments>\n"
2638 " <ListOfMetabolites>\n"
2639 " <Metabolite key=\"Metabolite_0\" name=\"A\" simulationType=\"assignment\" compartment=\"Compartment_0\">\n"
2641 " <CN=Root,Model=New Model,Vector=Values[K],Reference=Value>/<CN=Root,Model=New Model,Vector=Compartments[compartment],Reference=Volume>\n"
2644 " <Metabolite key=\"Metabolite_1\" name=\"B\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
2646 " </ListOfMetabolites>\n"
2647 " <ListOfModelValues>\n"
2648 " <ModelValue key=\"ModelValue_0\" name=\"K\" simulationType=\"fixed\">\n"
2650 " </ListOfModelValues>\n"
2651 " <StateTemplate>\n"
2652 " <StateTemplateVariable objectReference=\"Model_0\"/>\n"
2653 " <StateTemplateVariable objectReference=\"Metabolite_0\"/>\n"
2654 " <StateTemplateVariable objectReference=\"Metabolite_1\"/>\n"
2655 " <StateTemplateVariable objectReference=\"ModelValue_0\"/>\n"
2656 " <StateTemplateVariable objectReference=\"Compartment_0\"/>\n"
2657 " </StateTemplate>\n"
2658 " <InitialState type=\"initialState\">\n"
2659 " 0 1.2044283e+21 6.022141500000001e+20 2 1\n"
2660 " </InitialState>\n"
2673 CPPUNIT_ASSERT(pDataModel->
getModel() != NULL);
2676 CPPUNIT_ASSERT(pDocument != NULL);
2677 Model* pModel = pDocument->getModel();
2678 CPPUNIT_ASSERT(pModel != NULL);
2680 UnitDefinition* pUDef = pModel->getUnitDefinition(
"time");
2687 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2688 pUnit = pUDef->getUnit(0);
2689 CPPUNIT_ASSERT(pUnit != NULL);
2690 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_SECOND);
2691 CPPUNIT_ASSERT(pUnit->getScale() == 0);
2692 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2693 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2696 pUDef = pModel->getUnitDefinition(
"substance");
2697 CPPUNIT_ASSERT(pUDef != NULL);
2698 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2699 pUnit = pUDef->getUnit(0);
2700 CPPUNIT_ASSERT(pUnit != NULL);
2701 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_MOLE);
2702 CPPUNIT_ASSERT(pUnit->getScale() == -3);
2703 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2704 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2705 pUDef = pModel->getUnitDefinition(
"volume");
2706 CPPUNIT_ASSERT(pUDef != NULL);
2707 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2708 pUnit = pUDef->getUnit(0);
2709 CPPUNIT_ASSERT(pUnit != NULL);
2710 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_LITRE);
2711 CPPUNIT_ASSERT(pUnit->getScale() == -3);
2712 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2713 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2716 CPPUNIT_ASSERT(pModel->getNumCompartments() == 1);
2717 Compartment* pCompartment = pModel->getCompartment(0);
2718 CPPUNIT_ASSERT(pCompartment->getConstant() ==
false);
2719 CPPUNIT_ASSERT(pModel->getNumParameters() == 2);
2720 Parameter* pParameter1 = pModel->getParameter(0);
2721 CPPUNIT_ASSERT(pParameter1 != NULL);
2722 Parameter* pParameter2 = NULL;
2724 if (pParameter1->getName() ==
"K")
2726 pParameter2 = pModel->getParameter(1);
2727 CPPUNIT_ASSERT(pParameter2 != NULL);
2731 pParameter2 = pParameter1;
2732 pParameter1 = pModel->getParameter(1);
2733 CPPUNIT_ASSERT(pParameter1 != NULL);
2736 CPPUNIT_ASSERT(pParameter1->getName() ==
"K");
2737 CPPUNIT_ASSERT(pParameter2->getName() ==
"P");
2738 CPPUNIT_ASSERT(pModel->getNumSpecies() == 2);
2739 Species* pSpecies1 = pModel->getSpecies(0);
2740 CPPUNIT_ASSERT(pSpecies1->getHasOnlySubstanceUnits() ==
true);
2741 std::string idSpeciesA = pSpecies1->getId();
2742 Species* pSpecies2 = pModel->getSpecies(1);
2743 CPPUNIT_ASSERT(pSpecies2->getHasOnlySubstanceUnits() ==
true);
2744 CPPUNIT_ASSERT(pModel->getNumRules() == 2);
2745 AssignmentRule* pRule1 =
dynamic_cast<AssignmentRule*
>(pModel->getRule(0));
2746 AssignmentRule* pRule2 = NULL;
2747 CPPUNIT_ASSERT(pRule1 != NULL);
2749 if (pRule1->getVariable() == pSpecies1->getId())
2752 pRule1 =
dynamic_cast<AssignmentRule*
>(pModel->getRule(1));
2756 pRule2 =
dynamic_cast<AssignmentRule*
>(pModel->getRule(1));
2760 const ASTNode* pMath = pRule1->getMath();
2761 CPPUNIT_ASSERT(pMath != NULL);
2764 CPPUNIT_ASSERT(pMath->getType() == AST_NAME);
2765 CPPUNIT_ASSERT(pMath->getName() == pParameter2->getId());
2766 pMath = pRule2->getMath();
2767 CPPUNIT_ASSERT(pMath != NULL);
2770 CPPUNIT_ASSERT(pMath->getType() == AST_NAME);
2771 CPPUNIT_ASSERT(pMath->getName() == pParameter1->getId());
2772 CPPUNIT_ASSERT(pModel->getNumReactions() == 0);
2776 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
2777 "<!-- generated with COPASI 4.4.26 (Debug) (http://www.copasi.org) at 2008-06-12 09:00:21 UTC -->\n"
2778 "<COPASI xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://www.copasi.org/static/schema.xsd\" versionMajor=\"1\" versionMinor=\"0\" versionDevel=\"26\">\n"
2779 " <Model key=\"Model_0\" name=\"New Model\" timeUnit=\"s\" volumeUnit=\"ml\" quantityUnit=\"mmol\" type=\"deterministic\">\n"
2781 " <html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta name=\"qrichtext\" content=\"1\" /></head><body style=\"font-size:9pt;font-family:Sans Serif\">\n"
2782 "<p>Simple model with two species and two global parameters. The compartment is variable and one species is determined by an assignment rule.</p>\n"
2783 "<p>The substance unit is set to mmol.</p>\n"
2784 "<p>On export both species should be exported with the hasOnlySubstanceUnits flag set to true and the expression for the assignment should contain a reference to the global parameter.</p>\n"
2787 " <ListOfCompartments>\n"
2788 " <Compartment key=\"Compartment_0\" name=\"compartment\" simulationType=\"assignment\">\n"
2790 " <CN=Root,Model=New Model,Vector=Values[P],Reference=Value>\n"
2793 " </ListOfCompartments>\n"
2794 " <ListOfMetabolites>\n"
2795 " <Metabolite key=\"Metabolite_0\" name=\"A\" simulationType=\"assignment\" compartment=\"Compartment_0\">\n"
2797 " <CN=Root,Model=New Model,Vector=Values[K],Reference=Value>/<CN=Root,Model=New Model,Vector=Compartments[compartment],Reference=Volume>\n"
2800 " <Metabolite key=\"Metabolite_1\" name=\"B\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
2802 " </ListOfMetabolites>\n"
2803 " <ListOfModelValues>\n"
2804 " <ModelValue key=\"ModelValue_0\" name=\"K\" simulationType=\"fixed\">\n"
2806 " <ModelValue key=\"ModelValue_1\" name=\"P\" simulationType=\"fixed\">\n"
2808 " </ListOfModelValues>\n"
2809 " <StateTemplate>\n"
2810 " <StateTemplateVariable objectReference=\"Model_0\"/>\n"
2811 " <StateTemplateVariable objectReference=\"Metabolite_0\"/>\n"
2812 " <StateTemplateVariable objectReference=\"Metabolite_1\"/>\n"
2813 " <StateTemplateVariable objectReference=\"ModelValue_0\"/>\n"
2814 " <StateTemplateVariable objectReference=\"ModelValue_1\"/>\n"
2815 " <StateTemplateVariable objectReference=\"Compartment_0\"/>\n"
2816 " </StateTemplate>\n"
2817 " <InitialState type=\"initialState\">\n"
2818 " 0 1.2044283e+21 6.022141500000001e+20 2 3 1\n"
2819 " </InitialState>\n"
2832 CPPUNIT_ASSERT(pDataModel->
getModel() != NULL);
2835 CPPUNIT_ASSERT(pDocument != NULL);
2836 Model* pModel = pDocument->getModel();
2837 CPPUNIT_ASSERT(pModel != NULL);
2839 UnitDefinition* pUDef = pModel->getUnitDefinition(
"time");
2846 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2847 pUnit = pUDef->getUnit(0);
2848 CPPUNIT_ASSERT(pUnit != NULL);
2849 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_SECOND);
2850 CPPUNIT_ASSERT(pUnit->getScale() == 0);
2851 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2852 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2855 pUDef = pModel->getUnitDefinition(
"substance");
2856 CPPUNIT_ASSERT(pUDef != NULL);
2857 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2858 pUnit = pUDef->getUnit(0);
2859 CPPUNIT_ASSERT(pUnit != NULL);
2860 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_ITEM);
2861 CPPUNIT_ASSERT(pUnit->getScale() == 0);
2862 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2863 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2864 pUDef = pModel->getUnitDefinition(
"volume");
2865 CPPUNIT_ASSERT(pUDef != NULL);
2866 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2867 pUnit = pUDef->getUnit(0);
2868 CPPUNIT_ASSERT(pUnit != NULL);
2869 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_LITRE);
2870 CPPUNIT_ASSERT(pUnit->getScale() == -3);
2871 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2872 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2875 CPPUNIT_ASSERT(pModel->getNumCompartments() == 1);
2876 Compartment* pCompartment = pModel->getCompartment(0);
2877 CPPUNIT_ASSERT(pCompartment->getConstant() ==
true);
2878 CPPUNIT_ASSERT(pModel->getNumParameters() == 1);
2879 Parameter* pParameter = pModel->getParameter(0);
2880 CPPUNIT_ASSERT(pParameter != NULL);
2881 CPPUNIT_ASSERT(pModel->getNumSpecies() == 2);
2882 Species* pSpecies1 = pModel->getSpecies(0);
2883 CPPUNIT_ASSERT(pSpecies1->getHasOnlySubstanceUnits() ==
false);
2884 std::string idSpeciesA = pSpecies1->getId();
2885 Species* pSpecies2 = pModel->getSpecies(1);
2886 CPPUNIT_ASSERT(pSpecies2->getHasOnlySubstanceUnits() ==
false);
2887 CPPUNIT_ASSERT(pModel->getNumRules() == 1);
2888 AssignmentRule* pRule =
dynamic_cast<AssignmentRule*
>(pModel->getRule(0));
2889 CPPUNIT_ASSERT(pRule != NULL);
2890 CPPUNIT_ASSERT(pRule->getVariable() == pSpecies1->getId());
2891 const ASTNode* pMath = pRule->getMath();
2892 CPPUNIT_ASSERT(pMath != NULL);
2895 CPPUNIT_ASSERT(pMath->getType() == AST_DIVIDE);
2896 CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
2897 ASTNode* pChild = pMath->getChild(0);
2898 CPPUNIT_ASSERT(pChild != NULL);
2899 CPPUNIT_ASSERT(pChild->getName() == pParameter->getId());
2900 pChild = pMath->getChild(1);
2901 CPPUNIT_ASSERT(pChild != NULL);
2902 CPPUNIT_ASSERT(pChild->getName() == pCompartment->getId());
2903 CPPUNIT_ASSERT(pModel->getNumReactions() == 0);
2907 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
2908 "<!-- generated with COPASI 4.4.26 (Debug) (http://www.copasi.org) at 2008-06-12 09:00:21 UTC -->\n"
2909 "<COPASI xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://www.copasi.org/static/schema.xsd\" versionMajor=\"1\" versionMinor=\"0\" versionDevel=\"26\">\n"
2910 " <Model key=\"Model_0\" name=\"New Model\" timeUnit=\"s\" volumeUnit=\"ml\" quantityUnit=\"#\" type=\"deterministic\">\n"
2912 " <html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta name=\"qrichtext\" content=\"1\" /></head><body style=\"font-size:9pt;font-family:Sans Serif\">\n"
2913 "<p>Simple model with two species and a global parameter. The compartment is fixed and one species is determined by an assignment rule.</p>\n"
2914 "<p>The substance unit is set to particle number.</p>\n"
2915 "<p>On export both species should be exported with the hasOnlySubstanceUnits flag set to false and the expression for the assignment should contain a reference to the global parameter divided by the compartment volume.</p>\n"
2918 " <ListOfCompartments>\n"
2919 " <Compartment key=\"Compartment_0\" name=\"compartment\" simulationType=\"fixed\">\n"
2921 " </ListOfCompartments>\n"
2922 " <ListOfMetabolites>\n"
2923 " <Metabolite key=\"Metabolite_0\" name=\"A\" simulationType=\"assignment\" compartment=\"Compartment_0\">\n"
2925 " <CN=Root,Model=New Model,Vector=Values[K],Reference=Value>/<CN=Root,Model=New Model,Vector=Compartments[compartment],Reference=Volume>\n"
2928 " <Metabolite key=\"Metabolite_1\" name=\"B\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
2930 " </ListOfMetabolites>\n"
2931 " <ListOfModelValues>\n"
2932 " <ModelValue key=\"ModelValue_0\" name=\"K\" simulationType=\"fixed\">\n"
2934 " </ListOfModelValues>\n"
2935 " <StateTemplate>\n"
2936 " <StateTemplateVariable objectReference=\"Model_0\"/>\n"
2937 " <StateTemplateVariable objectReference=\"Metabolite_0\"/>\n"
2938 " <StateTemplateVariable objectReference=\"Metabolite_1\"/>\n"
2939 " <StateTemplateVariable objectReference=\"ModelValue_0\"/>\n"
2940 " <StateTemplateVariable objectReference=\"Compartment_0\"/>\n"
2941 " </StateTemplate>\n"
2942 " <InitialState type=\"initialState\">\n"
2943 " 0 1.2044283e+21 6.022141500000001e+20 2 1\n"
2944 " </InitialState>\n"
2957 CPPUNIT_ASSERT(pDataModel->
getModel() != NULL);
2960 CPPUNIT_ASSERT(pDocument != NULL);
2961 Model* pModel = pDocument->getModel();
2962 CPPUNIT_ASSERT(pModel != NULL);
2964 UnitDefinition* pUDef = pModel->getUnitDefinition(
"time");
2971 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2972 pUnit = pUDef->getUnit(0);
2973 CPPUNIT_ASSERT(pUnit != NULL);
2974 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_SECOND);
2975 CPPUNIT_ASSERT(pUnit->getScale() == 0);
2976 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2977 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2980 pUDef = pModel->getUnitDefinition(
"substance");
2981 CPPUNIT_ASSERT(pUDef != NULL);
2982 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2983 pUnit = pUDef->getUnit(0);
2984 CPPUNIT_ASSERT(pUnit != NULL);
2985 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_ITEM);
2986 CPPUNIT_ASSERT(pUnit->getScale() == 0);
2987 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2988 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
2989 pUDef = pModel->getUnitDefinition(
"volume");
2990 CPPUNIT_ASSERT(pUDef != NULL);
2991 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
2992 pUnit = pUDef->getUnit(0);
2993 CPPUNIT_ASSERT(pUnit != NULL);
2994 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_LITRE);
2995 CPPUNIT_ASSERT(pUnit->getScale() == -3);
2996 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
2997 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
3000 CPPUNIT_ASSERT(pModel->getNumCompartments() == 1);
3001 Compartment* pCompartment = pModel->getCompartment(0);
3002 CPPUNIT_ASSERT(pCompartment->getConstant() ==
false);
3003 CPPUNIT_ASSERT(pModel->getNumParameters() == 2);
3004 Parameter* pParameter1 = pModel->getParameter(0);
3005 CPPUNIT_ASSERT(pParameter1 != NULL);
3006 Parameter* pParameter2 = NULL;
3008 if (pParameter1->getName() ==
"K")
3010 pParameter2 = pModel->getParameter(1);
3011 CPPUNIT_ASSERT(pParameter2 != NULL);
3015 pParameter2 = pParameter1;
3016 pParameter1 = pModel->getParameter(1);
3017 CPPUNIT_ASSERT(pParameter1 != NULL);
3020 CPPUNIT_ASSERT(pParameter1->getName() ==
"K");
3021 CPPUNIT_ASSERT(pParameter2->getName() ==
"P");
3022 CPPUNIT_ASSERT(pModel->getNumSpecies() == 2);
3023 Species* pSpecies1 = pModel->getSpecies(0);
3024 CPPUNIT_ASSERT(pSpecies1->getHasOnlySubstanceUnits() ==
true);
3025 std::string idSpeciesA = pSpecies1->getId();
3026 Species* pSpecies2 = pModel->getSpecies(1);
3027 CPPUNIT_ASSERT(pSpecies2->getHasOnlySubstanceUnits() ==
true);
3028 CPPUNIT_ASSERT(pModel->getNumRules() == 2);
3029 AssignmentRule* pRule1 =
dynamic_cast<AssignmentRule*
>(pModel->getRule(0));
3030 AssignmentRule* pRule2 = NULL;
3031 CPPUNIT_ASSERT(pRule1 != NULL);
3033 if (pRule1->getVariable() == pSpecies1->getId())
3036 pRule1 =
dynamic_cast<AssignmentRule*
>(pModel->getRule(1));
3040 pRule2 =
dynamic_cast<AssignmentRule*
>(pModel->getRule(1));
3044 const ASTNode* pMath = pRule1->getMath();
3045 CPPUNIT_ASSERT(pMath != NULL);
3048 CPPUNIT_ASSERT(pMath->getType() == AST_NAME);
3049 CPPUNIT_ASSERT(pMath->getName() == pParameter2->getId());
3050 pMath = pRule2->getMath();
3051 CPPUNIT_ASSERT(pMath != NULL);
3054 CPPUNIT_ASSERT(pMath->getType() == AST_NAME);
3055 CPPUNIT_ASSERT(pMath->getName() == pParameter1->getId());
3056 CPPUNIT_ASSERT(pModel->getNumReactions() == 0);
3060 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
3061 "<!-- generated with COPASI 4.4.26 (Debug) (http://www.copasi.org) at 2008-06-12 09:00:21 UTC -->\n"
3062 "<COPASI xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://www.copasi.org/static/schema.xsd\" versionMajor=\"1\" versionMinor=\"0\" versionDevel=\"26\">\n"
3063 " <Model key=\"Model_0\" name=\"New Model\" timeUnit=\"s\" volumeUnit=\"ml\" quantityUnit=\"#\" type=\"deterministic\">\n"
3065 " <html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta name=\"qrichtext\" content=\"1\" /></head><body style=\"font-size:9pt;font-family:Sans Serif\">\n"
3066 "<p>Simple model with two species and two global parameters. The compartment is variable and one species is determined by an assignment rule.</p>\n"
3067 "<p>The substance unit is set to particle number.</p>\n"
3068 "<p>On export both species should be exported with the hasOnlySubstanceUnits flag set to true and the expression for the assignment should contain a reference to the global parameter.</p>\n"
3071 " <ListOfCompartments>\n"
3072 " <Compartment key=\"Compartment_0\" name=\"compartment\" simulationType=\"assignment\">\n"
3074 " <CN=Root,Model=New Model,Vector=Values[P],Reference=Value>\n"
3077 " </ListOfCompartments>\n"
3078 " <ListOfMetabolites>\n"
3079 " <Metabolite key=\"Metabolite_0\" name=\"A\" simulationType=\"assignment\" compartment=\"Compartment_0\">\n"
3081 " <CN=Root,Model=New Model,Vector=Values[K],Reference=Value>/<CN=Root,Model=New Model,Vector=Compartments[compartment],Reference=Volume>\n"
3084 " <Metabolite key=\"Metabolite_1\" name=\"B\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
3086 " </ListOfMetabolites>\n"
3087 " <ListOfModelValues>\n"
3088 " <ModelValue key=\"ModelValue_0\" name=\"K\" simulationType=\"fixed\">\n"
3090 " <ModelValue key=\"ModelValue_1\" name=\"P\" simulationType=\"fixed\">\n"
3092 " </ListOfModelValues>\n"
3093 " <StateTemplate>\n"
3094 " <StateTemplateVariable objectReference=\"Model_0\"/>\n"
3095 " <StateTemplateVariable objectReference=\"Metabolite_0\"/>\n"
3096 " <StateTemplateVariable objectReference=\"Metabolite_1\"/>\n"
3097 " <StateTemplateVariable objectReference=\"ModelValue_0\"/>\n"
3098 " <StateTemplateVariable objectReference=\"ModelValue_1\"/>\n"
3099 " <StateTemplateVariable objectReference=\"Compartment_0\"/>\n"
3100 " </StateTemplate>\n"
3101 " <InitialState type=\"initialState\">\n"
3102 " 0 1.2044283e+21 6.022141500000001e+20 2 3 1\n"
3103 " </InitialState>\n"
3116 CPPUNIT_ASSERT(result ==
true);
3117 CPPUNIT_ASSERT(pDataModel->
getModel() != NULL);
3120 CPPUNIT_ASSERT(pDocument != NULL);
3121 Model* pModel = pDocument->getModel();
3122 CPPUNIT_ASSERT(pModel != NULL);
3124 UnitDefinition* pUDef = pModel->getUnitDefinition(
"time");
3131 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
3132 pUnit = pUDef->getUnit(0);
3133 CPPUNIT_ASSERT(pUnit != NULL);
3134 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_SECOND);
3135 CPPUNIT_ASSERT(pUnit->getScale() == 0);
3136 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
3137 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
3140 pUDef = pModel->getUnitDefinition(
"substance");
3141 CPPUNIT_ASSERT(pUDef != NULL);
3142 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
3143 pUnit = pUDef->getUnit(0);
3144 CPPUNIT_ASSERT(pUnit != NULL);
3145 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_MOLE);
3146 CPPUNIT_ASSERT(pUnit->getScale() == -3);
3147 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
3148 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
3149 pUDef = pModel->getUnitDefinition(
"volume");
3150 CPPUNIT_ASSERT(pUDef != NULL);
3151 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
3152 pUnit = pUDef->getUnit(0);
3153 CPPUNIT_ASSERT(pUnit != NULL);
3154 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_LITRE);
3155 CPPUNIT_ASSERT(pUnit->getScale() == -3);
3156 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
3157 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
3160 CPPUNIT_ASSERT(pModel->getNumCompartments() == 1);
3161 Compartment* pCompartment = pModel->getCompartment(0);
3162 CPPUNIT_ASSERT(pCompartment->getConstant() ==
true);
3163 CPPUNIT_ASSERT(pModel->getNumParameters() == 1);
3164 Parameter* pParameter1 = pModel->getParameter(0);
3165 CPPUNIT_ASSERT(pParameter1 != NULL);
3166 CPPUNIT_ASSERT(pParameter1->getName() ==
"K");
3167 CPPUNIT_ASSERT(pModel->getNumSpecies() == 2);
3168 Species* pSpecies1 = pModel->getSpecies(0);
3169 CPPUNIT_ASSERT(pSpecies1->getHasOnlySubstanceUnits() ==
false);
3170 CPPUNIT_ASSERT(pSpecies1->getName() ==
"A");
3171 Species* pSpecies2 = pModel->getSpecies(1);
3172 CPPUNIT_ASSERT(pSpecies2->getHasOnlySubstanceUnits() ==
false);
3173 CPPUNIT_ASSERT(pSpecies2->getName() ==
"B");
3174 CPPUNIT_ASSERT(pModel->getNumRules() == 0);
3175 CPPUNIT_ASSERT(pModel->getNumReactions() == 0);
3176 CPPUNIT_ASSERT(pModel->getNumEvents() == 1);
3177 Event* pEvent = pModel->getEvent(0);
3178 CPPUNIT_ASSERT(pEvent != NULL);
3180 CPPUNIT_ASSERT(pEvent->isSetTrigger());
3181 Trigger* pTrigger = pEvent->getTrigger();
3182 CPPUNIT_ASSERT(pTrigger != NULL);
3183 CPPUNIT_ASSERT(pTrigger->isSetMath());
3184 const ASTNode* pMath = pTrigger->getMath();
3185 CPPUNIT_ASSERT(pMath != NULL);
3186 CPPUNIT_ASSERT(pMath->getType() == AST_RELATIONAL_GT);
3187 CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
3188 const ASTNode* pChild = pMath->getChild(0);
3189 CPPUNIT_ASSERT(pChild != NULL);
3190 CPPUNIT_ASSERT(pChild->getType() == AST_NAME_TIME);
3191 pChild = pMath->getChild(1);
3192 CPPUNIT_ASSERT(pChild != NULL);
3193 CPPUNIT_ASSERT(pChild->getType() == AST_REAL);
3194 CPPUNIT_ASSERT(fabs((pChild->getReal() - 2.0) / 2.0) < 1e-6);
3196 CPPUNIT_ASSERT(pEvent->isSetDelay());
3197 Delay* pDelay = pEvent->getDelay();
3198 CPPUNIT_ASSERT(pDelay != NULL);
3199 CPPUNIT_ASSERT(pDelay->isSetMath());
3200 pMath = pDelay->getMath();
3201 CPPUNIT_ASSERT(pMath != NULL);
3202 CPPUNIT_ASSERT(pMath->getType() == AST_REAL);
3203 CPPUNIT_ASSERT(fabs((pMath->getReal() - 4.0) / 4.0) < 1e-6);
3205 CPPUNIT_ASSERT(pEvent->getNumEventAssignments() == 1);
3206 EventAssignment* pEA = pEvent->getEventAssignment(0);
3207 CPPUNIT_ASSERT(pEA != NULL);
3208 CPPUNIT_ASSERT(pEA->getVariable() == pSpecies1->getId());
3209 pMath = pEA->getMath();
3210 CPPUNIT_ASSERT(pMath != NULL);
3213 CPPUNIT_ASSERT(pMath->getType() == AST_NAME);
3214 CPPUNIT_ASSERT(pMath->getName() == pParameter1->getId());
3218 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
3219 "<!-- generated with COPASI 4.4.26 (Debug) (http://www.copasi.org) at 2008-06-12 09:00:21 UTC -->\n"
3220 "<COPASI xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://www.copasi.org/static/schema.xsd\" versionMajor=\"1\" versionMinor=\"0\" versionDevel=\"26\">\n"
3221 " <Model key=\"Model_0\" name=\"New Model\" timeUnit=\"s\" volumeUnit=\"ml\" quantityUnit=\"mmol\" type=\"deterministic\">\n"
3223 " <html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta name=\"qrichtext\" content=\"1\" /></head><body style=\"font-size:9pt;font-family:Sans Serif\">\n"
3224 "<p>Simple model with two species and one global parameter. The compartment is fixed and one species is changed by an event assignment.</p>\n"
3225 "<p>The substance unit is set to mmol.</p>\n"
3226 "<p>On export both species should be exported with the hasOnlySubstanceUnits flag set to false and the expression for the event assignment should contain a reference to the global parameter.</p>\n"
3229 " <ListOfCompartments>\n"
3230 " <Compartment key=\"Compartment_0\" name=\"compartment\" simulationType=\"fixed\">\n"
3232 " </ListOfCompartments>\n"
3233 " <ListOfMetabolites>\n"
3234 " <Metabolite key=\"Metabolite_0\" name=\"A\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
3236 " <Metabolite key=\"Metabolite_1\" name=\"B\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
3238 " </ListOfMetabolites>\n"
3239 " <ListOfModelValues>\n"
3240 " <ModelValue key=\"ModelValue_0\" name=\"K\" simulationType=\"fixed\">\n"
3242 " </ListOfModelValues>\n"
3244 " <Event key=\"Event_0\" name=\"event\" delayAssignment=\"true\" >\n"
3245 " <TriggerExpression>\n"
3246 " <CN=Root,Model=New Model,Reference=Time> gt 2.0\n"
3247 " </TriggerExpression>\n"
3248 " <DelayExpression>\n"
3250 " </DelayExpression>\n"
3251 " <ListOfAssignments>\n"
3252 " <Assignment targetKey=\"Metabolite_0\">\n"
3254 " <CN=Root,Model=New Model,Vector=Values[K],Reference=Value>\n"
3257 " </ListOfAssignments>\n"
3259 " </ListOfEvents>\n"
3260 " <StateTemplate>\n"
3261 " <StateTemplateVariable objectReference=\"Model_0\"/>\n"
3262 " <StateTemplateVariable objectReference=\"Metabolite_0\"/>\n"
3263 " <StateTemplateVariable objectReference=\"Metabolite_1\"/>\n"
3264 " <StateTemplateVariable objectReference=\"ModelValue_0\"/>\n"
3265 " <StateTemplateVariable objectReference=\"Compartment_0\"/>\n"
3266 " </StateTemplate>\n"
3267 " <InitialState type=\"initialState\">\n"
3268 " 0 1.2044283e+21 6.022141500000001e+20 2 1\n"
3269 " </InitialState>\n"
3282 CPPUNIT_ASSERT(pDataModel->
getModel() != NULL);
3285 CPPUNIT_ASSERT(pDocument != NULL);
3286 Model* pModel = pDocument->getModel();
3287 CPPUNIT_ASSERT(pModel != NULL);
3289 UnitDefinition* pUDef = pModel->getUnitDefinition(
"time");
3296 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
3297 pUnit = pUDef->getUnit(0);
3298 CPPUNIT_ASSERT(pUnit != NULL);
3299 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_SECOND);
3300 CPPUNIT_ASSERT(pUnit->getScale() == 0);
3301 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
3302 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
3305 pUDef = pModel->getUnitDefinition(
"substance");
3306 CPPUNIT_ASSERT(pUDef != NULL);
3307 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
3308 pUnit = pUDef->getUnit(0);
3309 CPPUNIT_ASSERT(pUnit != NULL);
3310 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_MOLE);
3311 CPPUNIT_ASSERT(pUnit->getScale() == -3);
3312 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
3313 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
3314 pUDef = pModel->getUnitDefinition(
"volume");
3315 CPPUNIT_ASSERT(pUDef != NULL);
3316 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
3317 pUnit = pUDef->getUnit(0);
3318 CPPUNIT_ASSERT(pUnit != NULL);
3319 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_LITRE);
3320 CPPUNIT_ASSERT(pUnit->getScale() == -3);
3321 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
3322 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
3325 CPPUNIT_ASSERT(pModel->getNumCompartments() == 1);
3326 Compartment* pCompartment = pModel->getCompartment(0);
3327 CPPUNIT_ASSERT(pCompartment->getConstant() ==
false);
3328 CPPUNIT_ASSERT(pModel->getNumParameters() == 2);
3329 Parameter* pParameter1 = pModel->getParameter(0);
3330 CPPUNIT_ASSERT(pParameter1 != NULL);
3331 Parameter* pParameter2 = NULL;
3333 if (pParameter1->getName() ==
"K")
3335 pParameter2 = pModel->getParameter(1);
3339 pParameter2 = pParameter1;
3340 pParameter1 = pModel->getParameter(1);
3343 CPPUNIT_ASSERT(pParameter2 != NULL);
3344 CPPUNIT_ASSERT(pParameter1->getName() ==
"K");
3345 CPPUNIT_ASSERT(pParameter2->getName() ==
"P");
3346 CPPUNIT_ASSERT(pModel->getNumSpecies() == 2);
3347 Species* pSpecies1 = pModel->getSpecies(0);
3348 CPPUNIT_ASSERT(pSpecies1->getHasOnlySubstanceUnits() ==
true);
3349 std::string idSpeciesA = pSpecies1->getId();
3350 Species* pSpecies2 = pModel->getSpecies(1);
3351 CPPUNIT_ASSERT(pSpecies2->getHasOnlySubstanceUnits() ==
true);
3352 CPPUNIT_ASSERT(pModel->getNumRules() == 1);
3353 Rule* pRule = pModel->getRule(0);
3354 CPPUNIT_ASSERT(pRule != NULL);
3355 CPPUNIT_ASSERT(pRule->getVariable() == pCompartment->getId());
3356 CPPUNIT_ASSERT(pRule->isSetMath() ==
true);
3357 const ASTNode* pMath = pRule->getMath();
3358 CPPUNIT_ASSERT(pMath != NULL);
3359 CPPUNIT_ASSERT(pMath->getType() == AST_NAME);
3360 CPPUNIT_ASSERT(pMath->getName() == pParameter2->getId());
3361 CPPUNIT_ASSERT(pModel->getNumReactions() == 0);
3362 CPPUNIT_ASSERT(pModel->getNumEvents() == 1);
3363 Event* pEvent = pModel->getEvent(0);
3364 CPPUNIT_ASSERT(pEvent != NULL);
3366 CPPUNIT_ASSERT(pEvent->isSetTrigger());
3367 Trigger* pTrigger = pEvent->getTrigger();
3368 CPPUNIT_ASSERT(pTrigger != NULL);
3369 CPPUNIT_ASSERT(pTrigger->isSetMath());
3370 pMath = pTrigger->getMath();
3371 CPPUNIT_ASSERT(pMath != NULL);
3372 CPPUNIT_ASSERT(pMath->getType() == AST_RELATIONAL_GT);
3373 CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
3374 ASTNode* pChild = pMath->getChild(0);
3375 CPPUNIT_ASSERT(pChild != NULL);
3376 CPPUNIT_ASSERT(pChild->getType() == AST_NAME_TIME);
3377 pChild = pMath->getChild(1);
3378 CPPUNIT_ASSERT(pChild != NULL);
3379 CPPUNIT_ASSERT(pChild->getType() == AST_REAL);
3380 CPPUNIT_ASSERT(fabs((pChild->getReal() - 2.0) / 2.0) < 1e-6);
3382 CPPUNIT_ASSERT(pEvent->isSetDelay());
3383 Delay* pDelay = pEvent->getDelay();
3384 CPPUNIT_ASSERT(pDelay != NULL);
3385 CPPUNIT_ASSERT(pDelay->isSetMath());
3386 pMath = pDelay->getMath();
3387 CPPUNIT_ASSERT(pMath != NULL);
3388 CPPUNIT_ASSERT(pMath->getType() == AST_REAL);
3389 CPPUNIT_ASSERT(fabs((pMath->getReal() - 4.0) / 4.0) < 1e-6);
3391 CPPUNIT_ASSERT(pEvent->getNumEventAssignments() == 1);
3392 EventAssignment* pEA = pEvent->getEventAssignment(0);
3393 CPPUNIT_ASSERT(pEA != NULL);
3394 CPPUNIT_ASSERT(pEA->getVariable() == pSpecies1->getId());
3395 pMath = pEA->getMath();
3396 CPPUNIT_ASSERT(pMath != NULL);
3399 CPPUNIT_ASSERT(pMath->getType() == AST_TIMES);
3400 CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
3401 ASTNode* pChild1 = pMath->getChild(0);
3402 CPPUNIT_ASSERT(pChild1 != NULL);
3403 CPPUNIT_ASSERT(pChild1->getType() == AST_NAME);
3404 ASTNode* pChild2 = pMath->getChild(1);
3405 CPPUNIT_ASSERT(pChild2 != NULL);
3406 CPPUNIT_ASSERT(pChild2->getType() == AST_NAME);
3407 CPPUNIT_ASSERT(pChild1->getName() == pParameter1->getId() || pChild2->getName() == pParameter1->getId());
3408 CPPUNIT_ASSERT(pChild1->getName() == pCompartment->getId() || pChild2->getName() == pCompartment->getId());
3412 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
3413 "<!-- generated with COPASI 4.4.26 (Debug) (http://www.copasi.org) at 2008-06-12 09:00:21 UTC -->\n"
3414 "<COPASI xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://www.copasi.org/static/schema.xsd\" versionMajor=\"1\" versionMinor=\"0\" versionDevel=\"26\">\n"
3415 " <Model key=\"Model_0\" name=\"New Model\" timeUnit=\"s\" volumeUnit=\"ml\" quantityUnit=\"mmol\" type=\"deterministic\">\n"
3417 " <html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta name=\"qrichtext\" content=\"1\" /></head><body style=\"font-size:9pt;font-family:Sans Serif\">\n"
3418 "<p>Simple model with two species and two global parameters. The compartment is variable and one species is changed by an event assignment.</p>\n"
3419 "<p>The substance unit is set to mmol.</p>\n"
3420 "<p>On export both species should be exported with the hasOnlySubstanceUnits flag set to true and the expression for the event assignment should contain a reference to the global parameter multiplied by the compartment volume.</p>\n"
3423 " <ListOfCompartments>\n"
3424 " <Compartment key=\"Compartment_0\" name=\"compartment\" simulationType=\"assignment\">\n"
3426 " <CN=Root,Model=New Model,Vector=Values[P],Reference=Value>\n"
3429 " </ListOfCompartments>\n"
3430 " <ListOfMetabolites>\n"
3431 " <Metabolite key=\"Metabolite_0\" name=\"A\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
3433 " <Metabolite key=\"Metabolite_1\" name=\"B\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
3435 " </ListOfMetabolites>\n"
3436 " <ListOfModelValues>\n"
3437 " <ModelValue key=\"ModelValue_0\" name=\"K\" simulationType=\"fixed\">\n"
3439 " <ModelValue key=\"ModelValue_1\" name=\"P\" simulationType=\"fixed\">\n"
3441 " </ListOfModelValues>\n"
3443 " <Event key=\"Event_0\" name=\"event\" delayAssignment=\"true\">\n"
3444 " <TriggerExpression>\n"
3445 " <CN=Root,Model=New Model,Reference=Time> gt 2.0\n"
3446 " </TriggerExpression>\n"
3447 " <DelayExpression>\n"
3449 " </DelayExpression>\n"
3450 " <ListOfAssignments>\n"
3451 " <Assignment targetKey=\"Metabolite_0\">\n"
3453 " <CN=Root,Model=New Model,Vector=Values[K],Reference=Value>\n"
3456 " </ListOfAssignments>\n"
3458 " </ListOfEvents>\n"
3459 " <StateTemplate>\n"
3460 " <StateTemplateVariable objectReference=\"Model_0\"/>\n"
3461 " <StateTemplateVariable objectReference=\"Metabolite_0\"/>\n"
3462 " <StateTemplateVariable objectReference=\"Metabolite_1\"/>\n"
3463 " <StateTemplateVariable objectReference=\"ModelValue_0\"/>\n"
3464 " <StateTemplateVariable objectReference=\"Compartment_0\"/>\n"
3465 " </StateTemplate>\n"
3466 " <InitialState type=\"initialState\">\n"
3467 " 0 1.2044283e+21 6.022141500000001e+20 2 1\n"
3468 " </InitialState>\n"
3481 CPPUNIT_ASSERT(pDataModel->
getModel() != NULL);
3484 CPPUNIT_ASSERT(pDocument != NULL);
3485 Model* pModel = pDocument->getModel();
3486 CPPUNIT_ASSERT(pModel != NULL);
3488 UnitDefinition* pUDef = pModel->getUnitDefinition(
"time");
3495 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
3496 pUnit = pUDef->getUnit(0);
3497 CPPUNIT_ASSERT(pUnit != NULL);
3498 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_SECOND);
3499 CPPUNIT_ASSERT(pUnit->getScale() == 0);
3500 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
3501 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
3504 pUDef = pModel->getUnitDefinition(
"substance");
3505 CPPUNIT_ASSERT(pUDef != NULL);
3506 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
3507 pUnit = pUDef->getUnit(0);
3508 CPPUNIT_ASSERT(pUnit != NULL);
3509 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_ITEM);
3510 CPPUNIT_ASSERT(pUnit->getScale() == 0);
3511 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
3512 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
3513 pUDef = pModel->getUnitDefinition(
"volume");
3514 CPPUNIT_ASSERT(pUDef != NULL);
3515 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
3516 pUnit = pUDef->getUnit(0);
3517 CPPUNIT_ASSERT(pUnit != NULL);
3518 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_LITRE);
3519 CPPUNIT_ASSERT(pUnit->getScale() == -3);
3520 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
3521 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
3524 CPPUNIT_ASSERT(pModel->getNumCompartments() == 1);
3525 Compartment* pCompartment = pModel->getCompartment(0);
3526 CPPUNIT_ASSERT(pCompartment->getConstant() ==
true);
3527 CPPUNIT_ASSERT(pModel->getNumParameters() == 1);
3528 Parameter* pParameter1 = pModel->getParameter(0);
3529 CPPUNIT_ASSERT(pParameter1 != NULL);
3530 CPPUNIT_ASSERT(pParameter1->getName() ==
"K");
3531 CPPUNIT_ASSERT(pModel->getNumSpecies() == 2);
3532 Species* pSpecies1 = pModel->getSpecies(0);
3533 CPPUNIT_ASSERT(pSpecies1->getHasOnlySubstanceUnits() ==
false);
3534 std::string idSpeciesA = pSpecies1->getId();
3535 Species* pSpecies2 = pModel->getSpecies(1);
3536 CPPUNIT_ASSERT(pSpecies2->getHasOnlySubstanceUnits() ==
false);
3537 CPPUNIT_ASSERT(pModel->getNumRules() == 0);
3538 CPPUNIT_ASSERT(pModel->getNumReactions() == 0);
3539 CPPUNIT_ASSERT(pModel->getNumEvents() == 1);
3540 Event* pEvent = pModel->getEvent(0);
3541 CPPUNIT_ASSERT(pEvent != NULL);
3543 CPPUNIT_ASSERT(pEvent->isSetTrigger());
3544 Trigger* pTrigger = pEvent->getTrigger();
3545 CPPUNIT_ASSERT(pTrigger != NULL);
3546 CPPUNIT_ASSERT(pTrigger->isSetMath());
3547 const ASTNode* pMath = pTrigger->getMath();
3548 CPPUNIT_ASSERT(pMath != NULL);
3549 CPPUNIT_ASSERT(pMath->getType() == AST_RELATIONAL_GT);
3550 CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
3551 const ASTNode* pChild = pMath->getChild(0);
3552 CPPUNIT_ASSERT(pChild != NULL);
3553 CPPUNIT_ASSERT(pChild->getType() == AST_NAME_TIME);
3554 pChild = pMath->getChild(1);
3555 CPPUNIT_ASSERT(pChild != NULL);
3556 CPPUNIT_ASSERT(pChild->getType() == AST_REAL);
3557 CPPUNIT_ASSERT(fabs((pChild->getReal() - 2.0) / 2.0) < 1e-6);
3559 CPPUNIT_ASSERT(pEvent->isSetDelay());
3560 Delay* pDelay = pEvent->getDelay();
3561 CPPUNIT_ASSERT(pDelay != NULL);
3562 CPPUNIT_ASSERT(pDelay->isSetMath());
3563 pMath = pDelay->getMath();
3564 CPPUNIT_ASSERT(pMath != NULL);
3565 CPPUNIT_ASSERT(pMath->getType() == AST_REAL);
3566 CPPUNIT_ASSERT(fabs((pMath->getReal() - 4.0) / 4.0) < 1e-6);
3568 CPPUNIT_ASSERT(pEvent->getNumEventAssignments() == 1);
3569 EventAssignment* pEA = pEvent->getEventAssignment(0);
3570 CPPUNIT_ASSERT(pEA != NULL);
3571 CPPUNIT_ASSERT(pEA->getVariable() == pSpecies1->getId());
3572 pMath = pEA->getMath();
3573 CPPUNIT_ASSERT(pMath != NULL);
3576 CPPUNIT_ASSERT(pMath->getType() == AST_NAME);
3577 CPPUNIT_ASSERT(pMath->getName() == pParameter1->getId());
3581 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
3582 "<!-- generated with COPASI 4.4.26 (Debug) (http://www.copasi.org) at 2008-06-12 09:00:21 UTC -->\n"
3583 "<COPASI xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://www.copasi.org/static/schema.xsd\" versionMajor=\"1\" versionMinor=\"0\" versionDevel=\"26\">\n"
3584 " <Model key=\"Model_0\" name=\"New Model\" timeUnit=\"s\" volumeUnit=\"ml\" quantityUnit=\"#\" type=\"deterministic\">\n"
3586 " <html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta name=\"qrichtext\" content=\"1\" /></head><body style=\"font-size:9pt;font-family:Sans Serif\">\n"
3587 "<p>Simple model with two species and one global parameter. The compartment is fixed and one species is changed by an event assignment.</p>\n"
3588 "<p>The substance unit is set to particle number.</p>\n"
3589 "<p>On export both species should be exported with the hasOnlySubstanceUnits flag set to false and the expression for the event assignment should contain a reference to the global parameter.</p>\n"
3592 " <ListOfCompartments>\n"
3593 " <Compartment key=\"Compartment_0\" name=\"compartment\" simulationType=\"fixed\">\n"
3595 " </ListOfCompartments>\n"
3596 " <ListOfMetabolites>\n"
3597 " <Metabolite key=\"Metabolite_0\" name=\"A\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
3599 " <Metabolite key=\"Metabolite_1\" name=\"B\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
3601 " </ListOfMetabolites>\n"
3602 " <ListOfModelValues>\n"
3603 " <ModelValue key=\"ModelValue_0\" name=\"K\" simulationType=\"fixed\">\n"
3605 " </ListOfModelValues>\n"
3607 " <Event key=\"Event_0\" name=\"event\" delayAssignment=\"true\">\n"
3608 " <TriggerExpression>\n"
3609 " <CN=Root,Model=New Model,Reference=Time> gt 2.0\n"
3610 " </TriggerExpression>\n"
3611 " <DelayExpression>\n"
3613 " </DelayExpression>\n"
3614 " <ListOfAssignments>\n"
3615 " <Assignment targetKey=\"Metabolite_0\">\n"
3617 " <CN=Root,Model=New Model,Vector=Values[K],Reference=Value>\n"
3620 " </ListOfAssignments>\n"
3622 " </ListOfEvents>\n"
3623 " <StateTemplate>\n"
3624 " <StateTemplateVariable objectReference=\"Model_0\"/>\n"
3625 " <StateTemplateVariable objectReference=\"Metabolite_0\"/>\n"
3626 " <StateTemplateVariable objectReference=\"Metabolite_1\"/>\n"
3627 " <StateTemplateVariable objectReference=\"ModelValue_0\"/>\n"
3628 " <StateTemplateVariable objectReference=\"Compartment_0\"/>\n"
3629 " </StateTemplate>\n"
3630 " <InitialState type=\"initialState\">\n"
3631 " 0 1.2044283e+21 6.022141500000001e+20 2 1\n"
3632 " </InitialState>\n"
3645 CPPUNIT_ASSERT(pDataModel->
getModel() != NULL);
3648 CPPUNIT_ASSERT(pDocument != NULL);
3649 Model* pModel = pDocument->getModel();
3650 CPPUNIT_ASSERT(pModel != NULL);
3652 UnitDefinition* pUDef = pModel->getUnitDefinition(
"time");
3659 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
3660 pUnit = pUDef->getUnit(0);
3661 CPPUNIT_ASSERT(pUnit != NULL);
3662 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_SECOND);
3663 CPPUNIT_ASSERT(pUnit->getScale() == 0);
3664 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
3665 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
3668 pUDef = pModel->getUnitDefinition(
"substance");
3669 CPPUNIT_ASSERT(pUDef != NULL);
3670 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
3671 pUnit = pUDef->getUnit(0);
3672 CPPUNIT_ASSERT(pUnit != NULL);
3673 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_ITEM);
3674 CPPUNIT_ASSERT(pUnit->getScale() == 0);
3675 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
3676 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
3677 pUDef = pModel->getUnitDefinition(
"volume");
3678 CPPUNIT_ASSERT(pUDef != NULL);
3679 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
3680 pUnit = pUDef->getUnit(0);
3681 CPPUNIT_ASSERT(pUnit != NULL);
3682 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_LITRE);
3683 CPPUNIT_ASSERT(pUnit->getScale() == -3);
3684 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
3685 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
3688 CPPUNIT_ASSERT(pModel->getNumCompartments() == 1);
3689 Compartment* pCompartment = pModel->getCompartment(0);
3690 CPPUNIT_ASSERT(pCompartment->getConstant() ==
false);
3691 CPPUNIT_ASSERT(pModel->getNumParameters() == 2);
3692 Parameter* pParameter1 = pModel->getParameter(0);
3693 CPPUNIT_ASSERT(pParameter1 != NULL);
3694 Parameter* pParameter2 = NULL;
3696 if (pParameter1->getName() ==
"K")
3698 pParameter2 = pModel->getParameter(1);
3702 pParameter2 = pParameter1;
3703 pParameter1 = pModel->getParameter(1);
3706 CPPUNIT_ASSERT(pParameter2 != NULL);
3707 CPPUNIT_ASSERT(pParameter1->getName() ==
"K");
3708 CPPUNIT_ASSERT(pParameter2->getName() ==
"P");
3709 CPPUNIT_ASSERT(pModel->getNumSpecies() == 2);
3710 Species* pSpecies1 = pModel->getSpecies(0);
3711 CPPUNIT_ASSERT(pSpecies1->getHasOnlySubstanceUnits() ==
true);
3712 std::string idSpeciesA = pSpecies1->getId();
3713 Species* pSpecies2 = pModel->getSpecies(1);
3714 CPPUNIT_ASSERT(pSpecies2->getHasOnlySubstanceUnits() ==
true);
3715 CPPUNIT_ASSERT(pModel->getNumRules() == 1);
3716 Rule* pRule = pModel->getRule(0);
3717 CPPUNIT_ASSERT(pRule != NULL);
3718 CPPUNIT_ASSERT(pRule->getVariable() == pCompartment->getId());
3719 CPPUNIT_ASSERT(pRule->isSetMath() ==
true);
3720 const ASTNode* pMath = pRule->getMath();
3721 CPPUNIT_ASSERT(pMath != NULL);
3722 CPPUNIT_ASSERT(pMath->getType() == AST_NAME);
3723 CPPUNIT_ASSERT(pMath->getName() == pParameter2->getId());
3724 CPPUNIT_ASSERT(pModel->getNumReactions() == 0);
3725 CPPUNIT_ASSERT(pModel->getNumEvents() == 1);
3726 Event* pEvent = pModel->getEvent(0);
3727 CPPUNIT_ASSERT(pEvent != NULL);
3729 CPPUNIT_ASSERT(pEvent->isSetTrigger());
3730 Trigger* pTrigger = pEvent->getTrigger();
3731 CPPUNIT_ASSERT(pTrigger != NULL);
3732 CPPUNIT_ASSERT(pTrigger->isSetMath());
3733 pMath = pTrigger->getMath();
3734 CPPUNIT_ASSERT(pMath != NULL);
3735 CPPUNIT_ASSERT(pMath->getType() == AST_RELATIONAL_GT);
3736 CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
3737 const ASTNode* pChild = pMath->getChild(0);
3738 CPPUNIT_ASSERT(pChild != NULL);
3739 CPPUNIT_ASSERT(pChild->getType() == AST_NAME_TIME);
3740 pChild = pMath->getChild(1);
3741 CPPUNIT_ASSERT(pChild != NULL);
3742 CPPUNIT_ASSERT(pChild->getType() == AST_REAL);
3743 CPPUNIT_ASSERT(fabs((pChild->getReal() - 2.0) / 2.0) < 1e-6);
3745 CPPUNIT_ASSERT(pEvent->isSetDelay());
3746 Delay* pDelay = pEvent->getDelay();
3747 CPPUNIT_ASSERT(pDelay != NULL);
3748 CPPUNIT_ASSERT(pDelay->isSetMath());
3749 pMath = pDelay->getMath();
3750 CPPUNIT_ASSERT(pMath != NULL);
3751 CPPUNIT_ASSERT(pMath->getType() == AST_REAL);
3752 CPPUNIT_ASSERT(fabs((pMath->getReal() - 4.0) / 4.0) < 1e-6);
3754 CPPUNIT_ASSERT(pEvent->getNumEventAssignments() == 1);
3755 EventAssignment* pEA = pEvent->getEventAssignment(0);
3756 CPPUNIT_ASSERT(pEA != NULL);
3757 CPPUNIT_ASSERT(pEA->getVariable() == pSpecies1->getId());
3758 pMath = pEA->getMath();
3759 CPPUNIT_ASSERT(pMath != NULL);
3762 CPPUNIT_ASSERT(pMath->getType() == AST_TIMES);
3763 CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
3764 const ASTNode* pChild1 = pMath->getChild(0);
3765 CPPUNIT_ASSERT(pChild1 != NULL);
3766 CPPUNIT_ASSERT(pChild1->getType() == AST_NAME);
3767 const ASTNode* pChild2 = pMath->getChild(1);
3768 CPPUNIT_ASSERT(pChild2 != NULL);
3769 CPPUNIT_ASSERT(pChild2->getType() == AST_NAME);
3770 CPPUNIT_ASSERT(pChild1->getName() == pParameter1->getId() || pChild2->getName() == pParameter1->getId());
3771 CPPUNIT_ASSERT(pChild1->getName() == pCompartment->getId() || pChild2->getName() == pCompartment->getId());
3775 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
3776 "<!-- generated with COPASI 4.4.26 (Debug) (http://www.copasi.org) at 2008-06-12 09:00:21 UTC -->\n"
3777 "<COPASI xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://www.copasi.org/static/schema.xsd\" versionMajor=\"1\" versionMinor=\"0\" versionDevel=\"26\">\n"
3778 " <Model key=\"Model_0\" name=\"New Model\" timeUnit=\"s\" volumeUnit=\"ml\" quantityUnit=\"#\" type=\"deterministic\">\n"
3780 " <html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta name=\"qrichtext\" content=\"1\" /></head><body style=\"font-size:9pt;font-family:Sans Serif\">\n"
3781 "<p>Simple model with two species and two global parameters. The compartment is variable and one species is changed by an event assignment.</p>\n"
3782 "<p>The substance unit is set to particle number.</p>\n"
3783 "<p>On export both species should be exported with the hasOnlySubstanceUnits flag set to true and the expression for the event assignment should contain a reference to the global parameter multiplied by the compartment volume.</p>\n"
3786 " <ListOfCompartments>\n"
3787 " <Compartment key=\"Compartment_0\" name=\"compartment\" simulationType=\"assignment\">\n"
3789 " <CN=Root,Model=New Model,Vector=Values[P],Reference=Value>\n"
3792 " </ListOfCompartments>\n"
3793 " <ListOfMetabolites>\n"
3794 " <Metabolite key=\"Metabolite_0\" name=\"A\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
3796 " <Metabolite key=\"Metabolite_1\" name=\"B\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
3798 " </ListOfMetabolites>\n"
3799 " <ListOfModelValues>\n"
3800 " <ModelValue key=\"ModelValue_0\" name=\"K\" simulationType=\"fixed\">\n"
3802 " <ModelValue key=\"ModelValue_1\" name=\"P\" simulationType=\"fixed\">\n"
3804 " </ListOfModelValues>\n"
3806 " <Event key=\"Event_0\" name=\"event\" delayAssignment=\"true\">\n"
3807 " <TriggerExpression>\n"
3808 " <CN=Root,Model=New Model,Reference=Time> gt 2.0\n"
3809 " </TriggerExpression>\n"
3810 " <DelayExpression>\n"
3812 " </DelayExpression>\n"
3813 " <ListOfAssignments>\n"
3814 " <Assignment targetKey=\"Metabolite_0\">\n"
3816 " <CN=Root,Model=New Model,Vector=Values[K],Reference=Value>\n"
3819 " </ListOfAssignments>\n"
3821 " </ListOfEvents>\n"
3822 " <StateTemplate>\n"
3823 " <StateTemplateVariable objectReference=\"Model_0\"/>\n"
3824 " <StateTemplateVariable objectReference=\"Metabolite_0\"/>\n"
3825 " <StateTemplateVariable objectReference=\"Metabolite_1\"/>\n"
3826 " <StateTemplateVariable objectReference=\"ModelValue_0\"/>\n"
3827 " <StateTemplateVariable objectReference=\"Compartment_0\"/>\n"
3828 " </StateTemplate>\n"
3829 " <InitialState type=\"initialState\">\n"
3830 " 0 1.2044283e+21 6.022141500000001e+20 2 1\n"
3831 " </InitialState>\n"
3844 CPPUNIT_ASSERT(pDataModel->
getModel() != NULL);
3847 CPPUNIT_ASSERT(pDocument != NULL);
3848 Model* pModel = pDocument->getModel();
3849 CPPUNIT_ASSERT(pModel != NULL);
3851 UnitDefinition* pUDef = pModel->getUnitDefinition(
"time");
3858 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
3859 pUnit = pUDef->getUnit(0);
3860 CPPUNIT_ASSERT(pUnit != NULL);
3861 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_SECOND);
3862 CPPUNIT_ASSERT(pUnit->getScale() == 0);
3863 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
3864 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
3867 pUDef = pModel->getUnitDefinition(
"substance");
3868 CPPUNIT_ASSERT(pUDef != NULL);
3869 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
3870 pUnit = pUDef->getUnit(0);
3871 CPPUNIT_ASSERT(pUnit != NULL);
3872 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_MOLE);
3873 CPPUNIT_ASSERT(pUnit->getScale() == -3);
3874 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
3875 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
3876 pUDef = pModel->getUnitDefinition(
"volume");
3877 CPPUNIT_ASSERT(pUDef != NULL);
3878 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
3879 pUnit = pUDef->getUnit(0);
3880 CPPUNIT_ASSERT(pUnit != NULL);
3881 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_LITRE);
3882 CPPUNIT_ASSERT(pUnit->getScale() == -3);
3883 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
3884 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
3887 CPPUNIT_ASSERT(pModel->getNumCompartments() == 1);
3888 Compartment* pCompartment = pModel->getCompartment(0);
3889 CPPUNIT_ASSERT(pCompartment->getConstant() ==
true);
3890 CPPUNIT_ASSERT(pModel->getNumParameters() == 1);
3891 Parameter* pParameter1 = pModel->getParameter(0);
3892 CPPUNIT_ASSERT(pParameter1 != NULL);
3893 CPPUNIT_ASSERT(pParameter1->getName() ==
"K");
3894 CPPUNIT_ASSERT(pModel->getNumSpecies() == 2);
3895 Species* pSpecies1 = pModel->getSpecies(0);
3896 CPPUNIT_ASSERT(pSpecies1->getHasOnlySubstanceUnits() ==
false);
3897 std::string idSpeciesA = pSpecies1->getId();
3898 Species* pSpecies2 = pModel->getSpecies(1);
3899 CPPUNIT_ASSERT(pSpecies2->getHasOnlySubstanceUnits() ==
false);
3900 CPPUNIT_ASSERT(pModel->getNumRules() == 0);
3901 CPPUNIT_ASSERT(pModel->getNumReactions() == 0);
3902 CPPUNIT_ASSERT(pModel->getNumEvents() == 1);
3903 Event* pEvent = pModel->getEvent(0);
3904 CPPUNIT_ASSERT(pEvent != NULL);
3906 CPPUNIT_ASSERT(pEvent->isSetTrigger());
3907 Trigger* pTrigger = pEvent->getTrigger();
3908 CPPUNIT_ASSERT(pTrigger != NULL);
3909 CPPUNIT_ASSERT(pTrigger->isSetMath());
3910 const ASTNode* pMath = pTrigger->getMath();
3911 CPPUNIT_ASSERT(pMath != NULL);
3912 CPPUNIT_ASSERT(pMath->getType() == AST_RELATIONAL_GT);
3913 CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
3914 const ASTNode* pChild = pMath->getChild(0);
3915 CPPUNIT_ASSERT(pChild != NULL);
3916 CPPUNIT_ASSERT(pChild->getType() == AST_NAME_TIME);
3917 pChild = pMath->getChild(1);
3918 CPPUNIT_ASSERT(pChild != NULL);
3919 CPPUNIT_ASSERT(pChild->getType() == AST_REAL);
3920 CPPUNIT_ASSERT(fabs((pChild->getReal() - 2.0) / 2.0) < 1e-6);
3922 CPPUNIT_ASSERT(pEvent->isSetDelay());
3923 Delay* pDelay = pEvent->getDelay();
3924 CPPUNIT_ASSERT(pDelay != NULL);
3925 CPPUNIT_ASSERT(pDelay->isSetMath());
3926 pMath = pDelay->getMath();
3927 CPPUNIT_ASSERT(pMath != NULL);
3928 CPPUNIT_ASSERT(pMath->getType() == AST_REAL);
3929 CPPUNIT_ASSERT(fabs((pMath->getReal() - 4.0) / 4.0) < 1e-6);
3931 CPPUNIT_ASSERT(pEvent->getNumEventAssignments() == 1);
3932 EventAssignment* pEA = pEvent->getEventAssignment(0);
3933 CPPUNIT_ASSERT(pEA != NULL);
3934 CPPUNIT_ASSERT(pEA->getVariable() == pSpecies1->getId());
3935 pMath = pEA->getMath();
3936 CPPUNIT_ASSERT(pMath != NULL);
3939 CPPUNIT_ASSERT(pMath->getType() == AST_DIVIDE);
3940 CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
3941 pChild = pMath->getChild(0);
3942 CPPUNIT_ASSERT(pChild != NULL);
3943 CPPUNIT_ASSERT(pChild->getType() == AST_NAME);
3944 CPPUNIT_ASSERT(pChild->getName() == pParameter1->getId());
3945 pChild = pMath->getChild(1);
3946 CPPUNIT_ASSERT(pChild != NULL);
3947 CPPUNIT_ASSERT(pChild->getType() == AST_NAME);
3948 CPPUNIT_ASSERT(pChild->getName() == pCompartment->getId());
3952 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
3953 "<!-- generated with COPASI 4.4.26 (Debug) (http://www.copasi.org) at 2008-06-12 09:00:21 UTC -->\n"
3954 "<COPASI xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://www.copasi.org/static/schema.xsd\" versionMajor=\"1\" versionMinor=\"0\" versionDevel=\"26\">\n"
3955 " <Model key=\"Model_0\" name=\"New Model\" timeUnit=\"s\" volumeUnit=\"ml\" quantityUnit=\"mmol\" type=\"deterministic\">\n"
3957 " <html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta name=\"qrichtext\" content=\"1\" /></head><body style=\"font-size:9pt;font-family:Sans Serif\">\n"
3958 "<p>Simple model with two species and one global parameter. The compartment is fixed and one species is changed by an event assignment.</p>\n"
3959 "<p>The substance unit is set to mmol.</p>\n"
3960 "<p>On export both species should be exported with the hasOnlySubstanceUnits flag set to false and the expression for the event assignment should contain a reference to the global parameter divided by the compartment volume.</p>\n"
3963 " <ListOfCompartments>\n"
3964 " <Compartment key=\"Compartment_0\" name=\"compartment\" simulationType=\"fixed\">\n"
3966 " </ListOfCompartments>\n"
3967 " <ListOfMetabolites>\n"
3968 " <Metabolite key=\"Metabolite_0\" name=\"A\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
3970 " <Metabolite key=\"Metabolite_1\" name=\"B\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
3972 " </ListOfMetabolites>\n"
3973 " <ListOfModelValues>\n"
3974 " <ModelValue key=\"ModelValue_0\" name=\"K\" simulationType=\"fixed\">\n"
3976 " </ListOfModelValues>\n"
3978 " <Event key=\"Event_0\" name=\"event\" delayAssignment=\"true\">\n"
3979 " <TriggerExpression>\n"
3980 " <CN=Root,Model=New Model,Reference=Time> gt 2.0\n"
3981 " </TriggerExpression>\n"
3982 " <DelayExpression>\n"
3984 " </DelayExpression>\n"
3985 " <ListOfAssignments>\n"
3986 " <Assignment targetKey=\"Metabolite_0\">\n"
3988 " <CN=Root,Model=New Model,Vector=Values[K],Reference=Value>/<CN=Root,Model=New Model,Vector=Compartments[compartment],Reference=Volume>\n"
3991 " </ListOfAssignments>\n"
3993 " </ListOfEvents>\n"
3994 " <StateTemplate>\n"
3995 " <StateTemplateVariable objectReference=\"Model_0\"/>\n"
3996 " <StateTemplateVariable objectReference=\"Metabolite_0\"/>\n"
3997 " <StateTemplateVariable objectReference=\"Metabolite_1\"/>\n"
3998 " <StateTemplateVariable objectReference=\"ModelValue_0\"/>\n"
3999 " <StateTemplateVariable objectReference=\"Compartment_0\"/>\n"
4000 " </StateTemplate>\n"
4001 " <InitialState type=\"initialState\">\n"
4002 " 0 1.2044283e+21 6.022141500000001e+20 2 1\n"
4003 " </InitialState>\n"
4016 CPPUNIT_ASSERT(pDataModel->
getModel() != NULL);
4019 CPPUNIT_ASSERT(pDocument != NULL);
4020 Model* pModel = pDocument->getModel();
4021 CPPUNIT_ASSERT(pModel != NULL);
4023 UnitDefinition* pUDef = pModel->getUnitDefinition(
"time");
4030 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
4031 pUnit = pUDef->getUnit(0);
4032 CPPUNIT_ASSERT(pUnit != NULL);
4033 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_SECOND);
4034 CPPUNIT_ASSERT(pUnit->getScale() == 0);
4035 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
4036 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
4039 pUDef = pModel->getUnitDefinition(
"substance");
4040 CPPUNIT_ASSERT(pUDef != NULL);
4041 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
4042 pUnit = pUDef->getUnit(0);
4043 CPPUNIT_ASSERT(pUnit != NULL);
4044 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_MOLE);
4045 CPPUNIT_ASSERT(pUnit->getScale() == -3);
4046 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
4047 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
4048 pUDef = pModel->getUnitDefinition(
"volume");
4049 CPPUNIT_ASSERT(pUDef != NULL);
4050 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
4051 pUnit = pUDef->getUnit(0);
4052 CPPUNIT_ASSERT(pUnit != NULL);
4053 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_LITRE);
4054 CPPUNIT_ASSERT(pUnit->getScale() == -3);
4055 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
4056 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
4059 CPPUNIT_ASSERT(pModel->getNumCompartments() == 1);
4060 Compartment* pCompartment = pModel->getCompartment(0);
4061 CPPUNIT_ASSERT(pCompartment->getConstant() ==
false);
4062 CPPUNIT_ASSERT(pModel->getNumParameters() == 2);
4063 Parameter* pParameter1 = pModel->getParameter(0);
4064 CPPUNIT_ASSERT(pParameter1 != NULL);
4065 Parameter* pParameter2 = NULL;
4067 if (pParameter1->getName() ==
"K")
4069 pParameter2 = pModel->getParameter(1);
4073 pParameter2 = pParameter1;
4074 pParameter1 = pModel->getParameter(1);
4077 CPPUNIT_ASSERT(pParameter2 != NULL);
4078 CPPUNIT_ASSERT(pParameter1->getName() ==
"K");
4079 CPPUNIT_ASSERT(pParameter2->getName() ==
"P");
4080 CPPUNIT_ASSERT(pModel->getNumSpecies() == 2);
4081 Species* pSpecies1 = pModel->getSpecies(0);
4082 CPPUNIT_ASSERT(pSpecies1->getHasOnlySubstanceUnits() ==
true);
4083 std::string idSpeciesA = pSpecies1->getId();
4084 Species* pSpecies2 = pModel->getSpecies(1);
4085 CPPUNIT_ASSERT(pSpecies2->getHasOnlySubstanceUnits() ==
true);
4086 CPPUNIT_ASSERT(pModel->getNumRules() == 1);
4087 Rule* pRule = pModel->getRule(0);
4088 CPPUNIT_ASSERT(pRule != NULL);
4089 CPPUNIT_ASSERT(pRule->getVariable() == pCompartment->getId());
4090 CPPUNIT_ASSERT(pRule->isSetMath() ==
true);
4091 const ASTNode* pMath = pRule->getMath();
4092 CPPUNIT_ASSERT(pMath != NULL);
4093 CPPUNIT_ASSERT(pMath->getType() == AST_NAME);
4094 CPPUNIT_ASSERT(pMath->getName() == pParameter2->getId());
4095 CPPUNIT_ASSERT(pModel->getNumReactions() == 0);
4096 CPPUNIT_ASSERT(pModel->getNumEvents() == 1);
4097 Event* pEvent = pModel->getEvent(0);
4098 CPPUNIT_ASSERT(pEvent != NULL);
4100 CPPUNIT_ASSERT(pEvent->isSetTrigger());
4101 Trigger* pTrigger = pEvent->getTrigger();
4102 CPPUNIT_ASSERT(pTrigger != NULL);
4103 CPPUNIT_ASSERT(pTrigger->isSetMath());
4104 pMath = pTrigger->getMath();
4105 CPPUNIT_ASSERT(pMath != NULL);
4106 CPPUNIT_ASSERT(pMath->getType() == AST_RELATIONAL_GT);
4107 CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
4108 const ASTNode* pChild = pMath->getChild(0);
4109 CPPUNIT_ASSERT(pChild != NULL);
4110 CPPUNIT_ASSERT(pChild->getType() == AST_NAME_TIME);
4111 pChild = pMath->getChild(1);
4112 CPPUNIT_ASSERT(pChild != NULL);
4113 CPPUNIT_ASSERT(pChild->getType() == AST_REAL);
4114 CPPUNIT_ASSERT(fabs((pChild->getReal() - 2.0) / 2.0) < 1e-6);
4116 CPPUNIT_ASSERT(pEvent->isSetDelay());
4117 Delay* pDelay = pEvent->getDelay();
4118 CPPUNIT_ASSERT(pDelay != NULL);
4119 CPPUNIT_ASSERT(pDelay->isSetMath());
4120 pMath = pDelay->getMath();
4121 CPPUNIT_ASSERT(pMath != NULL);
4122 CPPUNIT_ASSERT(pMath->getType() == AST_REAL);
4123 CPPUNIT_ASSERT(fabs((pMath->getReal() - 4.0) / 4.0) < 1e-6);
4125 CPPUNIT_ASSERT(pEvent->getNumEventAssignments() == 1);
4126 EventAssignment* pEA = pEvent->getEventAssignment(0);
4127 CPPUNIT_ASSERT(pEA != NULL);
4128 CPPUNIT_ASSERT(pEA->getVariable() == pSpecies1->getId());
4129 pMath = pEA->getMath();
4130 CPPUNIT_ASSERT(pMath != NULL);
4133 CPPUNIT_ASSERT(pMath->getType() == AST_NAME);
4134 CPPUNIT_ASSERT(pMath->getName() == pParameter1->getId());
4138 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
4139 "<!-- generated with COPASI 4.4.26 (Debug) (http://www.copasi.org) at 2008-06-12 09:00:21 UTC -->\n"
4140 "<COPASI xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://www.copasi.org/static/schema.xsd\" versionMajor=\"1\" versionMinor=\"0\" versionDevel=\"26\">\n"
4141 " <Model key=\"Model_0\" name=\"New Model\" timeUnit=\"s\" volumeUnit=\"ml\" quantityUnit=\"mmol\" type=\"deterministic\">\n"
4143 " <html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta name=\"qrichtext\" content=\"1\" /></head><body style=\"font-size:9pt;font-family:Sans Serif\">\n"
4144 "<p>Simple model with two species and two global parameters. The compartment is variable and one species is changed by an event assignment.</p>\n"
4145 "<p>The substance unit is set to mmol.</p>\n"
4146 "<p>On export both species should be exported with the hasOnlySubstanceUnits flag set to true and the expression for the event assignment should contain a reference to the global parameter.</p>\n"
4149 " <ListOfCompartments>\n"
4150 " <Compartment key=\"Compartment_0\" name=\"compartment\" simulationType=\"assignment\">\n"
4152 " <CN=Root,Model=New Model,Vector=Values[P],Reference=Value>\n"
4155 " </ListOfCompartments>\n"
4156 " <ListOfMetabolites>\n"
4157 " <Metabolite key=\"Metabolite_0\" name=\"A\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
4159 " <Metabolite key=\"Metabolite_1\" name=\"B\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
4161 " </ListOfMetabolites>\n"
4162 " <ListOfModelValues>\n"
4163 " <ModelValue key=\"ModelValue_0\" name=\"K\" simulationType=\"fixed\">\n"
4165 " <ModelValue key=\"ModelValue_1\" name=\"P\" simulationType=\"fixed\">\n"
4167 " </ListOfModelValues>\n"
4169 " <Event key=\"Event_0\" name=\"event\" delayAssignment=\"true\">\n"
4170 " <TriggerExpression>\n"
4171 " <CN=Root,Model=New Model,Reference=Time> gt 2.0\n"
4172 " </TriggerExpression>\n"
4173 " <DelayExpression>\n"
4175 " </DelayExpression>\n"
4176 " <ListOfAssignments>\n"
4177 " <Assignment targetKey=\"Metabolite_0\">\n"
4179 " <CN=Root,Model=New Model,Vector=Values[K],Reference=Value>/<CN=Root,Model=New Model,Vector=Compartments[compartment],Reference=Volume>\n"
4182 " </ListOfAssignments>\n"
4184 " </ListOfEvents>\n"
4185 " <StateTemplate>\n"
4186 " <StateTemplateVariable objectReference=\"Model_0\"/>\n"
4187 " <StateTemplateVariable objectReference=\"Metabolite_0\"/>\n"
4188 " <StateTemplateVariable objectReference=\"Metabolite_1\"/>\n"
4189 " <StateTemplateVariable objectReference=\"ModelValue_0\"/>\n"
4190 " <StateTemplateVariable objectReference=\"Compartment_0\"/>\n"
4191 " </StateTemplate>\n"
4192 " <InitialState type=\"initialState\">\n"
4193 " 0 1.2044283e+21 6.022141500000001e+20 2 1\n"
4194 " </InitialState>\n"
4207 CPPUNIT_ASSERT(pDataModel->
getModel() != NULL);
4210 CPPUNIT_ASSERT(pDocument != NULL);
4211 Model* pModel = pDocument->getModel();
4212 CPPUNIT_ASSERT(pModel != NULL);
4214 UnitDefinition* pUDef = pModel->getUnitDefinition(
"time");
4221 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
4222 pUnit = pUDef->getUnit(0);
4223 CPPUNIT_ASSERT(pUnit != NULL);
4224 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_SECOND);
4225 CPPUNIT_ASSERT(pUnit->getScale() == 0);
4226 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
4227 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
4230 pUDef = pModel->getUnitDefinition(
"substance");
4231 CPPUNIT_ASSERT(pUDef != NULL);
4232 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
4233 pUnit = pUDef->getUnit(0);
4234 CPPUNIT_ASSERT(pUnit != NULL);
4235 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_ITEM);
4236 CPPUNIT_ASSERT(pUnit->getScale() == 0);
4237 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
4238 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
4239 pUDef = pModel->getUnitDefinition(
"volume");
4240 CPPUNIT_ASSERT(pUDef != NULL);
4241 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
4242 pUnit = pUDef->getUnit(0);
4243 CPPUNIT_ASSERT(pUnit != NULL);
4244 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_LITRE);
4245 CPPUNIT_ASSERT(pUnit->getScale() == -3);
4246 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
4247 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
4250 CPPUNIT_ASSERT(pModel->getNumCompartments() == 1);
4251 Compartment* pCompartment = pModel->getCompartment(0);
4252 CPPUNIT_ASSERT(pCompartment->getConstant() ==
true);
4253 CPPUNIT_ASSERT(pModel->getNumParameters() == 1);
4254 Parameter* pParameter1 = pModel->getParameter(0);
4255 CPPUNIT_ASSERT(pParameter1 != NULL);
4256 CPPUNIT_ASSERT(pParameter1->getName() ==
"K");
4257 CPPUNIT_ASSERT(pModel->getNumSpecies() == 2);
4258 Species* pSpecies1 = pModel->getSpecies(0);
4259 CPPUNIT_ASSERT(pSpecies1->getHasOnlySubstanceUnits() ==
false);
4260 std::string idSpeciesA = pSpecies1->getId();
4261 Species* pSpecies2 = pModel->getSpecies(1);
4262 CPPUNIT_ASSERT(pSpecies2->getHasOnlySubstanceUnits() ==
false);
4263 CPPUNIT_ASSERT(pModel->getNumRules() == 0);
4264 CPPUNIT_ASSERT(pModel->getNumReactions() == 0);
4265 CPPUNIT_ASSERT(pModel->getNumEvents() == 1);
4266 Event* pEvent = pModel->getEvent(0);
4267 CPPUNIT_ASSERT(pEvent != NULL);
4269 CPPUNIT_ASSERT(pEvent->isSetTrigger());
4270 Trigger* pTrigger = pEvent->getTrigger();
4271 CPPUNIT_ASSERT(pTrigger != NULL);
4272 CPPUNIT_ASSERT(pTrigger->isSetMath());
4273 const ASTNode* pMath = pTrigger->getMath();
4274 CPPUNIT_ASSERT(pMath != NULL);
4275 CPPUNIT_ASSERT(pMath->getType() == AST_RELATIONAL_GT);
4276 CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
4277 const ASTNode* pChild = pMath->getChild(0);
4278 CPPUNIT_ASSERT(pChild != NULL);
4279 CPPUNIT_ASSERT(pChild->getType() == AST_NAME_TIME);
4280 pChild = pMath->getChild(1);
4281 CPPUNIT_ASSERT(pChild != NULL);
4282 CPPUNIT_ASSERT(pChild->getType() == AST_REAL);
4283 CPPUNIT_ASSERT(fabs((pChild->getReal() - 2.0) / 2.0) < 1e-6);
4285 CPPUNIT_ASSERT(pEvent->isSetDelay());
4286 Delay* pDelay = pEvent->getDelay();
4287 CPPUNIT_ASSERT(pDelay != NULL);
4288 CPPUNIT_ASSERT(pDelay->isSetMath());
4289 pMath = pDelay->getMath();
4290 CPPUNIT_ASSERT(pMath != NULL);
4291 CPPUNIT_ASSERT(pMath->getType() == AST_REAL);
4292 CPPUNIT_ASSERT(fabs((pMath->getReal() - 4.0) / 4.0) < 1e-6);
4294 CPPUNIT_ASSERT(pEvent->getNumEventAssignments() == 1);
4295 EventAssignment* pEA = pEvent->getEventAssignment(0);
4296 CPPUNIT_ASSERT(pEA != NULL);
4297 CPPUNIT_ASSERT(pEA->getVariable() == pSpecies1->getId());
4298 pMath = pEA->getMath();
4299 CPPUNIT_ASSERT(pMath != NULL);
4302 CPPUNIT_ASSERT(pMath->getType() == AST_DIVIDE);
4303 CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
4304 ASTNode* pChild1 = pMath->getChild(0);
4305 CPPUNIT_ASSERT(pChild1 != NULL);
4306 CPPUNIT_ASSERT(pChild1->getType() == AST_NAME);
4307 ASTNode* pChild2 = pMath->getChild(1);
4308 CPPUNIT_ASSERT(pChild2 != NULL);
4309 CPPUNIT_ASSERT(pChild2->getType() == AST_NAME);
4310 CPPUNIT_ASSERT(pChild1->getName() == pParameter1->getId() || pChild2->getName() == pParameter1->getId());
4311 CPPUNIT_ASSERT(pChild1->getName() == pCompartment->getId() || pChild2->getName() == pCompartment->getId());
4315 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
4316 "<!-- generated with COPASI 4.4.26 (Debug) (http://www.copasi.org) at 2008-06-12 09:00:21 UTC -->\n"
4317 "<COPASI xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://www.copasi.org/static/schema.xsd\" versionMajor=\"1\" versionMinor=\"0\" versionDevel=\"26\">\n"
4318 " <Model key=\"Model_0\" name=\"New Model\" timeUnit=\"s\" volumeUnit=\"ml\" quantityUnit=\"#\" type=\"deterministic\">\n"
4320 " <html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta name=\"qrichtext\" content=\"1\" /></head><body style=\"font-size:9pt;font-family:Sans Serif\">\n"
4321 "<p>Simple model with two species and one global parameter. The compartment is fixed and one species is changed by an event assignment.</p>\n"
4322 "<p>The substance unit is set to particle number.</p>\n"
4323 "<p>On export both species should be exported with the hasOnlySubstanceUnits flag set to false and the expression for the event assignment should contain a reference to the global parameter divided by the compartment volume.</p>\n"
4326 " <ListOfCompartments>\n"
4327 " <Compartment key=\"Compartment_0\" name=\"compartment\" simulationType=\"fixed\">\n"
4329 " </ListOfCompartments>\n"
4330 " <ListOfMetabolites>\n"
4331 " <Metabolite key=\"Metabolite_0\" name=\"A\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
4333 " <Metabolite key=\"Metabolite_1\" name=\"B\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
4335 " </ListOfMetabolites>\n"
4336 " <ListOfModelValues>\n"
4337 " <ModelValue key=\"ModelValue_0\" name=\"K\" simulationType=\"fixed\">\n"
4339 " </ListOfModelValues>\n"
4341 " <Event key=\"Event_0\" name=\"event\" delayAssignment=\"true\">\n"
4342 " <TriggerExpression>\n"
4343 " <CN=Root,Model=New Model,Reference=Time> gt 2.0\n"
4344 " </TriggerExpression>\n"
4345 " <DelayExpression>\n"
4347 " </DelayExpression>\n"
4348 " <ListOfAssignments>\n"
4349 " <Assignment targetKey=\"Metabolite_0\">\n"
4351 " <CN=Root,Model=New Model,Vector=Values[K],Reference=Value>/<CN=Root,Model=New Model,Vector=Compartments[compartment],Reference=Volume>\n"
4354 " </ListOfAssignments>\n"
4356 " </ListOfEvents>\n"
4357 " <StateTemplate>\n"
4358 " <StateTemplateVariable objectReference=\"Model_0\"/>\n"
4359 " <StateTemplateVariable objectReference=\"Metabolite_0\"/>\n"
4360 " <StateTemplateVariable objectReference=\"Metabolite_1\"/>\n"
4361 " <StateTemplateVariable objectReference=\"ModelValue_0\"/>\n"
4362 " <StateTemplateVariable objectReference=\"Compartment_0\"/>\n"
4363 " </StateTemplate>\n"
4364 " <InitialState type=\"initialState\">\n"
4365 " 0 1.2044283e+21 6.022141500000001e+20 2 1\n"
4366 " </InitialState>\n"
4379 CPPUNIT_ASSERT(pDataModel->
getModel() != NULL);
4382 CPPUNIT_ASSERT(pDocument != NULL);
4383 Model* pModel = pDocument->getModel();
4384 CPPUNIT_ASSERT(pModel != NULL);
4386 UnitDefinition* pUDef = pModel->getUnitDefinition(
"time");
4393 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
4394 pUnit = pUDef->getUnit(0);
4395 CPPUNIT_ASSERT(pUnit != NULL);
4396 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_SECOND);
4397 CPPUNIT_ASSERT(pUnit->getScale() == 0);
4398 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
4399 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
4402 pUDef = pModel->getUnitDefinition(
"substance");
4403 CPPUNIT_ASSERT(pUDef != NULL);
4404 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
4405 pUnit = pUDef->getUnit(0);
4406 CPPUNIT_ASSERT(pUnit != NULL);
4407 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_ITEM);
4408 CPPUNIT_ASSERT(pUnit->getScale() == 0);
4409 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
4410 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
4411 pUDef = pModel->getUnitDefinition(
"volume");
4412 CPPUNIT_ASSERT(pUDef != NULL);
4413 CPPUNIT_ASSERT(pUDef->getNumUnits() == 1);
4414 pUnit = pUDef->getUnit(0);
4415 CPPUNIT_ASSERT(pUnit != NULL);
4416 CPPUNIT_ASSERT(pUnit->getKind() == UNIT_KIND_LITRE);
4417 CPPUNIT_ASSERT(pUnit->getScale() == -3);
4418 CPPUNIT_ASSERT(pUnit->getExponent() == 1);
4419 CPPUNIT_ASSERT(fabs((pUnit->getMultiplier() - 1.0) / 1.0) < 1e-6);
4422 CPPUNIT_ASSERT(pModel->getNumCompartments() == 1);
4423 Compartment* pCompartment = pModel->getCompartment(0);
4424 CPPUNIT_ASSERT(pCompartment->getConstant() ==
false);
4425 CPPUNIT_ASSERT(pModel->getNumParameters() == 2);
4426 Parameter* pParameter1 = pModel->getParameter(0);
4427 CPPUNIT_ASSERT(pParameter1 != NULL);
4428 Parameter* pParameter2 = NULL;
4430 if (pParameter1->getName() ==
"K")
4432 pParameter2 = pModel->getParameter(1);
4436 pParameter2 = pParameter1;
4437 pParameter1 = pModel->getParameter(1);
4440 CPPUNIT_ASSERT(pParameter2 != NULL);
4441 CPPUNIT_ASSERT(pParameter1->getName() ==
"K");
4442 CPPUNIT_ASSERT(pParameter2->getName() ==
"P");
4443 CPPUNIT_ASSERT(pModel->getNumSpecies() == 2);
4444 Species* pSpecies1 = pModel->getSpecies(0);
4445 CPPUNIT_ASSERT(pSpecies1->getHasOnlySubstanceUnits() ==
true);
4446 std::string idSpeciesA = pSpecies1->getId();
4447 Species* pSpecies2 = pModel->getSpecies(1);
4448 CPPUNIT_ASSERT(pSpecies2->getHasOnlySubstanceUnits() ==
true);
4449 CPPUNIT_ASSERT(pModel->getNumRules() == 1);
4450 Rule* pRule = pModel->getRule(0);
4451 CPPUNIT_ASSERT(pRule != NULL);
4452 CPPUNIT_ASSERT(pRule->getVariable() == pCompartment->getId());
4453 CPPUNIT_ASSERT(pRule->isSetMath() ==
true);
4454 const ASTNode* pMath = pRule->getMath();
4455 CPPUNIT_ASSERT(pMath != NULL);
4456 CPPUNIT_ASSERT(pMath->getType() == AST_NAME);
4457 CPPUNIT_ASSERT(pMath->getName() == pParameter2->getId());
4458 CPPUNIT_ASSERT(pModel->getNumReactions() == 0);
4459 CPPUNIT_ASSERT(pModel->getNumEvents() == 1);
4460 Event* pEvent = pModel->getEvent(0);
4461 CPPUNIT_ASSERT(pEvent != NULL);
4463 CPPUNIT_ASSERT(pEvent->isSetTrigger());
4464 Trigger* pTrigger = pEvent->getTrigger();
4465 CPPUNIT_ASSERT(pTrigger != NULL);
4466 CPPUNIT_ASSERT(pTrigger->isSetMath());
4467 pMath = pTrigger->getMath();
4468 CPPUNIT_ASSERT(pMath != NULL);
4469 CPPUNIT_ASSERT(pMath->getType() == AST_RELATIONAL_GT);
4470 CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
4471 const ASTNode* pChild = pMath->getChild(0);
4472 CPPUNIT_ASSERT(pChild != NULL);
4473 CPPUNIT_ASSERT(pChild->getType() == AST_NAME_TIME);
4474 pChild = pMath->getChild(1);
4475 CPPUNIT_ASSERT(pChild != NULL);
4476 CPPUNIT_ASSERT(pChild->getType() == AST_REAL);
4477 CPPUNIT_ASSERT(fabs((pChild->getReal() - 2.0) / 2.0) < 1e-6);
4479 CPPUNIT_ASSERT(pEvent->isSetDelay());
4480 Delay* pDelay = pEvent->getDelay();
4481 CPPUNIT_ASSERT(pDelay != NULL);
4482 CPPUNIT_ASSERT(pDelay->isSetMath());
4483 pMath = pDelay->getMath();
4484 CPPUNIT_ASSERT(pMath != NULL);
4485 CPPUNIT_ASSERT(pMath->getType() == AST_REAL);
4486 CPPUNIT_ASSERT(fabs((pMath->getReal() - 4.0) / 4.0) < 1e-6);
4488 CPPUNIT_ASSERT(pEvent->getNumEventAssignments() == 1);
4489 EventAssignment* pEA = pEvent->getEventAssignment(0);
4490 CPPUNIT_ASSERT(pEA != NULL);
4491 CPPUNIT_ASSERT(pEA->getVariable() == pSpecies1->getId());
4492 pMath = pEA->getMath();
4493 CPPUNIT_ASSERT(pMath != NULL);
4496 CPPUNIT_ASSERT(pMath->getType() == AST_NAME);
4497 CPPUNIT_ASSERT(pMath->getName() == pParameter1->getId());
4501 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
4502 "<!-- generated with COPASI 4.4.26 (Debug) (http://www.copasi.org) at 2008-06-12 09:00:21 UTC -->\n"
4503 "<COPASI xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://www.copasi.org/static/schema.xsd\" versionMajor=\"1\" versionMinor=\"0\" versionDevel=\"26\">\n"
4504 " <Model key=\"Model_0\" name=\"New Model\" timeUnit=\"s\" volumeUnit=\"ml\" quantityUnit=\"#\" type=\"deterministic\">\n"
4506 " <html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta name=\"qrichtext\" content=\"1\" /></head><body style=\"font-size:9pt;font-family:Sans Serif\">\n"
4507 "<p>Simple model with two species and two global parameters. The compartment is variable and one species is changed by an event assignment.</p>\n"
4508 "<p>The substance unit is set to particle number.</p>\n"
4509 "<p>On export both species should be exported with the hasOnlySubstanceUnits flag set to true and the expression for the event assignment should contain a reference to the global parameter.</p>\n"
4512 " <ListOfCompartments>\n"
4513 " <Compartment key=\"Compartment_0\" name=\"compartment\" simulationType=\"assignment\">\n"
4515 " <CN=Root,Model=New Model,Vector=Values[P],Reference=Value>\n"
4518 " </ListOfCompartments>\n"
4519 " <ListOfMetabolites>\n"
4520 " <Metabolite key=\"Metabolite_0\" name=\"A\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
4522 " <Metabolite key=\"Metabolite_1\" name=\"B\" simulationType=\"reactions\" compartment=\"Compartment_0\">\n"
4524 " </ListOfMetabolites>\n"
4525 " <ListOfModelValues>\n"
4526 " <ModelValue key=\"ModelValue_0\" name=\"K\" simulationType=\"fixed\">\n"
4528 " <ModelValue key=\"ModelValue_1\" name=\"P\" simulationType=\"fixed\">\n"
4530 " </ListOfModelValues>\n"
4532 " <Event key=\"Event_0\" name=\"event\" delayAssignment=\"true\">\n"
4533 " <TriggerExpression>\n"
4534 " <CN=Root,Model=New Model,Reference=Time> gt 2.0\n"
4535 " </TriggerExpression>\n"
4536 " <DelayExpression>\n"
4538 " </DelayExpression>\n"
4539 " <ListOfAssignments>\n"
4540 " <Assignment targetKey=\"Metabolite_0\">\n"
4542 " <CN=Root,Model=New Model,Vector=Values[K],Reference=Value>/<CN=Root,Model=New Model,Vector=Compartments[compartment],Reference=Volume>\n"
4545 " </ListOfAssignments>\n"
4547 " </ListOfEvents>\n"
4548 " <StateTemplate>\n"
4549 " <StateTemplateVariable objectReference=\"Model_0\"/>\n"
4550 " <StateTemplateVariable objectReference=\"Metabolite_0\"/>\n"
4551 " <StateTemplateVariable objectReference=\"Metabolite_1\"/>\n"
4552 " <StateTemplateVariable objectReference=\"ModelValue_0\"/>\n"
4553 " <StateTemplateVariable objectReference=\"Compartment_0\"/>\n"
4554 " </StateTemplate>\n"
4555 " <InitialState type=\"initialState\">\n"
4556 " 0 1.2044283e+21 6.022141500000001e+20 2 1\n"
4557 " </InitialState>\n"
Header file of class CExpression.
void test_export_rule_expression_and_hasOnlySubstanceUnits_3()
void test_import_event_assignment_expression_and_hasOnlySubstanceUnits_8()
SBMLDocument * getCurrentSBMLDocument()
static const char * MODEL_STRING1
void test_export_event_assignment_expression_and_hasOnlySubstanceUnits_5()
static const char * MODEL_STRING104
static const char * MODEL_STRING16
static const char * MODEL_STRING7
Header file of class CModelEntity and CModelValue.
void test_import_rule_expression_and_hasOnlySubstanceUnits_2()
void test_export_rule_expression_and_hasOnlySubstanceUnits_2()
void test_export_event_assignment_expression_and_hasOnlySubstanceUnits_7()
void test_import_event_assignment_expression_and_hasOnlySubstanceUnits_6()
static const char * MODEL_STRING111
const std::string & getObjectName() const
static const char * MODEL_STRING4
void test_import_event_assignment_expression_and_hasOnlySubstanceUnits_7()
std::string exportSBMLToString(CProcessReport *pExportHandler, int sbmlLevel, int sbmlVersion)
const CRegisteredObjectName & getObjectCN() const
const C_FLOAT64 & getValue() const
static const char * MODEL_STRING8
const Type & getType() const
void test_import_event_assignment_expression_and_hasOnlySubstanceUnits_2()
static const char * MODEL_STRING102
static const char * MODEL_STRING13
static const char * MODEL_STRING101
void test_import_event_assignment_expression_and_hasOnlySubstanceUnits_3()
static const char * MODEL_STRING105
void test_import_rule_expression_and_hasOnlySubstanceUnits_1()
void test_import_event_assignment_expression_and_hasOnlySubstanceUnits_5()
void test_import_event_assignment_expression_and_hasOnlySubstanceUnits_1()
static const char * MODEL_STRING12
bool load_cps_model_from_stream(std::istream &is, CCopasiDataModel &dataModel)
static const char * MODEL_STRING113
static const char * MODEL_STRING108
static const char * MODEL_STRING112
static const char * MODEL_STRING6
static const char * MODEL_STRING114
void test_export_rule_expression_and_hasOnlySubstanceUnits_5()
static Type type(const Type &type)
static const char * MODEL_STRING109
void test_export_event_assignment_expression_and_hasOnlySubstanceUnits_1()
void test_export_rule_expression_and_hasOnlySubstanceUnits_1()
void test_import_rule_expression_and_hasOnlySubstanceUnits_7()
void test_export_rule_expression_and_hasOnlySubstanceUnits_8()
void test_export_event_assignment_expression_and_hasOnlySubstanceUnits_8()
void test_import_event_assignment_expression_and_hasOnlySubstanceUnits_4()
static const char * MODEL_STRING9
static const char * MODEL_STRING5
void test_import_rule_expression_and_hasOnlySubstanceUnits_8()
static const char * MODEL_STRING10
static CCopasiDataModel * pCOPASIDATAMODEL
void test_import_rule_expression_and_hasOnlySubstanceUnits_4()
void test_export_event_assignment_expression_and_hasOnlySubstanceUnits_3()
void test_export_rule_expression_and_hasOnlySubstanceUnits_7()
static const char * MODEL_STRING14
static const char * MODEL_STRING115
static const char * MODEL_STRING15
void test_import_rule_expression_and_hasOnlySubstanceUnits_5()
static CCopasiDataModel * addDatamodel()
static Type subType(const Type &type)
void test_export_rule_expression_and_hasOnlySubstanceUnits_4()
void test_export_rule_expression_and_hasOnlySubstanceUnits_6()
static const char * MODEL_STRING116
static const char * MODEL_STRING103
static const char * MODEL_STRING2
bool importSBMLFromString(const std::string &sbmlDocumentText, CProcessReport *pImportHandler=NULL, const bool &deleteOldData=true)
void test_export_event_assignment_expression_and_hasOnlySubstanceUnits_6()
static void init(int argc, char *argv[], const bool &withGui=false)
static const char * MODEL_STRING110
void test_import_rule_expression_and_hasOnlySubstanceUnits_3()
void test_export_event_assignment_expression_and_hasOnlySubstanceUnits_2()
static const char * MODEL_STRING107
static const char * MODEL_STRING3
static const char * MODEL_STRING106
CCopasiNode< Data > * getChild()
CCopasiObject * ObjectFromName(const std::vector< CCopasiContainer * > &listOfContainer, const CCopasiObjectName &CN) const
static const char * MODEL_STRING11
CEvaluationNode * getRoot()
void test_import_rule_expression_and_hasOnlySubstanceUnits_6()
CCopasiContainer * getObjectParent() const
void test_export_event_assignment_expression_and_hasOnlySubstanceUnits_4()