forked from boostorg/move
Added support for bounded arrays in unique_ptr. Splitted test in several subtests.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user