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