diff options
Diffstat (limited to 'src/boost/libs/unordered/test/helpers/strong.hpp')
-rw-r--r-- | src/boost/libs/unordered/test/helpers/strong.hpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/boost/libs/unordered/test/helpers/strong.hpp b/src/boost/libs/unordered/test/helpers/strong.hpp new file mode 100644 index 00000000..3c936133 --- /dev/null +++ b/src/boost/libs/unordered/test/helpers/strong.hpp @@ -0,0 +1,42 @@ + +// 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 |