genericopenlibs/cppstdlib/stl/test/eh/test_construct.h
changeset 31 ce057bb09d0b
parent 0 e4d67989cc36
equal deleted inserted replaced
30:e20de85af2ee 31:ce057bb09d0b
       
     1 /***********************************************************************************
       
     2   test_construct.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_construct_H_
       
    17 #define test_construct_H_
       
    18 
       
    19 #include "Prefix.h"
       
    20 #if defined (EH_NEW_HEADERS)
       
    21 #  include <algorithm>
       
    22 #  include <cassert>
       
    23 #  include <cstdlib>
       
    24 #else
       
    25 #  include <algo.h>
       
    26 #  include <assert.h>
       
    27 #  include <stdlib.h>
       
    28 #endif
       
    29 
       
    30 USING_CSTD_NAME(size_t)
       
    31 
       
    32 template <class T>
       
    33 struct test_copy_construct {
       
    34   test_copy_construct() {
       
    35     gTestController.SetCurrentTestName("copy constructor");
       
    36   }
       
    37 
       
    38   void operator()( const T& t ) const {
       
    39     T aCopy( t );
       
    40     // Prevent simulated failures during verification
       
    41     gTestController.CancelFailureCountdown();
       
    42     //EH_ASSERT( aCopy == t );
       
    43     CheckInvariant(t);
       
    44   }
       
    45 };
       
    46 
       
    47 template <class T>
       
    48 struct test_default_construct {
       
    49   test_default_construct() {
       
    50     gTestController.SetCurrentTestName("default constructor");
       
    51   }
       
    52 
       
    53   void operator()( int ) const {
       
    54     T t;
       
    55     CheckInvariant(t);
       
    56   }
       
    57 };
       
    58 
       
    59 template <class T>
       
    60 struct test_construct_n {
       
    61   test_construct_n( size_t _n ) : n(_n+1) {
       
    62     gTestController.SetCurrentTestName("n-size constructor");
       
    63   }
       
    64 
       
    65   void operator()( int ) const {
       
    66     T t(n);
       
    67     CheckInvariant(t);
       
    68   }
       
    69 
       
    70   size_t n;
       
    71 };
       
    72 
       
    73 template <class T>
       
    74 struct test_construct_n_instance {
       
    75   test_construct_n_instance( size_t _n ) : n(_n+1) {
       
    76     gTestController.SetCurrentTestName("n-size with instance constructor");
       
    77   }
       
    78 
       
    79   void operator()( int ) const {
       
    80     typedef typename T::value_type Value_type;
       
    81     Value_type Val = 0;
       
    82     T t( n, Val );
       
    83     CheckInvariant(t);
       
    84   }
       
    85 
       
    86   size_t n;
       
    87 };
       
    88 
       
    89 template <class T>
       
    90 struct test_construct_pointer_range {
       
    91   test_construct_pointer_range( const typename T::value_type *first,
       
    92                                 const typename T::value_type* last )
       
    93     : fItems( first ), fEnd( last ) {
       
    94     gTestController.SetCurrentTestName("pointer range constructor");
       
    95   }
       
    96 
       
    97   void operator()( int ) const {
       
    98     T t( fItems, fEnd );
       
    99     // Prevent simulated failures during verification
       
   100     gTestController.CancelFailureCountdown();
       
   101     CheckInvariant(t);
       
   102   }
       
   103 
       
   104   const typename T::value_type* fItems, *fEnd;
       
   105 };
       
   106 
       
   107 template <class T>
       
   108 struct test_construct_iter_range {
       
   109 
       
   110   test_construct_iter_range( const T& src ) : fItems( src ) {
       
   111     gTestController.SetCurrentTestName("iterator range constructor");
       
   112   }
       
   113 
       
   114   void operator()( int ) const {
       
   115     T t( fItems.begin(), fItems.end() );
       
   116     // Prevent simulated failures during verification
       
   117     gTestController.CancelFailureCountdown();
       
   118     EH_ASSERT( t == fItems );
       
   119     CheckInvariant(t);
       
   120   }
       
   121 
       
   122   const T& fItems;
       
   123 };
       
   124 
       
   125 #endif // test_construct_H_