using namespace OpenMS;
using namespace std;

XMLValidator* ptr = 0;
XMLValidator* nullPointer = 0;
START_SECTION((XMLValidator()))
ptr = new XMLValidator;
TEST_NOT_EQUAL(ptr, nullPointer)
END_SECTION

START_SECTION(([EXTRA]~XMLValidator()))
delete ptr;
END_SECTION

START_SECTION((bool isValid(const String &filename, const String &schema,  std::ostream& os = std::cerr) ))
XMLValidator v;

TEST_EQUAL(v.isValid(OPENMS_GET_TEST_DATA_PATH("XMLValidator_valid.xml"),OPENMS_GET_TEST_DATA_PATH("XMLValidator.xsd")), true);

TEST_EQUAL(v.isValid(OPENMS_GET_TEST_DATA_PATH("XMLValidator_missing_element.xml"),OPENMS_GET_TEST_DATA_PATH("XMLValidator.xsd")), false);

TEST_EQUAL(v.isValid(OPENMS_GET_TEST_DATA_PATH("XMLValidator_missing_attribute.xml"),OPENMS_GET_TEST_DATA_PATH("XMLValidator.xsd")), false);

TEST_EQUAL(v.isValid(OPENMS_GET_TEST_DATA_PATH("XMLValidator_syntax.xml"),OPENMS_GET_TEST_DATA_PATH("XMLValidator.xsd")), false);

//check vaild fail again to make sure internal states are ok
TEST_EQUAL(v.isValid(OPENMS_GET_TEST_DATA_PATH("XMLValidator_valid.xml"),OPENMS_GET_TEST_DATA_PATH("XMLValidator.xsd")), true);

//test exception
TEST_EXCEPTION(Exception::FileNotFound, v.isValid(OPENMS_GET_TEST_DATA_PATH("this_file_does_not_exist.for_sure"),OPENMS_GET_TEST_DATA_PATH("XMLValidator.xsd")));
END_SECTION
示例#2
0
  ExitCodes main_(int, const char**)
  {
    String in = getStringOption_("in");
    String schema = getStringOption_("schema");
    bool valid = true;

    if (schema != "") //schema explicitly given
    {
      XMLValidator xmlv;
      valid = xmlv.isValid(in, schema);
    }
    else     //no schema given
    {
      //determine input type
      FileTypes::Type in_type = FileHandler::getType(in);
      if (in_type == FileTypes::UNKNOWN)
      {
        writeLog_("Error: Could not determine input file type!");
        return PARSE_ERROR;
      }

      cout << endl << "Validating " << FileTypes::typeToName(in_type) << " file";
      switch (in_type)
      {
      case FileTypes::MZDATA:
        cout << " against schema version " << MzDataFile().getVersion() << endl;
        valid = MzDataFile().isValid(in);
        break;

      case FileTypes::FEATUREXML:
        cout << " against schema version " << FeatureXMLFile().getVersion() << endl;
        valid = FeatureXMLFile().isValid(in);
        break;

      case FileTypes::IDXML:
        cout << " against schema version " << IdXMLFile().getVersion() << endl;
        valid = IdXMLFile().isValid(in);
        break;

      case FileTypes::CONSENSUSXML:
        cout << " against schema version " << ConsensusXMLFile().getVersion() << endl;
        valid = ConsensusXMLFile().isValid(in);
        break;

      case FileTypes::MZXML:
        cout << " against schema version " << MzXMLFile().getVersion() << endl;
        valid = MzXMLFile().isValid(in);
        break;

      case FileTypes::INI:
        cout << " against schema version " << ParamXMLFile().getVersion() << endl;
        valid = ParamXMLFile().isValid(in);
        break;

      case FileTypes::PEPXML:
        cout << " against schema version " << PepXMLFile().getVersion() << endl;
        valid = PepXMLFile().isValid(in);
        break;

      case FileTypes::MZML:
        cout << " against schema version " << MzMLFile().getVersion() << endl;
        valid = MzMLFile().isValid(in);
        break;

      default:
        cout << endl << "Aborted: Validation of this file type is not supported!" << endl;
        return EXECUTION_OK;
      }
    }

    //Result
    if (valid)
    {
      cout << "Success: the file is valid!" << endl;
    }
    else
    {
      cout << "Failed: errors are listed above!" << endl;
    }

    return EXECUTION_OK;
  }