COPASI API  4.16.103
Public Member Functions | Static Protected Attributes | Private Member Functions | List of all members
test000040 Class Reference

#include <test000040.h>

Inheritance diagram for test000040:
Inheritance graph
[legend]
Collaboration diagram for test000040:
Collaboration graph
[legend]

Public Member Functions

void setUp ()
 
void tearDown ()
 
void test_hasOnlySubstanceUnits ()
 

Static Protected Attributes

static const char * MODEL_STRING
 
static CCopasiDataModelpCOPASIDATAMODEL = NULL
 

Private Member Functions

 CPPUNIT_TEST (test_hasOnlySubstanceUnits)
 
 CPPUNIT_TEST_SUITE (test000040)
 
 CPPUNIT_TEST_SUITE_END ()
 

Detailed Description

Definition at line 24 of file test000040.h.

Member Function Documentation

test000040::CPPUNIT_TEST ( test_hasOnlySubstanceUnits  )
private
test000040::CPPUNIT_TEST_SUITE ( test000040  )
private
test000040::CPPUNIT_TEST_SUITE_END ( )
private
void test000040::setUp ( )

Definition at line 36 of file test000040.cpp.

References CCopasiRootContainer::addDatamodel(), CCopasiRootContainer::init(), and pCOPASIDATAMODEL.

37 {
38  // Create the root container.
39  CCopasiRootContainer::init(0, NULL, false);
40  // Create the global data model.
42 }
static CCopasiDataModel * pCOPASIDATAMODEL
Definition: test000040.h:32
static CCopasiDataModel * addDatamodel()
static void init(int argc, char *argv[], const bool &withGui=false)
void test000040::tearDown ( )

Definition at line 44 of file test000040.cpp.

References CCopasiRootContainer::destroy().

void test000040::test_hasOnlySubstanceUnits ( )

Definition at line 49 of file test000040.cpp.

References CEvaluationNodeOperator::DIVIDE, CEvaluationNodeNumber::DOUBLE, CModelEntity::FIXED, CCopasiNode< _Data >::getChild(), CChemEq::getCompartmentNumber(), CModelEntity::getInitialExpression(), CModelEntity::getInitialExpressionPtr(), CCopasiDataModel::getModel(), CChemEq::getModifiers(), CCopasiObject::getObjectName(), CCopasiObject::getObjectParent(), CChemEq::getProducts(), CModelEntity::getStatus(), CChemEq::getSubstrates(), CEvaluationNode::getType(), CCopasiDataModel::importSBMLFromString(), CCopasiObject::isReference(), CModel::ml, CModel::mMol, MODEL_STRING, CEvaluationNodeOperator::MULTIPLY, CCopasiDataModel::ObjectFromName(), pCOPASIDATAMODEL, CModelEntity::REACTIONS, CModel::s, CCopasiVector< T >::size(), and CEvaluationNode::subType().

50 {
51  CCopasiDataModel* pDataModel = pCOPASIDATAMODEL;
52  CPPUNIT_ASSERT(pDataModel->importSBMLFromString(MODEL_STRING));
53  CModel* pModel = pDataModel->getModel();
54  CPPUNIT_ASSERT(pModel != NULL);
55  CPPUNIT_ASSERT(pModel->getQuantityUnitEnum() == CModel::mMol);
56  CPPUNIT_ASSERT(pModel->getVolumeUnitEnum() == CModel::ml);
57  CPPUNIT_ASSERT(pModel->getTimeUnitEnum() == CModel::s);
58  CPPUNIT_ASSERT(pModel->getCompartments().size() == 1);
59  const CCompartment* pCompartment = pModel->getCompartments()[0];
60  CPPUNIT_ASSERT(pCompartment != NULL);
61  CPPUNIT_ASSERT(pCompartment->getStatus() == CModelEntity::FIXED);
62  CPPUNIT_ASSERT(pModel->getMetabolites().size() == 2);
63  CMetab* pA = pModel->getMetabolites()[0];
64  CPPUNIT_ASSERT(pA != NULL);
65  CPPUNIT_ASSERT(pA->getStatus() == CModelEntity::REACTIONS);
66  const CMetab* pB = pModel->getMetabolites()[1];
67  CPPUNIT_ASSERT(pB != NULL);
68  CPPUNIT_ASSERT(pB->getStatus() == CModelEntity::REACTIONS);
69  CPPUNIT_ASSERT(pModel->getModelValues().size() == 2);
70  const CModelValue* pFactor = pModel->getModelValues()[1];
71  CPPUNIT_ASSERT(pFactor != NULL);
72  CPPUNIT_ASSERT(pFactor->getStatus() == CModelEntity::FIXED);
73  CPPUNIT_ASSERT(fabs((pFactor->getInitialValue() - pModel->getQuantity2NumberFactor()) / pModel->getQuantity2NumberFactor()) < 1e-3);
74  const CModelValue* pModelValue = pModel->getModelValues()[0];
75  CPPUNIT_ASSERT(pModelValue != NULL);
76  CPPUNIT_ASSERT(pModelValue->getStatus() == CModelEntity::FIXED);
77  CPPUNIT_ASSERT(pModelValue->getInitialExpression() != "");
78  const CExpression* pExpr = pModelValue->getInitialExpressionPtr();
79  // check the expression
80  const CEvaluationNode* pNode = pExpr->getRoot();
81  CPPUNIT_ASSERT(pNode != NULL);
82  const CEvaluationNodeOperator* pOperatorNode = dynamic_cast<const CEvaluationNodeOperator*>(pNode);
83  CPPUNIT_ASSERT(pOperatorNode != NULL);
85  const CEvaluationNodeNumber* pNumberNode = dynamic_cast<const CEvaluationNodeNumber*>(pOperatorNode->getChild()->getSibling());
86  CPPUNIT_ASSERT(pNumberNode != NULL);
88  pOperatorNode = dynamic_cast<const CEvaluationNodeOperator*>(pOperatorNode->getChild());
89  CPPUNIT_ASSERT(pOperatorNode != NULL);
91  const CEvaluationNodeObject* pObjectNode = dynamic_cast<const CEvaluationNodeObject*>(pOperatorNode->getChild());
92  CPPUNIT_ASSERT(pObjectNode != NULL);
93  CCopasiObjectName objectCN = pObjectNode->getObjectCN();
94  CPPUNIT_ASSERT(!objectCN.empty());
95  std::vector<CCopasiContainer*> listOfContainers;
96  listOfContainers.push_back(pModel);
97  const CCopasiObject* pObject = pCOPASIDATAMODEL->ObjectFromName(listOfContainers, objectCN);
98  CPPUNIT_ASSERT(pObject != NULL);
99  CPPUNIT_ASSERT(pObject->isReference() == true);
100  CPPUNIT_ASSERT(pObject->getObjectName() == std::string("InitialParticleNumber"));
101  CPPUNIT_ASSERT(pObject->getObjectParent() == pA);
102  pObjectNode = dynamic_cast<const CEvaluationNodeObject*>(pOperatorNode->getChild()->getSibling());
103  CPPUNIT_ASSERT(pObjectNode != NULL);
104  objectCN = pObjectNode->getObjectCN();
105  CPPUNIT_ASSERT(!objectCN.empty());
106  pObject = pCOPASIDATAMODEL->ObjectFromName(listOfContainers, objectCN);
107  CPPUNIT_ASSERT(pObject != NULL);
108  CPPUNIT_ASSERT(pObject->isReference() == true);
109  CPPUNIT_ASSERT(pObject->getObjectName() == std::string("InitialValue"));
110  CPPUNIT_ASSERT(pObject->getObjectParent() == pFactor);
111 
112  CPPUNIT_ASSERT(pModel->getReactions().size() == 2);
113  const CReaction* pReaction1 = pModel->getReactions()[0];
114  CPPUNIT_ASSERT(pReaction1 != NULL);
115  CPPUNIT_ASSERT(pReaction1->isReversible() == false);
116  // check the kinetic law
117  const CFunction* pKineticFunction = pReaction1->getFunction();
118  CPPUNIT_ASSERT(pKineticFunction != NULL);
119  const CMassAction* pMassAction = dynamic_cast<const CMassAction*>(pKineticFunction);
120  //FTB: this no longer is recognized as mass action reaction because of the
121  // special case of a species with hOSU
122  CPPUNIT_ASSERT(pMassAction == NULL);
123  const CChemEq* pChemEq = &pReaction1->getChemEq();
124  CPPUNIT_ASSERT(pChemEq != NULL);
125  CPPUNIT_ASSERT(pChemEq->getCompartmentNumber() == 1);
126  CPPUNIT_ASSERT(pChemEq->getSubstrates().size() == 1);
127  const CChemEqElement* pElement = pChemEq->getSubstrates()[0];
128  CPPUNIT_ASSERT(pElement != NULL);
129  CPPUNIT_ASSERT(fabs(pElement->getMultiplicity() - 1.0) < 1e-3);
130  CPPUNIT_ASSERT(pElement->getMetabolite() == pA);
131  CPPUNIT_ASSERT(pChemEq->getProducts().size() == 0);
132  CPPUNIT_ASSERT(pChemEq->getModifiers().size() == 0);
133 
134  const CReaction* pReaction2 = pModel->getReactions()[1];
135  CPPUNIT_ASSERT(pReaction2 != NULL);
136  CPPUNIT_ASSERT(pReaction2->isReversible() == false);
137  // check the kinetic law
138  pKineticFunction = pReaction2->getFunction();
139  CPPUNIT_ASSERT(pKineticFunction != NULL);
140  CPPUNIT_ASSERT(pKineticFunction->getObjectName() == std::string("Henri-Michaelis-Menten (irreversible)"));
141  // check the function parameters one should be the reference to the substrate
142  pChemEq = &pReaction2->getChemEq();
143  CPPUNIT_ASSERT(pChemEq != NULL);
144  CPPUNIT_ASSERT(pChemEq->getCompartmentNumber() == 1);
145  CPPUNIT_ASSERT(pChemEq->getSubstrates().size() == 1);
146  pElement = pChemEq->getSubstrates()[0];
147  CPPUNIT_ASSERT(pElement != NULL);
148  CPPUNIT_ASSERT(fabs(pElement->getMultiplicity() - 1.0) < 1e-3);
149  CPPUNIT_ASSERT(pElement->getMetabolite() == pA);
150  CPPUNIT_ASSERT(pChemEq->getProducts().size() == 1);
151  pElement = pChemEq->getProducts()[0];
152  CPPUNIT_ASSERT(pElement != NULL);
153  CPPUNIT_ASSERT(fabs(pElement->getMultiplicity() - 1.0) < 1e-3);
154  CPPUNIT_ASSERT(pElement->getMetabolite() == pB);
155  CPPUNIT_ASSERT(pChemEq->getModifiers().size() == 0);
156  const std::vector<std::vector<std::string> > parameterMappings = pReaction2->getParameterMappings();
157  CPPUNIT_ASSERT(parameterMappings.size() == 3);
158  CPPUNIT_ASSERT(parameterMappings[0].size() == 1);
159  const std::string parameterKey = parameterMappings[0][0];
160  CPPUNIT_ASSERT(parameterKey == pA->getKey());
161 }
size_t getCompartmentNumber() const
Definition: CChemEq.cpp:110
const std::string & getObjectName() const
virtual size_t size() const
static CCopasiDataModel * pCOPASIDATAMODEL
Definition: test000040.h:32
const Type & getType() const
Definition: CMetab.h:178
static const char * MODEL_STRING
Definition: test000040.h:31
const CCopasiVector< CChemEqElement > & getProducts() const
Definition: CChemEq.cpp:63
bool isReference() const
std::string getInitialExpression() const
const CCopasiVector< CChemEqElement > & getSubstrates() const
Definition: CChemEq.cpp:60
static Type subType(const Type &type)
const CCopasiVector< CChemEqElement > & getModifiers() const
Definition: CChemEq.cpp:66
bool importSBMLFromString(const std::string &sbmlDocumentText, CProcessReport *pImportHandler=NULL, const bool &deleteOldData=true)
The class for handling a chemical kinetic function.
Definition: CFunction.h:29
Definition: CModel.h:50
const CModelEntity::Status & getStatus() const
CCopasiNode< Data > * getChild()
Definition: CCopasiNode.h:210
CCopasiObject * ObjectFromName(const std::vector< CCopasiContainer * > &listOfContainer, const CCopasiObjectName &CN) const
CCopasiContainer * getObjectParent() const
const CExpression * getInitialExpressionPtr() const

Member Data Documentation

const char * test000040::MODEL_STRING
staticprotected

Definition at line 31 of file test000040.h.

Referenced by test_hasOnlySubstanceUnits().

CCopasiDataModel * test000040::pCOPASIDATAMODEL = NULL
staticprotected

Definition at line 32 of file test000040.h.

Referenced by setUp(), and test_hasOnlySubstanceUnits().


The documentation for this class was generated from the following files: