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 /////////////////////////////////////////////////////////////
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; }