check_construct_destroy.cc [plain text]
#include <set>
#include <functional>
#include <iterator>
#include <testsuite_allocator.h>
using namespace __gnu_test;
int main()
{
typedef std::set<int, std::less<int>, tracker_alloc<int> > Container;
const int arr10[10] = { 2, 4, 1, 7, 3, 8, 10, 5, 9, 6 };
const int arr10a[10] = { 31, 23, 82, 46, 13, 17, 30, 71, 22, 51 };
bool ok = true;
allocation_tracker::resetCounts();
{
Container c;
ok = check_construct_destroy("empty container", 0, 0) && ok;
}
ok = check_construct_destroy("empty container", 0, 0) && ok;
allocation_tracker::resetCounts();
{
Container c(arr10, arr10 + 10);
ok = check_construct_destroy("Construct from range", 10, 0) && ok;
}
ok = check_construct_destroy("Construct from range", 10, 10) && ok;
{
Container c(arr10, arr10 + 10);
allocation_tracker::resetCounts();
c.insert(arr10a[0]);
ok = check_construct_destroy("Insert element", 1, 0) && ok;
}
ok = check_construct_destroy("Insert element", 1, 11) && ok;
{
Container c(arr10, arr10 + 10);
allocation_tracker::resetCounts();
c.insert(arr10a, arr10a+3);
ok = check_construct_destroy("Insert short range", 3, 0) && ok;
}
ok = check_construct_destroy("Insert short range", 3, 13) && ok;
{
Container c(arr10, arr10 + 10);
allocation_tracker::resetCounts();
c.insert(arr10a, arr10a+10);
ok = check_construct_destroy("Insert long range", 10, 0) && ok;
}
ok = check_construct_destroy("Insert long range", 10, 20) && ok;
return ok ? 0 : 1;
}