From 6a5f540f08e1aec51c8a6464046cfe5ab8fa77af Mon Sep 17 00:00:00 2001 From: Bjorn Reese Date: Sat, 11 Feb 2017 16:37:12 +0100 Subject: [PATCH] Removed std::ostringstream --- include/boost/core/lightweight_test.hpp | 29 ++++++++++++++----------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/include/boost/core/lightweight_test.hpp b/include/boost/core/lightweight_test.hpp index d8a316e..5e0ef5c 100644 --- a/include/boost/core/lightweight_test.hpp +++ b/include/boost/core/lightweight_test.hpp @@ -20,7 +20,6 @@ // #include -#include #include #include #include @@ -182,10 +181,11 @@ inline void test_cstr_ne_impl( char const * expr1, char const * expr2, } } -template -void test_all_eq_impl(char const * file, int line, char const * function, - FwdIt1 first_begin, FwdIt1 first_end, - FwdIt2 second_begin, FwdIt2 second_end) +template +void test_all_eq_impl(FormattedOutputFunction& output, + char const * file, int line, char const * function, + ForwardIterator1 first_begin, ForwardIterator1 first_end, + ForwardIterator2 second_begin, ForwardIterator2 second_end) { if (std::distance(first_begin, first_end) != std::distance(second_begin, second_end)) { @@ -193,9 +193,9 @@ void test_all_eq_impl(char const * file, int line, char const * function, } else { - FwdIt1 first_it = first_begin; - FwdIt2 second_it = second_begin; - std::ostringstream indices; + ForwardIterator1 first_it = first_begin; + ForwardIterator2 second_it = second_begin; + bool first_iteration = true; do { while ((first_it != first_end) && (second_it != second_end) && (*first_it == *second_it)) @@ -208,13 +208,16 @@ void test_all_eq_impl(char const * file, int line, char const * function, boost::detail::report_errors_remind(); return; } - indices << " [" << std::distance(first_begin, first_it) << "] '" << *first_it << "' != '" << *second_it << "'"; + if (first_iteration) + { + first_iteration = true; + output << file << "(" << line << "): Container contents differ in function '" << function << "': mismatching indices"; + } + output << " [" << std::distance(first_begin, first_it) << "] '" << *first_it << "' != '" << *second_it << "'"; ++first_it; ++second_it; } while (first_it != first_end); - BOOST_LIGHTWEIGHT_TEST_OSTREAM - << file << "(" << line << "): Container contents differ in function '" << function << "': mismatching indices" - << indices.str() << std::endl; + output << std::endl; ++boost::detail::test_errors(); } } @@ -264,7 +267,7 @@ inline int report_errors() #define BOOST_TEST_CSTR_EQ(expr1,expr2) ( ::boost::detail::test_cstr_eq_impl(#expr1, #expr2, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION, expr1, expr2) ) #define BOOST_TEST_CSTR_NE(expr1,expr2) ( ::boost::detail::test_cstr_ne_impl(#expr1, #expr2, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION, expr1, expr2) ) -#define BOOST_TEST_ALL_EQ(begin1, end1, begin2, end2) ( ::boost::detail::test_all_eq_impl(__FILE__, __LINE__, BOOST_CURRENT_FUNCTION, begin1, end1, begin2, end2) ) +#define BOOST_TEST_ALL_EQ(begin1, end1, begin2, end2) ( ::boost::detail::test_all_eq_impl(BOOST_LIGHTWEIGHT_TEST_OSTREAM, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION, begin1, end1, begin2, end2) ) #ifndef BOOST_NO_EXCEPTIONS #define BOOST_TEST_THROWS( EXPR, EXCEP ) \