Home | History | Annotate | Download | only in eh
      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 
     29 template <class C>
     30 struct 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   }
     46 private:
     47   const C& original;
     48 };
     49 
     50 #endif // test_push_back_H_
     51