123456789101112131415161718192021222324252627282930313233343536373839404142 |
- // Copyright 2005-2009 Daniel James.
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- #if !defined(BOOST_UNORDERED_TEST_HELPERS_STRONG_HEADER)
- #define BOOST_UNORDERED_TEST_HELPERS_STRONG_HEADER
- #include "./equivalent.hpp"
- #include "./exception_test.hpp"
- #include "./list.hpp"
- #include <boost/config.hpp>
- #include <iterator>
- namespace test {
- template <class X> class strong
- {
- typedef test::list<typename X::value_type> values_type;
- values_type values_;
- unsigned int allocations_;
- public:
- void store(X const& x, unsigned int allocations = 0)
- {
- DISABLE_EXCEPTIONS;
- values_.clear();
- values_.insert(x.cbegin(), x.cend());
- allocations_ = allocations;
- }
- void test(X const& x, unsigned int allocations = 0) const
- {
- if (!(x.size() == values_.size() && test::equal(x.cbegin(), x.cend(),
- values_.begin(), test::equivalent)))
- BOOST_ERROR("Strong exception safety failure.");
- if (allocations != allocations_)
- BOOST_ERROR("Strong exception failure: extra allocations.");
- }
- };
- }
- #endif
|