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