2 // Copyright 2008-2009 Daniel James.
3 // Distributed under the Boost Software License, Version 1.0. (See accompanying
4 // file LICENSE_1_0.txt or move at http://www.boost.org/LICENSE_1_0.txt)
6 #if !defined(BOOST_UNORDERED_TEST_HELPERS_COUNT_HEAD)
7 #define BOOST_UNORDERED_TEST_HELPERS_COUNT_HEAD
9 #include <boost/detail/lightweight_test.hpp>
17 object_count() : instances(0), constructions(0) {}
18 void reset() { *this = object_count(); }
29 BOOST_ERROR("Unbalanced constructions.");
35 bool operator==(object_count const& x) const
37 return instances == x.instances && constructions == x.constructions;
40 bool operator!=(object_count const& x) const { return !(*this == x); }
42 friend std::ostream& operator<<(std::ostream& out, object_count const& c)
44 out << "[instances: " << c.instances
45 << ", constructions: " << c.constructions << "]";
50 // This won't be a problem as I'm only using a single compile unit
51 // in each test (this is actually require by the minimal test
54 // boostinspect:nounnamed
56 object_count global_object_count;
61 counted_object() { global_object_count.construct(); }
62 counted_object(counted_object const&) { global_object_count.construct(); }
63 ~counted_object() { global_object_count.destruct(); }
66 struct check_instances
72 : instances_(global_object_count.instances),
73 constructions_(global_object_count.constructions)
78 BOOST_TEST(global_object_count.instances == instances_);
81 int instances() const { return global_object_count.instances - instances_; }
82 int constructions() const
84 return global_object_count.constructions - constructions_;