#include #include #include "typeinfo.hpp" namespace Check { const size_t MaxSizeValue = std::numeric_limits::max(); const Difference Difference::Empty = Difference(); #define CHECK_DECLARE_EPSILON(TYPE) \ TYPE Comparer::epsilon = std::numeric_limits::min() CHECK_DECLARE_EPSILON(float); CHECK_DECLARE_EPSILON(double); CHECK_DECLARE_EPSILON(long double); #undef CHECK_DECLARE_EPSILON size_t Comparer::slitWidth = 10; bool Comparer::compare() { const size_t length = std::min(left.length(), right.length()); for (diffPos = 0; diffPos < length; ++diffPos) if (left[diffPos] != right[diffPos]) return false; return left.length() == right.length(); } Difference Comparer::difference() const { const std::string first = quote(left, diffPos, slitWidth); const std::string second = quote(right, diffPos, slitWidth); return Difference(first, second); } }