SBMLDocument* TestFlattenedUnknownValidateNoStrip(string file1, string file2) { string filename(TestDataDirectory); ConversionProperties props; props.addOption("flatten comp"); props.addOption("basePath", filename); props.addOption("performValidation", true); props.addOption("stripUnflattenablePackages", false); props.addOption("abortIfUnflattenable", "none"); SBMLConverter* converter = SBMLConverterRegistry::getInstance().getConverterFor(props); // load document string cfile = filename + file1; SBMLDocument* doc = readSBMLFromFile(cfile.c_str()); // fail if there is no model (readSBMLFromFile always returns a valid document) fail_unless(doc->getModel() != NULL); converter->setDocument(doc); int result = converter->convert(); // fail if conversion was not valid fail_unless(result == LIBSBML_OPERATION_SUCCESS); string newModel = writeSBMLToStdString(doc); string ffile = filename + file2; SBMLDocument* fdoc = readSBMLFromFile(ffile.c_str()); string flatModel = writeSBMLToStdString(fdoc); fail_unless(flatModel == newModel); delete fdoc; delete converter; return doc; }
END_TEST START_TEST(test_comp_flatten_abort_reqd_only_6) { ConversionProperties* props = new ConversionProperties(); props->addOption("flatten comp"); props->addOption("stripUnflattenablePackages", false); SBMLConverter* converter = SBMLConverterRegistry::getInstance().getConverterFor(*props); // load document string dir(TestDataDirectory); string fileName = dir + "unknown1.xml"; SBMLDocument* doc = readSBMLFromFile(fileName.c_str()); // fail if there is no model //(but we have the unrecognised package error) fail_unless(doc->getNumErrors() == 1); fail_unless(doc->getModel() != NULL); fail_unless(doc->getErrorLog()->contains(UnrequiredPackagePresent) == true); converter->setDocument(doc); int result = converter->convert(); fail_unless( result == LIBSBML_OPERATION_SUCCESS); string newModel = writeSBMLToString(doc); string ffile = dir + "unknown1_flat_stay.xml"; SBMLDocument* fdoc = readSBMLFromFile(ffile.c_str()); string flatModel = writeSBMLToString(fdoc); fail_unless(flatModel == newModel); delete doc; delete fdoc; delete converter; }
END_TEST START_TEST (test_conversion_registry_getByIndex) { int numConverters = SBMLConverterRegistry::getInstance().getNumConverters(); for (int i = 0; i < numConverters; i++) { SBMLConverter *converter = SBMLConverterRegistry::getInstance().getConverterByIndex(i); fail_unless(converter != NULL); fail_unless(converter->getDefaultProperties().hasOption("none") == false); ConversionProperties props = converter->getDefaultProperties(); delete converter; } }
END_TEST START_TEST(test_comp_flatten_abort_all_3) { ConversionProperties* props = new ConversionProperties(); props->addOption("flatten comp"); // checking the default props->addOption("abortIfUnflattenable", "all"); props->addOption("stripUnflattenablePackages", false); SBMLConverter* converter = SBMLConverterRegistry::getInstance().getConverterFor(*props); // load document string dir(TestDataDirectory); string fileName = dir + "unknown2.xml"; SBMLDocument* doc = readSBMLFromFile(fileName.c_str()); // fail if there is no model //(but we have the unrecognised package error) fail_unless(doc->getNumErrors() == 1); fail_unless(doc->getModel() != NULL); fail_unless(doc->getErrorLog()->contains(RequiredPackagePresent) == true); converter->setDocument(doc); int result = converter->convert(); fail_unless( result == LIBSBML_OPERATION_FAILED); fail_unless(doc->getNumErrors() == 2); fail_unless(doc->getErrorLog()->contains(RequiredPackagePresent) == true); fail_unless(doc->getErrorLog()->contains(CompFlatteningNotRecognisedReqd) == true); delete doc; delete converter; }
int main(int argc,char** argv) { bool leavePorts = false; if (argc < 3) { cout << usage << endl; return 1; } else if (argc == 3) { if ( string("-p") == string(argv[1]) ) { cout << usage << endl; return 1; } } int argIndex = 1; if ( string("-p") == string(argv[1]) ) { leavePorts = true; ++argIndex; } if (SBMLExtensionRegistry::isPackageEnabled("comp") == false) { cerr << "The version of libsbml being used does not have the comp" << " package code enabled" << endl; return 1; } const char* inputFile = argv[argIndex]; const char* outputFile = argv[argIndex+1]; SBMLDocument* document = readSBML(inputFile); if (document->getNumErrors() > 0) { cerr << "Encountered the following SBML errors:" << endl; document->printErrors(cerr); return 1; } ConversionProperties* props = new ConversionProperties(); props->addOption("flatten comp"); props->addOption("leavePorts", leavePorts); SBMLConverter* converter = SBMLConverterRegistry::getInstance().getConverterFor(*props); converter->setDocument(document); int result = converter->convert(); if (result != LIBSBML_OPERATION_SUCCESS) { cerr << "Conversion failed\n"; document->printErrors(); } writeSBML(document, outputFile); }