END_TEST


START_TEST (test_FbcExtension_read_L3V1V1_defaultNS)
{
  char *filename = safe_strcat(TestDataDirectory, "fbc_example1_defaultNS.xml");
  
  SBMLDocument *document = readSBMLFromFile(filename);
  
  fail_unless(document->getPackageName() == "core");
  
  Model *model = document->getModel();
  
  fail_unless(model != NULL);
  fail_unless(model->getPackageName() == "core");
  fail_unless(document->getNumErrors() == 0);
  
  // get the fbc plugin
  
  FbcModelPlugin* mplugin = static_cast<FbcModelPlugin*>(model->getPlugin("fbc"));
  fail_unless(mplugin != NULL);
  
  fail_unless(mplugin->getNumObjectives() == 1);
  fail_unless(mplugin->getListOfObjectives()->getPackageName() == "fbc");
  
  Objective* objective = mplugin->getObjective(0);
  fail_unless(objective->getId() == "obj1");
  fail_unless(objective->getType() == "maximize");
  fail_unless(objective->getNumFluxObjectives()  == 1);
  fail_unless(objective->getPackageName() == "fbc");
  
  fail_unless(objective->getListOfFluxObjectives()->getPackageName() == "fbc");
  
  FluxObjective* fluxObjective = objective->getFluxObjective(0);
  fail_unless(fluxObjective->getReaction()      == "J8");
  fail_unless(fluxObjective->getPackageName() == "fbc");
  fail_unless(fluxObjective->getCoefficient() == 1);
  
  fail_unless(mplugin->getNumFluxBounds() == 1);
  fail_unless(mplugin->getListOfFluxBounds()->getPackageName() == "fbc");
  
  FluxBound* bound = mplugin->getFluxBound(0);
  fail_unless(bound->getId()      == "bound1");
  fail_unless(bound->getPackageName() == "fbc");
  fail_unless(bound->getReaction() == "J0");
  fail_unless(bound->getOperation() == "equal");
  fail_unless(bound->getValue() == 10);
  
  
  delete document;  
}
Example #2
0
void checkFbc(FbcModelPlugin* fbcmodplug, set<string>& components, set<string>& tests,  const map<string, vector<double> >& results)
{
  if (fbcmodplug->isSetStrict() && fbcmodplug->getStrict() == false) {
    tests.insert("fbc:NonStrict");
  }
  List* allElements = fbcmodplug->getAllElements();
  for (unsigned int e=0; e<allElements->getSize(); e++) {
    SBase* element = static_cast<SBase*>(allElements->get(e));
    FluxBound* fluxBound;
    Objective* objective;
    switch(element->getTypeCode()) {
    case SBML_FBC_FLUXBOUND:
      components.insert("fbc:FluxBound");
      fluxBound = static_cast<FluxBound*>(element);
      if (fluxBound->isSetOperation()) {
        if (fluxBound->getOperation() == "lessEqual") {
          tests.insert("fbc:BoundLessEqual");
        }
        else if (fluxBound->getOperation() == "greaterEqual") {
          tests.insert("fbc:BoundGreaterEqual");
        }
        else if (fluxBound->getOperation() == "equal") {
          tests.insert("fbc:BoundEqual");
        }
      }
      break;
    case SBML_FBC_OBJECTIVE:
      components.insert("fbc:Objective");
      objective = static_cast<Objective*>(element);
      if (objective->isSetType()) {
        if (objective->getType() == "maximize") {
          tests.insert("fbc:MaximizeObjective");
        }
        else {
          tests.insert("fbc:MinimizeObjective");
        }
      }
      break;
    case SBML_FBC_FLUXOBJECTIVE:
      components.insert("fbc:FluxObjective");
      break;
    default:
      break;
    }
  }
}