diff options
| author | Alan Conway <aconway@apache.org> | 2008-01-17 20:50:18 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2008-01-17 20:50:18 +0000 |
| commit | 56e90b29c29a63616a301b1e1feed61b2a92fe62 (patch) | |
| tree | bab5d186f592de98e66958b0c5abec93eb3062e8 /qpid/cpp/src/tests/test_tools.h | |
| parent | e300ae9b607709b3127548f63f05601ef55eeb8c (diff) | |
| download | qpid-python-56e90b29c29a63616a301b1e1feed61b2a92fe62.tar.gz | |
Intrusive list template qpid::IList and unit tests.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@612976 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src/tests/test_tools.h')
| -rw-r--r-- | qpid/cpp/src/tests/test_tools.h | 42 |
1 files changed, 31 insertions, 11 deletions
diff --git a/qpid/cpp/src/tests/test_tools.h b/qpid/cpp/src/tests/test_tools.h index e564b9a473..2de4b6fbc1 100644 --- a/qpid/cpp/src/tests/test_tools.h +++ b/qpid/cpp/src/tests/test_tools.h @@ -22,21 +22,41 @@ #include <boost/test/test_tools.hpp> #include <boost/assign/list_of.hpp> #include <boost/regex.hpp> +#include <boost/assign/list_of.hpp> #include <vector> +#include <ostream> + +// Print a sequence +template <class T> std::ostream& seqPrint(std::ostream& o, const T& seq) { + std::copy(seq.begin(), seq.end(), std::ostream_iterator<typename T::value_type>(o, " ")); + return o; +} + +// Compare sequences +template <class T, class U> +bool seqEqual(const T& a, const U& b) { + typename T::const_iterator i = a.begin(); + typename U::const_iterator j = b.begin(); + while (i != a.end() && j != b.end() && *i == *j) { ++i; ++j; } + return (i == a.end()) && (j == b.end()); +} + +// ostream and == operators so we can compare vectors and boost::assign::list_of +// with BOOST_CHECK_EQUALS +namespace std { // In namespace std so boost can find them. + +template <class T> +ostream& operator<<(ostream& o, const vector<T>& v) { return seqPrint(o, v); } + +template <class T> +ostream& operator<<(ostream& o, const boost::assign_detail::generic_list<T>& l) { return seqPrint(o, l); } + +template <class T> +bool operator == (const vector<T>& a, const boost::assign_detail::generic_list<T>& b) { return seqEqual(a, b); } -/** Stream operator so BOOST_CHECK_EQUALS works on vectors. */ -namespace std { template <class T> -ostream& operator <<(ostream& o, const vector<T>& v) { - o << " {"; - typename vector<T>::const_iterator i = v.begin(); - if (i != v.end()) - o << *i++; - while (i != v.end()) - o << ", " << *i++; - return o << "}"; +bool operator == (const boost::assign_detail::generic_list<T>& b, const vector<T>& a) { return seqEqual(a, b); } } -} // namespace std /** NB: order of parameters is regex first, in line with * CHECK(expected, actual) convention. |
