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