1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
/**
* @file invalidity_test.cpp
* @brief SBML hierarchical composition example
* @author Lucian Smith
*
* This file is part of libSBML. Please visit http://sbml.org for more
* information about SBML, and the latest version of libSBML.
*/
#include <iostream>
#include <sstream>
#include <sbml/SBMLTypes.h>
#include <sbml/extension/SBMLExtensionRegister.h>
#include <sbml/extension/SBMLExtensionRegistry.h>
#include <sbml/packages/comp/extension/CompExtension.h>
#include <sbml/packages/comp/extension/CompSBasePlugin.h>
#include <sbml/packages/comp/extension/CompSBMLDocumentPlugin.h>
#include <sbml/packages/comp/extension/CompModelPlugin.h>
#include <sbml/conversion/SBMLConverterRegister.h>
#include <sbml/conversion/SBMLConverterRegistry.h>
#include <sbml/conversion/SBMLConverter.h>
#ifdef WIN32
#include <conio.h>
#endif
LIBSBML_CPP_NAMESPACE_USE
using namespace std;
void createTest1();
void createTest2();
void createTest3();
void createTest4();
int main(int argc,char** argv){
createTest4();
createTest3();
createTest2();
createTest1();
return 0;
}
//First, do everything correctly:
void createTest1()
{
SBMLNamespaces sbmlns(3,1,"comp",1);
CompPkgNamespaces csbmlns(3,1,1,"comp");
SBMLDocument document(&sbmlns);
CompSBMLDocumentPlugin* compdoc = static_cast<CompSBMLDocumentPlugin*>(document.getPlugin("comp"));
compdoc->setRequired(false);
Model model(&sbmlns);
Parameter p(&sbmlns);
p.setConstant(false);
p.setId("p8");
p.setValue(8);
model.addParameter(&p);
CompModelPlugin* compmod = static_cast<CompModelPlugin*>(model.getPlugin("comp"));
Port port(3,1,1);
port.setId("port1");
port.setIdRef("p8");
compmod->addPort(&port);
document.setModel(&model);
writeSBMLToFile(&document, "invalidity_test1.xml");
}
//Screw things up by creating the document unaware of comp. This creates '<listOfPorts>' instead of '<comp:listOfPorts>'
void createTest2()
{
SBMLNamespaces sbmlns(3,1,"comp",1);
CompPkgNamespaces csbmlns(3,1,1,"comp");
SBMLDocument document(3,1);
Model model(&sbmlns);
Parameter p(&sbmlns);
p.setConstant(false);
p.setId("p8");
p.setValue(8);
model.addParameter(&p);
CompModelPlugin* compmod = static_cast<CompModelPlugin*>(model.getPlugin("comp"));
Port port(3,1,1);
port.setId("port1");
port.setIdRef("p8");
compmod->addPort(&port);
document.setModel(&model);
writeSBMLToFile(&document, "invalidity_test2.xml");
}
//Screw things up by never setting 'required'
void createTest3()
{
SBMLNamespaces sbmlns(3,1,"comp",1);
CompPkgNamespaces csbmlns(3,1,1,"comp");
SBMLDocument document(&sbmlns);
CompSBMLDocumentPlugin* compdoc = static_cast<CompSBMLDocumentPlugin*>(document.getPlugin("comp"));
Model model(&sbmlns);
Parameter p(&sbmlns);
p.setConstant(false);
p.setId("p8");
p.setValue(8);
model.addParameter(&p);
CompModelPlugin* compmod = static_cast<CompModelPlugin*>(model.getPlugin("comp"));
Port port(3,1,1);
port.setId("port1");
port.setIdRef("p8");
compmod->addPort(&port);
document.setModel(&model);
writeSBMLToFile(&document, "invalidity_test3.xml");
}
//Screw things up by setting 'required' to 'true'
void createTest4()
{
SBMLNamespaces sbmlns(3,1,"comp",1);
CompPkgNamespaces csbmlns(3,1,1,"comp");
SBMLDocument document(&sbmlns);
CompSBMLDocumentPlugin* compdoc = static_cast<CompSBMLDocumentPlugin*>(document.getPlugin("comp"));
compdoc->setRequired(true);
Model model(&sbmlns);
Parameter p(&sbmlns);
p.setConstant(false);
p.setId("p8");
p.setValue(8);
model.addParameter(&p);
CompModelPlugin* compmod = static_cast<CompModelPlugin*>(model.getPlugin("comp"));
Port port(3,1,1);
port.setId("port1");
port.setIdRef("p8");
compmod->addPort(&port);
document.setModel(&model);
writeSBMLToFile(&document, "invalidity_test4.xml");
}
|