summaryrefslogtreecommitdiff
path: root/cpp/src/tests/test_tools.h
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2008-01-17 20:50:18 +0000
committerAlan Conway <aconway@apache.org>2008-01-17 20:50:18 +0000
commit15c3f85149bfcf60a70662a4c9ca9763d40e4e72 (patch)
treed0b44deaba3fc0f8981fbf68b458c41418dc1de0 /cpp/src/tests/test_tools.h
parent59399402ad75d99b452e270821ec97975e266685 (diff)
downloadqpid-python-15c3f85149bfcf60a70662a4c9ca9763d40e4e72.tar.gz
Intrusive list template qpid::IList and unit tests.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@612976 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/tests/test_tools.h')
-rw-r--r--cpp/src/tests/test_tools.h42
1 files changed, 31 insertions, 11 deletions
diff --git a/cpp/src/tests/test_tools.h b/cpp/src/tests/test_tools.h
index e564b9a473..2de4b6fbc1 100644
--- a/cpp/src/tests/test_tools.h
+++ b/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.