LIBSBML_CPP_NAMESPACE_USE int main(int argc,char** argv) { if (argc != 2) { std::cout << "Usage: example1\n"; return 1; } // // Creates an SBMLNamespaces object with the given SBML level, version // package name, package version. // // (NOTE) By defualt, the name of package (i.e. "qual") will be used // if the arugment for the prefix is missing or empty. Thus the argument // for the prefix can be added as follows: // // SBMLNamespaces sbmlns(3,1,"qual",1,"QUAL"); // SBMLNamespaces sbmlns(3,1,"qual",1); // // (NOTES) The above code creating an SBMLNamespaces object can be replaced // with one of the following other styles. // // (1) Creates an SBMLNamespace object with a SBML core namespace and then // adds a qual package namespace to the object. // // SBMLNamespaces sbmlns(3,1); // sbmlns.addPkgNamespace("qual",1); // // OR // // SBMLNamespaces sbmlns(3,1); // sbmlns.addNamespace(QualExtension::XmlnsL3V1V1,"qual"); // // (2) Creates a QualPkgNamespaces object (SBMLNamespace derived class for // qual package. The class is basically used for createing an SBase // derived objects defined in the qual package) with the given SBML // level, version, and package version // // QualPkgNamespaces sbmlns(3,1,1); // // create the document SBMLDocument *document = new SBMLDocument(&sbmlns); // mark qual as required document->setPackageRequired("qual", true); // create the Model Model* model=document->createModel(); // create the Compartment Compartment* compartment = model->createCompartment(); compartment->setId("c"); compartment->setConstant(true); // // Get a QualModelPlugin object plugged in the model object. // // The type of the returned value of SBase::getPlugin() function is // SBasePlugin*, and thus the value needs to be casted for the // corresponding derived class. // QualModelPlugin* mplugin = static_cast<QualModelPlugin*>(model->getPlugin("qual")); // create the QualitativeSpecies QualitativeSpecies* qs = mplugin->createQualitativeSpecies(); qs->setId("s1"); qs->setCompartment("c"); qs->setConstant(false); qs->setInitialLevel(1); qs->setMaxLevel(4); qs->setName("sss"); // create the Transition Transition* t = mplugin->createTransition(); t->setId("d"); t->setSBOTerm(1); Input* i = t->createInput(); i->setId("RD"); i->setQualitativeSpecies("s1"); i->setTransitionEffect(INPUT_TRANSITION_EFFECT_NONE); i->setSign(INPUT_SIGN_NEGATIVE); i->setThresholdLevel(2); i->setName("aa"); Output* o = t->createOutput(); o->setId("wd"); o->setQualitativeSpecies("s1"); o->setTransitionEffect(OUTPUT_TRANSITION_EFFECT_PRODUCTION); o->setOutputLevel(2); o->setName("aa"); DefaultTerm* dt = t->createDefaultTerm(); dt->setResultLevel(2) ; FunctionTerm* ft = t->createFunctionTerm(); ASTNode* math = SBML_parseL3Formula("geq(s1, 2)"); ft->setResultLevel(1); ft->setMath(math); writeSBML(document,"qual_example1.xml"); delete document; return 0; }
END_TEST START_TEST (test_QualExtension_read_enable_via_sbmldocument_and_write_L3V1V1) { const char* s1 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<sbml xmlns=\"http://www.sbml.org/sbml/level3/version1/core\" level=\"3\" version=\"1\">\n" " <model>\n" " <listOfCompartments>\n" " <compartment id=\"c\" constant=\"true\"/>\n" " </listOfCompartments>\n" " </model>\n" "</sbml>\n" ; const char* s1a = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<sbml xmlns=\"http://www.sbml.org/sbml/level3/version1/core\" xmlns:qual=\"http://www.sbml.org/sbml/level3/version1/qual/version1\" level=\"3\" version=\"1\" qual:required=\"true\">\n" " <model>\n" " <listOfCompartments>\n" " <compartment id=\"c\" constant=\"true\"/>\n" " </listOfCompartments>\n" " <qual:listOfQualitativeSpecies>\n" " <qual:qualitativeSpecies qual:id=\"s1\" qual:compartment=\"c\" qual:constant=\"false\" qual:name=\"sss\" qual:initialLevel=\"1\" qual:maxLevel=\"4\"/>\n" " </qual:listOfQualitativeSpecies>\n" " </model>\n" "</sbml>\n" ; SBMLDocument *document = readSBMLFromString(s1); fail_unless(document->getNumPlugins() == 0); // // enable the qual package by invoking enablePackage function with SBMLDocument object // fail_unless(document->enablePackage(QUAL_XMLNS_L3V1V1, "qual", true) == LIBSBML_OPERATION_SUCCESS); // mark qual as required document->setPackageRequired("qual", true); fail_unless(document->getNumPlugins() == 1); Model *model = document->getModel(); fail_unless(model != NULL); fail_unless(model->getNumPlugins() == 1); //// create the QualitativeSpecies QualModelPlugin* mplugin = static_cast<QualModelPlugin*>(model->getPlugin("qual")); fail_unless(mplugin != NULL); QualitativeSpecies* qs = mplugin->createQualitativeSpecies(); fail_unless(qs->setId("s1") == LIBSBML_OPERATION_SUCCESS); fail_unless(qs->setCompartment("c") == LIBSBML_OPERATION_SUCCESS); fail_unless(qs->setConstant(false) == LIBSBML_OPERATION_SUCCESS); fail_unless(qs->setInitialLevel(1) == LIBSBML_OPERATION_SUCCESS); fail_unless(qs->setMaxLevel(4) == LIBSBML_OPERATION_SUCCESS); fail_unless(qs->setName("sss") == LIBSBML_OPERATION_SUCCESS); char *s2 = writeSBMLToString(document); fail_unless(strcmp(s1a,s2) == 0); free(s2); delete document; }