35 #ifndef OPENMS_CONCEPT_FUZZYSTRINGCOMPARATOR_H 
   36 #define OPENMS_CONCEPT_FUZZYSTRINGCOMPARATOR_H 
   58                         const std::string & string_1,
 
   59                         const char * string_1_stringified,
 
   60                         const std::string & string_2,
 
   61                         const char * string_2_stringified);
 
   74     friend void OPENMS_DLLAPI
 
   78       const std::string & string_1,
 
   79       const char * string_1_stringified,
 
   80       const std::string & string_2,
 
   81       const char * string_2_stringified);
 
   82     friend bool OPENMS_DLLAPI
 
  116       return ratio_max_allowed_;
 
  123       this->ratio_max_allowed_ = rhs;
 
  124       if (ratio_max_allowed_ < 1.0)
 
  125         ratio_max_allowed_ = 1
 
  126                              / ratio_max_allowed_;
 
  134       return absdiff_max_allowed_;
 
  141       this->absdiff_max_allowed_ = rhs;
 
  142       if (absdiff_max_allowed_ < 0.0)
 
  144           = -absdiff_max_allowed_;
 
  179       return verbose_level_;
 
  193       this->verbose_level_ = rhs;
 
  209       this->tab_width_ = rhs;
 
  217       return first_column_;
 
  225       this->first_column_ = rhs;
 
  251       this->log_dest_ = &rhs;
 
  261     compareStrings(std::string 
const & lhs, std::string 
const & rhs);
 
  271     compareStreams(std::istream & input_1, std::istream & input_2);
 
  287     compareFiles(
const std::string & filename_1,
 
  288                  const std::string & filename_2);
 
  300     compareLines_(std::string 
const & line_str_1,
 
  301                   std::string 
const & line_str_2);
 
  305     reportSuccess_() 
const;
 
  310     reportFailure_(
char const * 
const message) 
const;
 
  313     void writeWhitelistCases_(
const std::string & prefix) 
const;
 
  317     void readNextLine_(std::istream & input_stream, std::string & line_string, 
int & line_number) 
const;
 
  320     bool openInputFileStream_(
const std::string & filename, std::ifstream & input_stream) 
const;
 
  347         line_.unsetf(std::ios::skipws);
 
  349         line_position_ = line_.tellg();
 
  355         line_position_ = (
Int(line_.tellg()) != -1 ? line_.tellg() : std::ios::pos_type(line_.str().length()));             
 
  362         line_.seekg(line_position_);             
 
  374         return !line_.fail(); 
 
  425         number = std::numeric_limits<double>::quiet_NaN();
 
  436         input_line.
line_ >> letter;             
 
  437         if ((is_space = (isspace(letter) != 0)))               
 
  439           input_line.
line_ >> std::ws;               
 
  444           if ((is_number = (
bool(input_line.
line_ >> number))))       
 
  450             input_line.
line_ >> letter;                 
 
  470         prefix(input_line.line_.str()), line_column(0)
 
  473         prefix_whitespaces = prefix;
 
  474         for (String::iterator iter = prefix_whitespaces.begin(); iter != prefix_whitespaces.end(); ++iter)
 
  483             line_column = (line_column / tab_width_ + 1) * tab_width_;
 
  486         line_column += first_column_;
 
  512 #endif //OPENMS_CONCEPT_FUZZYSTRINGCOMPARATOR_H 
StreamElement_ element_2_
Stores information about characters, numbers, and whitesspaces loaded from the second input stream...
Definition: FuzzyStringComparator.h:460
int verbose_level_
Definition: FuzzyStringComparator.h:493
void testStringSimilar(const char *file, int line, const std::string &string_1, const char *string_1_stringified, const std::string &string_2, const char *string_2_stringified)
Compare strings using absdiff_max_allowed and ratio_max_allowed. 
A more convenient string class. 
Definition: String.h:56
Internal exception class. 
Definition: FuzzyStringComparator.h:87
double ratio_max_allowed_
Maximum ratio of numbers allowed, see ratio_max_. 
Definition: FuzzyStringComparator.h:393
Stores information about characters, numbers, and whitesspaces loaded from the InputStream. 
Definition: FuzzyStringComparator.h:405
double absdiff_max_
Maximum difference of numbers observed so far, see absdiff_max_allowed_. 
Definition: FuzzyStringComparator.h:402
int line_column
Definition: FuzzyStringComparator.h:467
double absdiff_max_allowed_
Maximum absolute difference of numbers allowed, see absdiff_max_. 
Definition: FuzzyStringComparator.h:399
OpenMS::String prefix
Definition: FuzzyStringComparator.h:465
bool use_prefix_
use a prefix when reporting 
Definition: FuzzyStringComparator.h:503
const int & getVerboseLevel() const 
verbose level 
Definition: FuzzyStringComparator.h:177
std::ostream * log_dest_
Log and results output goes here. 
Definition: FuzzyStringComparator.h:323
void fillFromInputLine(InputLine &input_line)
Read the next element from an InputLine and update the InputLine accordingly. 
Definition: FuzzyStringComparator.h:429
unsigned char letter
Definition: FuzzyStringComparator.h:408
void setTabWidth(const int rhs)
set tab width (for column numbers) 
Definition: FuzzyStringComparator.h:207
void setLogDestination(std::ostream &rhs)
Log output is written to this destination. 
Definition: FuzzyStringComparator.h:249
bool is_space
Definition: FuzzyStringComparator.h:410
Fuzzy comparison of strings, tolerates numeric differences. 
Definition: FuzzyStringComparator.h:71
std::string line_str_2_max_
Definition: FuzzyStringComparator.h:390
std::ostream & getLogDestination() const 
Log output is written to this destination. 
Definition: FuzzyStringComparator.h:234
int line_num_2_
Definition: FuzzyStringComparator.h:384
PrefixInfo_(const InputLine &input_line, const int tab_width_, const int first_column_)
Definition: FuzzyStringComparator.h:469
StringList & getWhitelist()
White list. If both lines contain the same element from this list, they are skipped over...
Definition: FuzzyStringComparator.h:156
std::map< String, UInt > whitelist_cases_
Definition: FuzzyStringComparator.h:506
const double & getAcceptableRelative() const 
Acceptable relative error (a number >= 1.0) 
Definition: FuzzyStringComparator.h:114
void setAcceptableAbsolute(const double rhs)
Acceptable absolute difference (a number >= 0.0) 
Definition: FuzzyStringComparator.h:139
void setVerboseLevel(const int rhs)
verbose level 
Definition: FuzzyStringComparator.h:191
bool is_number
Definition: FuzzyStringComparator.h:409
OpenMS::String prefix_whitespaces
Definition: FuzzyStringComparator.h:466
double number
Definition: FuzzyStringComparator.h:407
int first_column_
Definition: FuzzyStringComparator.h:495
int tab_width_
Definition: FuzzyStringComparator.h:494
double ratio_max_
Maximum ratio of numbers observed so far, see ratio_max_allowed_. 
Definition: FuzzyStringComparator.h:396
int line_num_1_
Definition: FuzzyStringComparator.h:383
StreamElement_()
Definition: FuzzyStringComparator.h:412
StreamElement_ element_1_
Stores information about characters, numbers, and whitesspaces loaded from the first input stream...
Definition: FuzzyStringComparator.h:458
void reset()
reset all elements of the element to default value 
Definition: FuzzyStringComparator.h:420
const int & getFirstColumn() const 
get first column (for column numbers) 
Definition: FuzzyStringComparator.h:215
StringList whitelist_
Definition: FuzzyStringComparator.h:505
InputLine input_line_2_
Definition: FuzzyStringComparator.h:381
bool is_status_success_
Has comparison been sucessful so far? Note: this flag is changed in reportFailure_();. 
Definition: FuzzyStringComparator.h:500
void setAcceptableRelative(const double rhs)
Acceptable relative error (a number >= 1.0) 
Definition: FuzzyStringComparator.h:121
std::string input_2_name_
Name of second input e.g., filename. 
Definition: FuzzyStringComparator.h:328
void setFirstColumn(const int rhs)
set first column (for column numbers) 
Definition: FuzzyStringComparator.h:223
String list. 
Definition: StringList.h:56
int line_num_1_max_
Definition: FuzzyStringComparator.h:386
std::string line_str_1_max_
Definition: FuzzyStringComparator.h:389
void setWhitelist(const StringList &rhs)
White list. If both lines contain the same element from this list, they are skipped over...
Definition: FuzzyStringComparator.h:163
const StringList & getWhitelist() const 
White list. If both lines contain the same element from this list, they are skipped over...
Definition: FuzzyStringComparator.h:149
bool isFileSimilar(const std::string &filename_1, const std::string &filename_2)
Compare files using absdiff_max_allowed and ratio_max_allowed. 
bool is_absdiff_small_
Definition: FuzzyStringComparator.h:491
const double & getAcceptableAbsolute() const 
Acceptable absolute difference (a number >= 0.0) 
Definition: FuzzyStringComparator.h:132
Wrapper for the prefix information computed for the failure report. 
Definition: FuzzyStringComparator.h:463
int line_num_2_max_
Definition: FuzzyStringComparator.h:387
int Int
Signed integer type. 
Definition: Types.h:100
InputLine input_line_1_
Definition: FuzzyStringComparator.h:380
const int & getTabWidth() const 
get tab width (for column numbers) 
Definition: FuzzyStringComparator.h:199
std::string input_1_name_
Name of first input e.g., filename. 
Definition: FuzzyStringComparator.h:326