1/*********************************************************************************** 2 test_push_back.h 3 4 Interface for the test_push_back class 5 6 * Copyright (c) 1997 7 * Mark of the Unicorn, Inc. 8 * 9 * Permission to use, copy, modify, distribute and sell this software 10 * and its documentation for any purpose is hereby granted without fee, 11 * provided that the above copyright notice appear in all copies and 12 * that both that copyright notice and this permission notice appear 13 * in supporting documentation. Mark of the Unicorn makes no 14 * representations about the suitability of this software for any 15 * purpose. It is provided "as is" without express or implied warranty. 16 17***********************************************************************************/ 18#ifndef test_push_back_H_ 19#define test_push_back_H_ 20# ifdef EH_NEW_HEADERS 21# include <cassert> 22# else 23# include <assert.h> 24# endif 25 26# include "Prefix.h" 27#include "nc_alloc.h" 28 29template <class C> 30struct test_push_back 31{ 32 test_push_back( const C& orig ) : original( orig ) 33 { 34 gTestController.SetCurrentTestName("push_back() method"); 35 } 36 37 void operator()( C& c ) const 38 { 39 typedef typename C::value_type _value_type; 40 c.push_back(_value_type() ); 41 // Prevent simulated failures during verification 42 gTestController.CancelFailureCountdown(); 43 EH_ASSERT( c.size() == original.size() + 1 ); 44 EH_ASSERT( EH_STD::equal( original.begin(), original.end(), c.begin() ) ); 45 } 46private: 47 const C& original; 48}; 49 50#endif // test_push_back_H_ 51