source: trunk/test_more/test_more.cpp @ 2354

Last change on this file since 2354 was 2341, checked in by bradbell, 8 years ago
  1. Deprecate memory_leak and replace it by thread_alloc::free_all.
  1. Move the special case of examples and tests that use example/base_alloc.hpp

to after memory check because it causes static memory to be allocated
by thread_alloc.hpp (for the value nan).

  1. Remove tracking of static memory allocation in examples

(no longer necessary).

dir_copy.sh: script that moves changes from one machine to another.

  • Property svn:keywords set to Id
File size: 7.6 KB
Line 
1/* $Id: test_more.cpp 2341 2012-04-06 18:42:00Z bradbell $ */
2/* --------------------------------------------------------------------------
3CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-12 Bradley M. Bell
4
5CppAD is distributed under multiple licenses. This distribution is under
6the terms of the
7                    Common Public License Version 1.0.
8
9A copy of this license is included in the COPYING file of this distribution.
10Please visit http://www.coin-or.org/CppAD/ for information on other licenses.
11-------------------------------------------------------------------------- */
12
13// system include files used for I/O
14# include <iostream>
15
16// memory leak checker
17# include <cppad/thread_alloc.hpp>
18
19// various examples / tests
20extern bool abs(void);
21extern bool Acos(void);
22extern bool Add(void);
23extern bool AddEq(void);
24extern bool AddZero(void);
25extern bool alloc_openmp(void);
26extern bool Asin(void);
27extern bool assign(void);
28extern bool Atan(void);
29extern bool Atan2(void);
30extern bool base_adolc(void);
31extern bool base_alloc_test(void);
32extern bool check_simple_vector(void);
33extern bool Compare(void);
34extern bool CompareChange(void);
35extern bool CondExp(void);
36extern bool CondExpAD(void);
37extern bool copy(void);
38extern bool Cos(void);
39extern bool Cosh(void);
40extern bool dbl_epsilon(void);
41extern bool Div(void);
42extern bool DivEq(void);
43extern bool DivZeroOne(void);
44extern bool Erf(void);
45extern bool Exp(void);
46extern bool ForHess(void);
47extern bool for_sparse_jac(void);
48extern bool Forward(void);
49extern bool FromBase(void);
50extern bool FunCheck(void);
51extern bool jacobian(void);
52extern bool Log(void);
53extern bool Log10(void);
54extern bool Mul(void);
55extern bool mul_level(void);
56extern bool MulEq(void);
57extern bool MulZeroOne(void);
58extern bool ndebug(void);
59extern bool NearEqualExt(void);
60extern bool Neg(void);
61extern bool ode_err_control(void);
62extern bool optimize(void);
63extern bool parameter(void);
64extern bool Poly(void);
65extern bool Pow(void);
66extern bool PowInt(void);
67extern bool print_for(void);
68extern bool reverse(void);
69extern bool rev_sparse_hes(void);
70extern bool rev_sparse_jac(void);
71extern bool RevTwo(void);
72extern bool RombergOne(void);
73extern bool Rosen34(void);
74extern bool Runge45(void);
75extern bool SimpleVector(void);
76extern bool Sin(void);
77extern bool SinCos(void);
78extern bool Sinh(void);
79extern bool sparse_hessian(void);
80extern bool sparse_jacobian(void);
81extern bool sparse_vec_ad(void);
82extern bool Sqrt(void);
83extern bool std_math(void);
84extern bool Sub(void);
85extern bool SubEq(void);
86extern bool SubZero(void);
87extern bool tan(void);
88extern bool track_new_del(void);
89extern bool Value(void);
90extern bool VecAD(void);
91extern bool VecADPar(void);
92extern bool VecUnary(void);
93
94namespace {
95        // function that runs one test
96        static size_t Run_ok_count    = 0;
97        static size_t Run_error_count = 0;
98        bool Run(bool TestOk(void), std::string name)
99        {       bool ok               = true;
100                std::streamsize width =  20;         
101                std::cout.width( width );
102                std::cout.setf( std::ios_base::left );
103                std::cout << name;
104                //
105                ok &= name.size() < size_t(width);
106                ok &= TestOk();
107                if( ok )
108                {       std::cout << "OK" << std::endl;
109                        Run_ok_count++;
110                }
111                else
112                {       std::cout << "Error" << std::endl;
113                        Run_error_count++;
114                }
115                return ok;
116        }
117}
118
119// main program that runs all the tests
120int main(void)
121{       bool ok = true;
122        using namespace std;
123
124        // This line is used by test_one.sh
125
126        ok &= Run( abs,             "abs"            );
127        ok &= Run( Acos,            "Acos"           );
128        ok &= Run( Add,             "Add"            );
129        ok &= Run( AddEq,           "AddEq"          );
130        ok &= Run( AddZero,         "AddZero"        );
131        ok &= Run( Asin,            "Asin"           );
132        ok &= Run( assign,          "assign"         );
133        ok &= Run( Atan,            "Atan"           );
134        ok &= Run( Atan2,           "Atan2"          );
135        ok &= Run( check_simple_vector, "check_simple_vector" );
136        ok &= Run( Compare,         "Compare"        );
137        ok &= Run( CompareChange,   "CompareChange"  );
138        ok &= Run( CondExp,         "CondExp"        );
139        ok &= Run( CondExpAD,       "CondExpAD"      );
140        ok &= Run( copy,            "copy"           );
141        ok &= Run( Cos,             "Cos"            );
142        ok &= Run( Cosh,            "Cosh"           );
143        ok &= Run( dbl_epsilon,     "dbl_epsilon"    );
144        ok &= Run( Div,             "Div"            );
145        ok &= Run( DivEq,           "DivEq"          );
146        ok &= Run( DivZeroOne,      "DivZeroOne"     );
147        ok &= Run( Erf,             "Erf"            );
148        ok &= Run( Exp,             "Exp"            );
149        ok &= Run( ForHess,         "ForHess"        );
150        ok &= Run( for_sparse_jac,  "for_sparse_jac" );
151        ok &= Run( Forward,         "Forward"        );
152        ok &= Run( FromBase,        "FromBase"       );
153        ok &= Run( FunCheck,        "FunCheck"       );
154        ok &= Run( jacobian,        "jacobian"       );
155        ok &= Run( Log,             "Log"            );
156        ok &= Run( Log10,           "Log10"          );
157        ok &= Run( Mul,             "Mul"            );
158        ok &= Run( mul_level,       "mul_level"      );
159        ok &= Run( MulEq,           "MulEq"          );
160        ok &= Run( MulZeroOne,      "MulZeroOne"     );
161        ok &= Run( ndebug,          "ndebug"         );
162        ok &= Run( NearEqualExt,    "NearEqualExt"   );
163        ok &= Run( Neg,             "Neg"            );
164        ok &= Run( ode_err_control, "ode_err_control");
165        ok &= Run( optimize,        "optimize"       );
166        ok &= Run( parameter,       "parameter"      );
167        ok &= Run( Poly,            "Poly"           );
168        ok &= Run( Pow,             "Pow"            );
169        ok &= Run( PowInt,          "PowInt"         );
170        ok &= Run( print_for,       "print_for"      );
171        ok &= Run( reverse,         "reverse"        );
172        ok &= Run( rev_sparse_hes,  "rev_sparse_hes" );
173        ok &= Run( rev_sparse_jac,  "rev_sparse_jac" );
174        ok &= Run( RevTwo,          "RevTwo"         );
175        ok &= Run( RombergOne,      "RombergOne"     );
176        ok &= Run( Rosen34,         "Rosen34"        );
177        ok &= Run( Runge45,         "Runge45"        );
178        ok &= Run( SimpleVector,    "SimpleVector"   );
179        ok &= Run( Sin,             "Sin"            );
180        ok &= Run( SinCos,          "SinCos"         );
181        ok &= Run( Sinh,            "Sinh"           );
182        ok &= Run( sparse_hessian,  "sparse_hessian" );
183        ok &= Run( sparse_jacobian, "sparse_jacobian");
184        ok &= Run( sparse_vec_ad,   "sparse_vec_ad"  );
185        ok &= Run( Sqrt,            "Sqrt"           );
186        ok &= Run( std_math,        "std_math"       );
187        ok &= Run( Sub,             "Sub"            );
188        ok &= Run( SubEq,           "SubEq"          );
189        ok &= Run( SubZero,         "SubZero"        );
190        ok &= Run( tan,             "tan"            );
191        ok &= Run( track_new_del,   "track_new_del"  );
192        ok &= Run( Value,           "Value"          );
193        ok &= Run( VecAD,           "VecAD"          );
194        ok &= Run( VecADPar,        "VecADPar"       );
195        ok &= Run( VecUnary,        "VecUnary"       );
196
197# ifdef CPPAD_ADOLC_TEST
198        ok &= Run( base_adolc,      "base_adolc"     );
199# endif
200# ifdef CPPAD_OPENMP_TEST
201        ok &= Run( alloc_openmp,    "alloc_openmp"   );
202# endif
203
204        // check for errors
205        using std::cout;
206        using std::endl;
207        assert( ok || (Run_error_count > 0) );
208        if( CppAD::thread_alloc::free_all() )
209        {       Run_ok_count++;
210                cout << "OK:    " << "No memory leak detected" << endl;
211        }
212        else
213        {       ok = false;
214                Run_error_count++;
215                cout << "Error: " << "memory leak detected" << endl;
216        }
217        // Run base_require after memory leak check because base_alloc.hpp uses
218        // thread_alloc to allocate memory for static copies of nan.
219        ok &= Run( base_alloc_test, "base_alloc"     );
220        // convert int(size_t) to avoid warning on _MSC_VER systems
221        if( ok )
222                cout << "All " << int(Run_ok_count) << " tests passed." << endl;
223        else    cout << int(Run_error_count) << " tests failed." << endl;
224
225        return static_cast<int>( ! ok );
226
227}
228// END PROGRAM
Note: See TracBrowser for help on using the repository browser.