Added support for bounded arrays in unique_ptr. Splitted test in several subtests.

This commit is contained in:
Ion Gaztañaga
2014-09-01 23:59:10 +02:00
parent 583378a946
commit 19d35253cf
23 changed files with 4091 additions and 2045 deletions
+74
View File
@@ -83,10 +83,73 @@ void test()
d1(p);
BOOST_TEST(A::count == 0);
}
//Bounded array element deleter
{
reset_counters();
bml::default_delete<A[2]> d2;
bml::default_delete<const A[2]> d1 = d2;
const A* p = new const A[2];
BOOST_TEST(A::count == 2);
d1(p);
bml::default_delete<const A[2]> d0 = d1;
d0(0);
BOOST_TEST(A::count == 0);
}
}
} //namespace unique_ptr_dltr_dflt_convert_ctor{
////////////////////////////////
// unique_ptr_dltr_dflt_convert_assign
////////////////////////////////
namespace unique_ptr_dltr_dflt_convert_assign{
void test()
{
//Single element deleter
{
reset_counters();
bml::default_delete<B> d2;
bml::default_delete<A> d1;
d1 = d2;
A* p = new B;
BOOST_TEST(A::count == 1);
BOOST_TEST(B::count == 1);
d1(p);
BOOST_TEST(A::count == 0);
BOOST_TEST(B::count == 0);
}
//Array element deleter
{
reset_counters();
bml::default_delete<A[]> d2;
bml::default_delete<const A[]> d1;
d1 = d2;
const A* p = new const A[2];
BOOST_TEST(A::count == 2);
d1(p);
BOOST_TEST(A::count == 0);
}
//Bounded array element deleter
{
reset_counters();
bml::default_delete<A[2]> d2;
bml::default_delete<const A[2]> d1;
d1 = d2;
const A* p = new const A[2];
BOOST_TEST(A::count == 2);
d1(p);
bml::default_delete<const A[]> d0;
d0 = d1;
d0(0);
BOOST_TEST(A::count == 0);
}
}
} //namespace unique_ptr_dltr_dflt_convert_assign{
////////////////////////////////
// unique_ptr_dltr_dflt_default
////////////////////////////////
@@ -113,6 +176,16 @@ void test()
d(p);
BOOST_TEST(A::count == 0);
}
{
//Bounded Array element deleter
reset_counters();
bml::default_delete<A[10]> d;
A* p = new A[10];
BOOST_TEST(A::count == 10);
d(p);
BOOST_TEST(A::count == 0);
}
}
} //namespace unique_ptr_dltr_dflt_default{
@@ -123,6 +196,7 @@ void test()
int main()
{
unique_ptr_dltr_dflt_convert_ctor::test();
unique_ptr_dltr_dflt_convert_assign::test();
unique_ptr_dltr_dflt_default::test();
//Test results