diff options
author | Oleg Morozenkov <omorozenkov@gmail.com> | 2015-08-11 22:13:23 +0300 |
---|---|---|
committer | Oleg Morozenkov <omorozenkov@gmail.com> | 2015-08-11 22:13:23 +0300 |
commit | 376b88ec09ef8cf71dd823467406c58204485fcc (patch) | |
tree | 9ca599b854d18006c65b26003ce7dbdd416fdf18 /test/utils.h | |
parent | d7fbf7149d0e0c1c30972dab68d510ef6ac377dd (diff) |
Fixed compiler's errors in TgTypeParser + fixed indentation + some other fixes
Diffstat (limited to 'test/utils.h')
-rw-r--r-- | test/utils.h | 113 |
1 files changed, 67 insertions, 46 deletions
diff --git a/test/utils.h b/test/utils.h index d8e64e3..485a40e 100644 --- a/test/utils.h +++ b/test/utils.h @@ -24,60 +24,81 @@ #define TGBOT_UTILS_H #include <string> +#include <vector> +#include <sstream> #include <boost/lexical_cast.hpp> -std::string diff(const std::string& test, const std::string& expected); +std::string diff(const std::string& test, const std::string& expected) { + std::vector<std::string> v1, v2; + std::istringstream ss1(test); + std::istringstream ss2(expected); + std::string s1, s2; + bool r1, r2; + do { + r1 = std::getline(ss1, s1) ? true : false; + r2 = std::getline(ss2, s2) ? true : false; + if (r1) { + v1.push_back(s1); + } + if (r2) { + v2.push_back(s2); + } + } while (r1 || r2); + diff(v1, v2, [](const std::string& item) -> std::string { + return std::string(item); + }); +} template<typename T> std::string diff(const T& test, const T& expected, std::string (*toStringFunc)(const typename T::value_type&)) { - std::string result; - result += "\n*** BEGIN *** Count: t="; - result += boost::lexical_cast<std::string>(test.size()); - result += " e="; - result += boost::lexical_cast<std::string>(expected.size()); - result += '\n'; + std::string result; + result += "\n*** BEGIN *** Count: t="; + result += boost::lexical_cast<std::string>(test.size()); + result += " e="; + result += boost::lexical_cast<std::string>(expected.size()); + result += '\n'; - typename T::const_iterator iter1 = test.begin(); - typename T::const_iterator end1 = test.end(); - typename T::const_iterator iter2 = expected.begin(); - typename T::const_iterator end2 = expected.end(); - bool r1, r2; - std::string s1, s2; - size_t i = 0; - do { - r1 = iter1 != end1; - r2 = iter2 != end2; - if (r1) { - s1 = toStringFunc(*iter1++); - } - if (r2) { - s2 = toStringFunc(*iter2++); - } - if (r1 && r2 && s1 == s2) { - result += boost::lexical_cast<std::string>(i); - result += " [=] "; - result += s1; - result += "\n"; - } else { - if (r1) { - result += boost::lexical_cast<std::string>(i); - result += " [t] "; - result += s1; - result += "\n"; - } - if (r2) { - result += boost::lexical_cast<std::string>(i); - result += " [e] "; - result += s2; - result += "\n"; - } - } - ++i; - } while (r1 || r2); + typename T::const_iterator iter1 = test.begin(); + typename T::const_iterator end1 = test.end(); + typename T::const_iterator iter2 = expected.begin(); + typename T::const_iterator end2 = expected.end(); + bool r1, r2; + std::string s1, s2; + size_t i = 0; + do { + r1 = iter1 != end1; + r2 = iter2 != end2; + if (r1) { + s1 = toStringFunc(*iter1++); + } + if (r2) { + s2 = toStringFunc(*iter2++); + } + if (r1 && r2 && s1 == s2) { + result += boost::lexical_cast<std::string>(i); + result += " [=] "; + result += s1; + result += "\n"; + } else { + if (r1) { + result += boost::lexical_cast<std::string>(i); + result += " [t] "; + result += s1; + result += "\n"; + } + if (r2) { + result += boost::lexical_cast<std::string>(i); + result += " [e] "; + result += s2; + result += "\n"; + } + } + ++i; + } while (r1 || r2); - result += "*** END ***\n"; - return result; + result += "*** END ***\n"; + return result; } #endif //TGBOT_UTILS_H |