58 out <<
"Test Teuchos::Details::Allocator for T = "
59 << TypeNameTraits<T>::name () << endl;
60 AllocationLogger::resetAllocationCounts ();
65 typedef typename alloc_type::size_type size_type;
72 size_type oldMaxAlloc = 0;
78 const size_type numEntries = 10;
80 typedef std::vector<T, alloc_type> vec_type;
88 T val =
static_cast<T
> (22);
89 vec_type vec (numEntries, val, alloc);
94 oldMaxAlloc = alloc.maxAllocInBytes ();
95 const size_type curAlloc = alloc.curAllocInBytes ();
96 const size_type expectedCurAlloc = numEntries *
sizeof (T);
107 for (size_type k = 0; k < numEntries; ++k) {
114 const size_type newMaxAlloc = alloc.maxAllocInBytes ();
118 out <<
"Done with test!" << endl;
131 out <<
"Test Teuchos::Details::Allocator for T = "
132 << TypeNameTraits<T>::name () <<
", with verbose logging on" << endl;
133 AllocationLogger::resetAllocationCounts ();
137 alloc_type alloc (
true,
true);
139 typedef typename alloc_type::size_type size_type;
146 size_type oldMaxAlloc = 0;
152 const size_type numEntries = 10;
154 typedef std::vector<T, alloc_type> vec_type;
162 T val =
static_cast<T
> (22);
163 vec_type vec (numEntries, val, alloc);
168 oldMaxAlloc = alloc.maxAllocInBytes ();
169 const size_type curAlloc = alloc.curAllocInBytes ();
170 const size_type expectedCurAlloc = numEntries *
sizeof (T);
181 for (size_type k = 0; k < numEntries; ++k) {
188 const size_type newMaxAlloc = alloc.maxAllocInBytes ();
192 out <<
"Done with test!" << endl;
205 out <<
"Test Teuchos::Details::Allocator<T> for mixed T" << endl;
206 AllocationLogger::resetAllocationCounts ();
209 typedef int_alloc_type::size_type size_type;
210 const size_type numEntries = 10;
211 const size_type expectedMaxAlloc = numEntries *
sizeof (int) + numEntries *
sizeof (
double);
217 std::vector<int, int_alloc_type> intVec (numEntries);
220 std::vector<double, double_alloc_type> dblVec (numEntries);
224 TEST_EQUALITY( intVec.get_allocator ().curAllocInBytes (), dblVec.get_allocator ().curAllocInBytes () );
225 TEST_EQUALITY( intVec.get_allocator ().maxAllocInBytes (), dblVec.get_allocator ().maxAllocInBytes () );
228 TEST_EQUALITY_CONST( intVec.get_allocator ().curAllocInBytes () >= expectedMaxAlloc,
true );
229 TEST_EQUALITY_CONST( intVec.get_allocator ().maxAllocInBytes () >= expectedMaxAlloc,
true );
235 out <<
"Done with test!" << endl;
253 out <<
"Test Teuchos::Details::Allocator<std::string>" << endl;
254 AllocationLogger::resetAllocationCounts ();
257 typedef string_alloc_type::size_type size_type;
258 const size_type numEntries = 10;
262 const size_type expectedMaxAlloc = numEntries *
sizeof (std::string);
269 std::vector<std::string, string_alloc_type> vec (numEntries);
281 string_alloc_type alloc;
282 std::string val (
"I'm a little teapot, short and stout.");
283 std::vector<std::string, string_alloc_type> vec (numEntries, val, alloc);
297 string_alloc_type alloc;
298 std::vector<std::string, string_alloc_type> vec (numEntries);
300 for (size_type k = 0; k < numEntries; ++k) {
301 std::ostringstream os;
302 os <<
"Current index: " << k;
313 out <<
"Done with test!" << endl;
Declaration of Teuchos::Details::Allocator, a tracking and logging implementation of the C++ Standard...
#define TEST_EQUALITY_CONST(v1, v2)
Assert the equality of v1 and constant v2.
#define TEST_EQUALITY(v1, v2)
Assert the equality of v1 and v2.
Defines basic traits returning the name of a type in a portable and readable way.
#define TEUCHOS_UNIT_TEST_TEMPLATE_1_DECL(TEST_GROUP, TEST_NAME, TYPE)
Macro for defining a templated unit test with one template parameter.
#define TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT(TEST_GROUP, TEST_NAME, TYPE)
Instantiate a templated unit test with one template parameter.
#define TEUCHOS_UNIT_TEST(TEST_GROUP, TEST_NAME)
Macro for defining a (non-templated) unit test.
Logging implementation used by Allocator (see below).
Optional tracking allocator for Teuchos Memory Management classes.
Default traits class that just returns typeid(T).name().
Tabbing class for helping to create formated, indented output for a basic_FancyOStream object.