Home | Info | Community | Development | myReactOS | Contact Us
[private]
Definition at line 185 of file mvctor_traits_test.cpp.
{ { { vector<CompleteMovableStruct> vect; vect.push_back(CompleteMovableStruct()); vect.push_back(CompleteMovableStruct()); vect.push_back(CompleteMovableStruct()); vect.push_back(CompleteMovableStruct()); // vect contains 4 elements CPPUNIT_ASSERT( CompleteMovableStruct::nb_dft_construct_call == 4 ); #if defined (STLPORT) # if !defined (_STLP_NO_MOVE_SEMANTIC) CPPUNIT_ASSERT( CompleteMovableStruct::nb_cpy_construct_call == 4 ); CPPUNIT_ASSERT( CompleteMovableStruct::nb_mv_construct_call == 3 ); CPPUNIT_ASSERT( CompleteMovableStruct::nb_destruct_call == 4 ); # else CPPUNIT_ASSERT( CompleteMovableStruct::nb_cpy_construct_call == 7 ); CPPUNIT_ASSERT( CompleteMovableStruct::nb_destruct_call == 7 ); # endif #elif !defined (_MSC_VER) CPPUNIT_ASSERT( CompleteMovableStruct::nb_cpy_construct_call == 7 ); CPPUNIT_ASSERT( CompleteMovableStruct::nb_destruct_call == 7 ); #else CPPUNIT_ASSERT( CompleteMovableStruct::nb_cpy_construct_call == 14 ); CPPUNIT_ASSERT( CompleteMovableStruct::nb_destruct_call == 14 ); #endif // Following test violate requirements to sequiences (23.1.1 Table 67) /* vect.insert(vect.begin() + 2, vect.begin(), vect.end()); // vect contains 8 elements CPPUNIT_ASSERT( CompleteMovableStruct::nb_dft_construct_call == 4 ); CPPUNIT_ASSERT( CompleteMovableStruct::nb_cpy_construct_call == 8 ); CPPUNIT_ASSERT( CompleteMovableStruct::nb_mv_construct_call == 7 ); CPPUNIT_ASSERT( CompleteMovableStruct::nb_destruct_call == 4 ); */ CompleteMovableStruct::reset(); vector<CompleteMovableStruct> v2 = vect; CPPUNIT_ASSERT( CompleteMovableStruct::nb_dft_construct_call == 0 ); CPPUNIT_ASSERT( CompleteMovableStruct::nb_cpy_construct_call == 4 ); CPPUNIT_ASSERT( CompleteMovableStruct::nb_mv_construct_call == 0 ); CPPUNIT_ASSERT( CompleteMovableStruct::nb_destruct_call == 0 ); CompleteMovableStruct::reset(); vect.insert(vect.begin() + 2, v2.begin(), v2.end()); // vect contains 8 elements CPPUNIT_ASSERT( CompleteMovableStruct::nb_dft_construct_call == 0 ); #if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) CPPUNIT_ASSERT( CompleteMovableStruct::nb_cpy_construct_call == 4 ); CPPUNIT_ASSERT( CompleteMovableStruct::nb_mv_construct_call == 4 ); CPPUNIT_ASSERT( CompleteMovableStruct::nb_destruct_call == 0 ); #else CPPUNIT_ASSERT( CompleteMovableStruct::nb_cpy_construct_call == 8 ); CPPUNIT_ASSERT( CompleteMovableStruct::nb_destruct_call == 4 ); #endif CompleteMovableStruct::reset(); vect.erase(vect.begin(), vect.begin() + 2); // vect contains 6 elements #if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) CPPUNIT_ASSERT( CompleteMovableStruct::nb_mv_construct_call == 6 ); #else CPPUNIT_ASSERT( CompleteMovableStruct::nb_assignment_call == 6 ); #endif CPPUNIT_ASSERT( CompleteMovableStruct::nb_destruct_call == 2 ); CompleteMovableStruct::reset(); vect.erase(vect.end() - 2, vect.end()); // vect contains 4 elements CPPUNIT_ASSERT( CompleteMovableStruct::nb_mv_construct_call == 0 ); CPPUNIT_ASSERT( CompleteMovableStruct::nb_destruct_call == 2 ); CompleteMovableStruct::reset(); vect.erase(vect.begin()); // vect contains 3 elements #if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) CPPUNIT_ASSERT( CompleteMovableStruct::nb_mv_construct_call == 3 ); #else CPPUNIT_ASSERT( CompleteMovableStruct::nb_assignment_call == 3 ); #endif CPPUNIT_ASSERT( CompleteMovableStruct::nb_destruct_call == 1 ); CompleteMovableStruct::reset(); } //vect with 3 elements and v2 with 4 elements are now out of scope CPPUNIT_ASSERT( CompleteMovableStruct::nb_destruct_call == 3 + 4 ); } }