diff options
author | Oleg Morozenkov <m@oleg.rocks> | 2018-07-23 01:56:42 +0300 |
---|---|---|
committer | Oleg Morozenkov <m@oleg.rocks> | 2018-07-23 01:56:42 +0300 |
commit | d47ee877be5d1175bdc36f2d87881ddaf875a8e9 (patch) | |
tree | 7fd20cdc1236fe6b832ae980de12afd7071ebab9 /test/utils.h | |
parent | cea20d4078f2088dea0dd589f1cc9dd7ee22461b (diff) |
Refactor http clients, fix webhook server, add more samples, change tabs to 4 spaces
Diffstat (limited to 'test/utils.h')
-rw-r--r-- | test/utils.h | 136 |
1 files changed, 73 insertions, 63 deletions
diff --git a/test/utils.h b/test/utils.h index 93f64ff..e0db42b 100644 --- a/test/utils.h +++ b/test/utils.h @@ -26,79 +26,89 @@ #include <string> #include <vector> #include <sstream> +#include <map> +#include <unordered_map> #include <boost/lexical_cast.hpp> template<typename T> inline 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; } inline std::string diffS(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); - return diff(v1, v2, [](const std::string& item) { - return item; - }); + 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); + return diff(v1, v2, [](const std::string& item) { + return item; + }); +} + +inline std::string diffMSS(const std::unordered_map<std::string, std::string>& test, const std::unordered_map<std::string, std::string>& expected) { + std::map<std::string, std::string> v1(test.begin(), test.end()); + std::map<std::string, std::string> v2(expected.begin(), expected.end()); + return diff(v1, v2, [](const std::pair<const std::string, std::string>& item) { + return item.first + '=' + item.second; + }); } #endif //TGBOT_UTILS_H |