os/ossrv/genericopenlibs/cppstdlib/stl/test/eh/test_construct.h
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     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_