void createKineticLawForReaction(Reaction* reaction) { if (reaction == NULL) return; reaction->unsetKineticLaw(); KineticLaw *law = reaction->getKineticLaw(); if (law == NULL) { law = reaction->createKineticLaw(); LocalParameter* fluxValue = law->createLocalParameter(); fluxValue->initDefaults(); fluxValue->setId("FLUX_VALUE"); fluxValue->setValue(0); fluxValue->setUnits("dimensionless"); ASTNode* astn = SBML_parseFormula("FLUX_VALUE"); law->setMath(astn); delete astn; } LocalParameter* LB = law->getLocalParameter("LOWER_BOUND"); if (LB == NULL) { LB = law->createLocalParameter(); LB->initDefaults(); LB->setId("LOWER_BOUND"); LB->setUnits("dimensionless"); LB->setValue(-std::numeric_limits<double>::infinity()); } LocalParameter* UB = law->getLocalParameter("UPPER_BOUND"); if (UB == NULL) { UB = law->createLocalParameter(); UB->initDefaults(); UB->setId("UPPER_BOUND"); UB->setUnits("dimensionless"); LB->setValue(std::numeric_limits<double>::infinity()); } LocalParameter* param = law->getLocalParameter("OBJECTIVE_COEFFICIENT"); if (param == NULL) { param = law->createLocalParameter(); param->initDefaults(); param->setId("OBJECTIVE_COEFFICIENT"); param->setUnits("dimensionless"); param->setValue(0); } }
END_TEST START_TEST (test_WriteL3SBML_KineticLaw_ListOfParameters) { const char* expected = "<kineticLaw>\n" " <listOfLocalParameters>\n" " <localParameter id=\"n\" value=\"1.2\"/>\n" " </listOfLocalParameters>\n" "</kineticLaw>"; KineticLaw *kl = D->createModel()->createReaction()->createKineticLaw(); LocalParameter *p = kl->createLocalParameter(); p->setId("n"); p->setValue(1.2); char* sbml = kl->toSBML(); fail_unless( equals(expected, sbml) ); safe_free(sbml); }