/* * Logs a constraint failure to the validator for the given SBML object. * The parameter message is used instead of the constraint's member * variable msg. */ void VConstraint::logFailure (const SBase& object, const std::string& message) { std::string pkg = object.getPackageName(); unsigned int pkgVersion = object.getPackageVersion(); if (mId > 99999 && pkg == "core") { // we are dealing with a core object that is logging errors // relating to a package // need to work out which pkg unsigned int offset = (unsigned int)(floor((double)mId/100000.0)) * 100000; if (offset == 9900000) { // we are dealing with the strict units validator mId = mId - offset; } else { // it is possible that the object does not have a direct plugin // it may the child of an object that does // so lets cut straight to the parent document const SBMLDocument * doc = object.getSBMLDocument(); if (doc != NULL) { for (unsigned int i = 0; i < doc->getNumPlugins(); i++) { const SBMLExtension * ext = doc->getPlugin(i)->getSBMLExtension(); if (ext->getErrorIdOffset() == offset) { pkg = doc->getPlugin(i)->getPackageName(); pkgVersion = doc->getPlugin(i)->getPackageVersion(); break; } } } } } SBMLError error = SBMLError( mId, object.getLevel(), object.getVersion(), message, object.getLine(), object.getColumn(), LIBSBML_SEV_ERROR, LIBSBML_CAT_SBML, pkg, pkgVersion); if (error.getSeverity() != LIBSBML_SEV_NOT_APPLICABLE) mValidator.logFailure(error); /* ( SBMLError( mId, object.getLevel(), object.getVersion(), message, object.getLine(), object.getColumn(), LIBSBML_SEV_ERROR, LIBSBML_CAT_SBML ));*/ }
/* * Logs a constraint failure to the validator for the given SBML object. * The parameter message is used instead of the constraint's member * variable msg. */ void VConstraint::logFailure (const SBase& object, const std::string& message) { if (&object == NULL || &message == NULL) return; SBMLError error = SBMLError( mId, object.getLevel(), object.getVersion(), message, object.getLine(), object.getColumn() ); if (error.getSeverity() != LIBSBML_SEV_NOT_APPLICABLE) mValidator.logFailure(error); /* ( SBMLError( mId, object.getLevel(), object.getVersion(), message, object.getLine(), object.getColumn(), LIBSBML_SEV_ERROR, LIBSBML_CAT_SBML ));*/ }
/* * Adds the given SBMLError to the log. * * @param error SBMLError, the error to be logged. */ void SBMLErrorLog::add (const SBMLError& error) { if (error.getSeverity() != LIBSBML_SEV_NOT_APPLICABLE) XMLErrorLog::add(error); }
LIBSBML_CPP_NAMESPACE_USE /** @endcond */ CK_CPPSTART START_TEST (test_SBMLError_create) { SBMLError* error = new SBMLError; fail_unless( error != NULL ); delete error; error = new SBMLError(EmptyListInReaction); fail_unless( error->getErrorId() == EmptyListInReaction ); fail_unless( error->getSeverity() == LIBSBML_SEV_ERROR ); fail_unless( error->getSeverityAsString() == "Error" ); fail_unless( error->getCategory() == LIBSBML_CAT_SBML ); fail_unless( error->getCategoryAsString() == "General SBML conformance"); fail_unless( error->isValid() == true); delete error; error = new SBMLError(OverdeterminedSystem, 2, 1); fail_unless( error->getErrorId() == OverdeterminedSystem ); fail_unless( error->getSeverity() == LIBSBML_SEV_WARNING ); fail_unless( error->getSeverityAsString() == "Warning" ); fail_unless( error->getCategory() == LIBSBML_CAT_OVERDETERMINED_MODEL ); fail_unless( error->getCategoryAsString() == "Overdetermined model"); fail_unless( error->isValid() == true); delete error; error = new SBMLError(OffsetNoLongerValid, 2, 2); fail_unless( error->getErrorId() == OffsetNoLongerValid ); fail_unless( error->getSeverity() == LIBSBML_SEV_ERROR ); fail_unless( error->getSeverityAsString() == "Error" ); fail_unless( error->getCategory() == LIBSBML_CAT_GENERAL_CONSISTENCY ); fail_unless( error->getCategoryAsString() == "SBML component consistency"); fail_unless( error->isValid() == true); delete error; error = new SBMLError(NoSBOTermsInL1, 2, 2); fail_unless( error->getErrorId() == NoSBOTermsInL1 ); fail_unless( error->getSeverity() == LIBSBML_SEV_WARNING ); fail_unless( error->getSeverityAsString() == "Warning" ); fail_unless( error->getCategory() == LIBSBML_CAT_SBML_L1_COMPAT ); fail_unless( error->getCategoryAsString() == "Translation to SBML L1V2"); fail_unless( error->isValid() == true); delete error; error = new SBMLError(DisallowedMathMLEncodingUse, 2, 2); fail_unless( error->getErrorId() == DisallowedMathMLEncodingUse ); fail_unless( error->getSeverity() == LIBSBML_SEV_ERROR ); fail_unless( error->getSeverityAsString() == "Error" ); fail_unless( error->getCategory() == LIBSBML_CAT_MATHML_CONSISTENCY ); fail_unless( error->getShortMessage() == "Use of the MathML 'encoding' attribute is not allowed on this element"); fail_unless( error->isValid() == true); delete error; error = new SBMLError(DisallowedMathMLEncodingUse, 1, 2); fail_unless( error->getErrorId() == DisallowedMathMLEncodingUse ); fail_unless( error->getSeverity() == LIBSBML_SEV_NOT_APPLICABLE ); fail_unless( error->getCategory() == LIBSBML_CAT_MATHML_CONSISTENCY ); fail_unless( error->isValid() == true); delete error; error = new SBMLError(UnknownError, 2, 4); fail_unless( error->getErrorId() == UnknownError ); fail_unless( error->getSeverity() == LIBSBML_SEV_FATAL ); fail_unless( error->getSeverityAsString() == "Fatal" ); fail_unless( error->getCategory() == LIBSBML_CAT_INTERNAL ); fail_unless( error->getShortMessage() == "Encountered unknown internal libSBML error"); fail_unless( error->isValid() == true); delete error; error = new SBMLError(70912, 2, 4); fail_unless( error->getErrorId() == 70912 ); fail_unless( error->getSeverity() == LIBSBML_SEV_WARNING ); fail_unless( error->getSeverityAsString() == "Warning" ); fail_unless( error->getCategory() == LIBSBML_CAT_INTERNAL ); fail_unless( error->getShortMessage() == "Encountered unknown internal libSBML error"); fail_unless( error->isValid() == false); delete error; }