QDir d; String dirname = File::getTempDirectory() + "/" + File::getUniqueName() + "/"; TEST_EQUAL(d.mkpath(dirname.toQString()), TRUE); #ifdef OPENMS_WINDOWSPLATFORM _putenv_s("OPENMS_HOME_PATH", dirname.c_str()); #else setenv("OPENMS_HOME_PATH", dirname.c_str(), 0); #endif TEST_EQUAL(File::getUserDirectory(), dirname) // Note: this does not guarantee any more that the user directory or an // OpenMS.ini file exists at the new location. END_SECTION START_SECTION(static Param getSystemParameters()) Param p = File::getSystemParameters(); TEST_EQUAL(p.size()>0, true) TEST_EQUAL(p.getValue("version"), VersionInfo::getVersion()) END_SECTION START_SECTION(static String findDatabase(const String &db_name)) TEST_EXCEPTION(Exception::FileNotFound, File::findDatabase("filedoesnotexists")) String db = File::findDatabase("./CV/unimod.obo"); //TEST_EQUAL(db,"wtf") TEST_EQUAL(db.hasSubstring("share/OpenMS"), true) END_SECTION START_SECTION(static String findExecutable(const OpenMS::String& toolName)) { TEST_EXCEPTION(Exception::FileNotFound, File::findExecutable("executable_does_not_exist"))
void createFragment_(String & fragment, const Param & param) { //std::cerr << "FRAGMENT: " << fragment << "\n\n"; // e.g.: -input %BASENAME[%%in].mzML // we have to make this little detour param -> vector<String> // to sort the param names by length, otherwise we have a // problem with parameter substitution // i.e., if A is a prefix of B and gets replaced first, the // suffix of B remains and will cause trouble! vector<String> param_names; param_names.reserve(param.size()); for (Param::ParamIterator it = param.begin(); it != param.end(); ++it) { param_names.push_back(it->name); } // sort by length std::sort(param_names.begin(), param_names.end(), reverseComparator(StringSizeLess())); // iterate through all input params and replace with values: SignedSize allowed_percent(0); // filenames might contain '%', which are allowed to remain there (and even must remain) for (vector<String>::iterator it = param_names.begin(); it != param_names.end(); ++it) { if (!fragment.hasSubstring("%%" + *it)) continue; String s_new = paramToString_(param.getEntry(*it)); allowed_percent += s_new.length() - String(s_new).substitute("%", "").length(); //std::cerr << "IN: " << s_new << "(" << allowed_percent << "\n"; fragment.substitute("%%" + *it, s_new); } if (fragment.hasSubstring("%%")) throw Exception::InvalidValue(__FILE__, __LINE__, __PRETTY_FUNCTION__, "Invalid '%%' found in '" + fragment + "' after replacing all parameters!", fragment); // %TMP replace: fragment.substitute("%TMP", File::getTempDirectory()); // %RND replace: fragment.substitute("%RND", String(UniqueIdGenerator::getUniqueId())); // %WORKINGDIR replace: fragment.substitute("%WORKINGDIR", tde_.working_directory); // %DIR% replace { QRegExp rx("%DIR\\[(.*)\\]"); rx.setMinimal(true); int pos = 0; QString t_tmp = fragment.toQString(); //std::cout << "fragment is:" << fragment << std::endl; while ((pos = rx.indexIn(t_tmp, pos)) != -1) { String value = rx.cap(1); // param name (hopefully) // replace in fragment: QFileInfo qfi(value.toQString()); //std::cout << "match @ " << pos << " " << value << " --> " << qfi.canonicalPath() << "\n"; t_tmp = t_tmp.replace(String("%DIR[" + value + "]").toQString(), qfi.canonicalPath()); } fragment = String(t_tmp); //std::cout << "NEW fragment is:" << fragment << std::endl; } // %BASENAME% replace { QRegExp rx("%BASENAME\\[(.*)\\]"); rx.setMinimal(true); int pos = 0, count = 0; QString t_tmp = fragment.toQString(); while ((pos = rx.indexIn(t_tmp, pos)) != -1) { //std::cout << "match @ " << pos << "\n"; String value = rx.cap(1); // param name (hopefully) // replace in fragment: QFileInfo qfi(value.toQString()); //std::cout << "match @ " << pos << " " << value << " --> " << qfi.completeBaseName() << "\n"; t_tmp = t_tmp.replace(String("%BASENAME[" + value + "]").toQString(), qfi.completeBaseName()); ++count; } // update expected count of valid '%' allowed_percent -= (fragment.length() - String(fragment).substitute("%", "").length()) // original # of % - (t_tmp.length() - String(t_tmp).substitute("%", "").length()) // new # of % - count; // expected # of % due to %BASENAME fragment = String(t_tmp); } SignedSize diff = (fragment.length() - String(fragment).substitute("%", "").length()) - allowed_percent; //std::cerr << "allowed: " << allowed_percent << "\n" << "diff: " << diff << " in: " << fragment << "\n"; if (diff > 0) throw Exception::InvalidValue(__FILE__, __LINE__, __PRETTY_FUNCTION__, "Mapping still contains '%' after substitution! Did you use % instead of %%?", fragment); else if (diff < 0) throw Exception::InvalidValue(__FILE__, __LINE__, __PRETTY_FUNCTION__, "Error: '%' from a filename where accidentally considered command tags! " "This is a bug! Remove '%' from input filesnames to fix, but please report this as well!", fragment); //std::cout << fragment << "'\n"; }
parameters.setValue(String("scaling_bucket_size"), 0.01); parameters.setValue(String("shift_bucket_size"), 0.1); // If hashing goes wrong, get debug output with the following: // parameters.setValue(String("dump_buckets"),"pcast_buckets"); // parameters.setValue(String("dump_pairs"),"pcast_pairs"); TransformationDescription transformation; PoseClusteringAffineSuperimposer pcat; pcat.setParameters(parameters); // That's a precondition for run()! Now even documented :-) input[0].updateRanges(); input[1].updateRanges(); pcat.run(input[0], input[1], transformation); TEST_STRING_EQUAL(transformation.getModelType(), "linear") transformation.getModelParameters(parameters); TEST_EQUAL(parameters.size(), 2) TEST_REAL_SIMILAR(parameters.getValue("slope"), 1.0) TEST_REAL_SIMILAR(parameters.getValue("intercept"), -0.4) END_SECTION ///////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////// END_TEST
feat3.setPosition(pos3); feat3.setIntensity(100.0f); feat4.setPosition(pos4); feat4.setIntensity(100.0f); input[1].push_back(ConsensusFeature(feat3)); input[1].push_back(ConsensusFeature(feat4)); TransformationDescription transformation; PoseClusteringShiftSuperimposer pcat; Param params; #if 0 // switch this on for debugging params.setValue("dump_buckets","tmp_PoseClusteringShiftSuperimposer_buckets"); params.setValue("dump_pairs","tmp_PoseClusteringShiftSuperimposer_pairs"); pcat.setParameters(params); #endif pcat.run(input[0], input[1], transformation); TEST_STRING_EQUAL(transformation.getModelType(), "linear") params = transformation.getModelParameters(); TEST_EQUAL(params.size(), 2) TEST_REAL_SIMILAR(params.getValue("slope"), 1.0) TEST_REAL_SIMILAR(params.getValue("intercept"), -20.4) END_SECTION ///////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////// END_TEST
p.setValue("item1", 7); p.setValue("intlist3", ListUtils::create<Int>("1")); p.setValue("stringlist3", ListUtils::create<String>("1")); p.setValue("item3", 7.6); p.setValue("doublelist", ListUtils::create<double>("1.22,2.33,4.55")); p.setValue("doublelist2", ListUtils::create<double>("")); p.setValue("doublelist3", ListUtils::create<double>("1.4")); //store String filename; NEW_TMP_FILE(filename); paramFile.store(filename,p); //load Param p2; paramFile.load(filename,p2); TEST_EQUAL(p2.size(),12); TEST_EQUAL(p2.getValue("stringlist").valueType(), DataValue::STRING_LIST) StringList list = p2.getValue("stringlist"); TEST_EQUAL(list.size(),3) TEST_EQUAL(list[0],"a") TEST_EQUAL(list[1],"bb") TEST_EQUAL(list[2],"ccc") TEST_EQUAL(p2.getValue("stringlist2").valueType(), DataValue::STRING_LIST) list = p2.getValue("stringlist2"); TEST_EQUAL(list.size(),0) TEST_EQUAL(p2.getValue("stringlist").valueType(), DataValue::STRING_LIST) list = p2.getValue("stringlist3"); TEST_EQUAL(list.size(),1)