--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/genericopenlibs/cppstdlib/stl/test/eh/test_construct.h Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,125 @@
+/***********************************************************************************
+ test_construct.h
+
+ * Copyright (c) 1997
+ * Mark of the Unicorn, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation. Mark of the Unicorn makes no
+ * representations about the suitability of this software for any
+ * purpose. It is provided "as is" without express or implied warranty.
+
+***********************************************************************************/
+#ifndef test_construct_H_
+#define test_construct_H_
+
+#include "Prefix.h"
+#if defined (EH_NEW_HEADERS)
+# include <algorithm>
+# include <cassert>
+# include <cstdlib>
+#else
+# include <algo.h>
+# include <assert.h>
+# include <stdlib.h>
+#endif
+
+USING_CSTD_NAME(size_t)
+
+template <class T>
+struct test_copy_construct {
+ test_copy_construct() {
+ gTestController.SetCurrentTestName("copy constructor");
+ }
+
+ void operator()( const T& t ) const {
+ T aCopy( t );
+ // Prevent simulated failures during verification
+ gTestController.CancelFailureCountdown();
+ //EH_ASSERT( aCopy == t );
+ CheckInvariant(t);
+ }
+};
+
+template <class T>
+struct test_default_construct {
+ test_default_construct() {
+ gTestController.SetCurrentTestName("default constructor");
+ }
+
+ void operator()( int ) const {
+ T t;
+ CheckInvariant(t);
+ }
+};
+
+template <class T>
+struct test_construct_n {
+ test_construct_n( size_t _n ) : n(_n+1) {
+ gTestController.SetCurrentTestName("n-size constructor");
+ }
+
+ void operator()( int ) const {
+ T t(n);
+ CheckInvariant(t);
+ }
+
+ size_t n;
+};
+
+template <class T>
+struct test_construct_n_instance {
+ test_construct_n_instance( size_t _n ) : n(_n+1) {
+ gTestController.SetCurrentTestName("n-size with instance constructor");
+ }
+
+ void operator()( int ) const {
+ typedef typename T::value_type Value_type;
+ Value_type Val = 0;
+ T t( n, Val );
+ CheckInvariant(t);
+ }
+
+ size_t n;
+};
+
+template <class T>
+struct test_construct_pointer_range {
+ test_construct_pointer_range( const typename T::value_type *first,
+ const typename T::value_type* last )
+ : fItems( first ), fEnd( last ) {
+ gTestController.SetCurrentTestName("pointer range constructor");
+ }
+
+ void operator()( int ) const {
+ T t( fItems, fEnd );
+ // Prevent simulated failures during verification
+ gTestController.CancelFailureCountdown();
+ CheckInvariant(t);
+ }
+
+ const typename T::value_type* fItems, *fEnd;
+};
+
+template <class T>
+struct test_construct_iter_range {
+
+ test_construct_iter_range( const T& src ) : fItems( src ) {
+ gTestController.SetCurrentTestName("iterator range constructor");
+ }
+
+ void operator()( int ) const {
+ T t( fItems.begin(), fItems.end() );
+ // Prevent simulated failures during verification
+ gTestController.CancelFailureCountdown();
+ EH_ASSERT( t == fItems );
+ CheckInvariant(t);
+ }
+
+ const T& fItems;
+};
+
+#endif // test_construct_H_