/[escript]/trunk/esysUtils/test/EsysExceptionTestCase.cpp
ViewVC logotype

Annotation of /trunk/esysUtils/test/EsysExceptionTestCase.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 682 - (hide annotations)
Mon Mar 27 02:43:09 2006 UTC (17 years ago) by robwdcock
Original Path: trunk/esysUtils/test/EsysException/EsysExceptionTestCase.cpp
File size: 6075 byte(s)
+ NEW BUILD SYSTEM

This commit contains the new build system with cross-platform support.
Most things work are before though you can have more control.

ENVIRONMENT settings have changed:
+ You no longer require LD_LIBRARY_PATH or PYTHONPATH to point to the
esysroot for building and testing performed via scons
+ ACcESS altix users: It is recommended you change your modules to load
the latest intel compiler and other libraries required by boost to match
the setup in svn (you can override). The correct modules are as follows

module load intel_cc.9.0.026
export
MODULEPATH=${MODULEPATH}:/data/raid2/toolspp4/modulefiles/gcc-3.3.6
module load boost/1.33.0/python-2.4.1
module load python/2.4.1
module load numarray/1.3.3


1 jgs 82 #include <iostream>
2    
3     #include "EsysExceptionTestCase.h"
4 robwdcock 682 #include "esysUtils/EsysException.h"
5 jgs 82
6     using namespace std;
7     using namespace CppUnitTest;
8     using namespace esysUtils;
9    
10     class DerivedEx : public EsysException {
11     public:
12    
13     /// Default Constructor for Exception
14     DerivedEx() : EsysException() {}
15    
16     /// Constructor for Exception
17     DerivedEx(const char *cstr) : EsysException(cstr) {}
18    
19     /// Constructor for Exception
20     DerivedEx(const string &str) : EsysException(str) {}
21    
22     /// Return the exception name
23     virtual string exceptionName() const {
24     return "DerivedException";
25     }
26     };
27    
28     void EsysExceptionTestCase::testCase0() {
29    
30     //
31     // dummy test case
32     //
33     // just test the UnitTesting framework is OK
34     //
35    
36     assert(true);
37    
38     }
39    
40     void EsysExceptionTestCase::testCase1() {
41    
42     EsysException defEx;
43    
44     //
45     // default exception text should have contents of exceptionName near start
46     //
47     string defString = defEx.toString();
48     assert(defString.find(defEx.exceptionName()) != string::npos);
49     assert(defString.find(defEx.exceptionName()) < 4);
50    
51     //
52     // default exception text shouldn't be much longer than contents of exception name
53     //
54     assert(defString.size() > defEx.exceptionName().size());
55     assert((defString.size() - defEx.exceptionName().size()) < 10);
56    
57     string ex1Text("My first funny exception message.");
58     EsysException ex1(ex1Text);
59    
60     //
61     // exception text should have contents of exceptionName near start
62     //
63     string ex1String = ex1.toString();
64     assert(ex1String.find(ex1.exceptionName()) != string::npos);
65     assert(defString.find(ex1.exceptionName()) < 4);
66    
67     //
68     // exception text should contain entered exception message
69     //
70     assert(ex1String.find(ex1Text) != string::npos);
71    
72     //
73     // copy constructed exception should match original
74     //
75     EsysException copyEx(ex1);
76     string copyString = copyEx.toString();
77     assert(ex1String == copyString);
78    
79     //
80     // copy assigned exception should match original
81     //
82     EsysException assEx;
83     assEx = ex1;
84     string assString = assEx.toString();
85     assert(ex1String == assString);
86    
87     //
88     // check throw/catch mechanism
89     //
90     string ex2Text("My second funny exception message.");
91     try {
92    
93     EsysException ex2(ex2Text);
94     throw(ex2);
95    
96     }
97    
98     catch(EsysException& e) {
99    
100     //
101     // exception text should have contents of exceptionName near start
102     //
103     string eString = e.toString();
104     assert(eString.find(e.exceptionName()) != string::npos);
105     assert(defString.find(e.exceptionName()) < 4);
106    
107     //
108     // exception text should contain entered exception message
109     //
110     assert(eString.find(ex2Text) != string::npos);
111    
112     }
113    
114     }
115    
116     //
117     // test derived EsysException
118     //
119     void EsysExceptionTestCase::testCase2() {
120    
121     DerivedEx defEx;
122     //
123     // default exception text should have contents of exceptionName near start
124     //
125     string defString = defEx.toString();
126     assert(defString.find(defEx.exceptionName()) != string::npos);
127     assert(defString.find(defEx.exceptionName()) < 4);
128    
129     //
130     // default exception text shouldn't be much longer than contents of exception name
131     //
132     assert(defString.size() > defEx.exceptionName().size());
133     assert((defString.size() - defEx.exceptionName().size()) < 10);
134    
135     string ex1Text("asdjhieurncidhfjsnfkjefkjndfjkhsdrdfjksdhfweh");
136     DerivedEx ex1(ex1Text);
137     //
138     // exception text should have contents of exceptionName near start
139     //
140     string ex1String = ex1.toString();
141     assert(ex1String.find(ex1.exceptionName()) != string::npos);
142     assert(defString.find(ex1.exceptionName()) < 4);
143    
144     //
145     // exception text should contain entered exception message
146     //
147     assert(ex1String.find(ex1Text) != string::npos);
148    
149     //
150     // copy constructed exception should match original
151     //
152     DerivedEx copyEx(ex1);
153     string copyString = copyEx.toString();
154     assert(ex1String == copyString);
155    
156     //
157     // copy assigned exception should match original
158     //
159     DerivedEx assEx;
160     assEx = ex1;
161     string assString = assEx.toString();
162     assert(ex1String == assString);
163    
164     //
165     // check throw/catch mechanism
166     //
167     string ex2Text("pjkkjhdfbnkjerbkjsduflfkjahalkgjlklhjhj");
168     try {
169    
170     DerivedEx ex2(ex2Text);
171     throw(ex2);
172    
173     }
174    
175     catch(DerivedEx& e) {
176    
177     //
178     // exception text should have contents of exceptionName near start
179     //
180     string eString = e.toString();
181     assert(eString.find(e.exceptionName()) != string::npos);
182     assert(defString.find(e.exceptionName()) < 4);
183    
184     //
185     // exception text should contain entered exception message
186     //
187     assert(eString.find(ex2Text) != string::npos);
188     }
189    
190     //
191     // check throw/catch mechanism
192     //
193     string ex3Text("irfjvniouf;iarhglAKSDIghlAKSDghladg");
194     try {
195    
196     DerivedEx ex3(ex3Text);
197     throw(ex3);
198    
199     }
200     catch(EsysException& e) {
201    
202     //
203     // exception text should have contents of exceptionName near start
204     //
205     DerivedEx ex4;
206     std::string eString = e.toString();
207     assert(eString.find(ex4.exceptionName()) != string::npos);
208     assert(defString.find(ex4.exceptionName()) < 4);
209    
210     //
211     // exception text should contain entered exception message
212     //
213     assert(eString.find(ex3Text) != string::npos);
214    
215     }
216    
217     //
218     // test to see if exception name gets lost on rethrow
219     //
220     try {
221     try {
222     DerivedEx ex4("D ex4 text.");
223     throw ex4;
224     }
225     catch (EsysException& e) {
226     cout << endl << e.toString() << endl;
227     throw;
228     }
229     }
230     catch (EsysException& e) {
231     cout << e.toString() << endl;
232     }
233    
234     cout << "Test EsysException may be caught as a std::exception" << endl;
235     try {
236     DerivedEx ex4("Exception caught as std::exception");
237     throw ex4;
238     }
239     catch (exception& e) {
240     cout << e.what() << endl;
241     }
242     catch (...) {
243     //
244     // if the exception is caught here there is a problem
245     assert(false);
246     }
247     }
248    
249     TestSuite* EsysExceptionTestCase::suite ()
250     {
251     //
252     // create the suite of tests to perform.
253     TestSuite *testSuite = new TestSuite ("EsysExceptionTestCase");
254    
255     testSuite->addTest (new TestCaller<EsysExceptionTestCase>("testCase0",&EsysExceptionTestCase::testCase0));
256     testSuite->addTest (new TestCaller<EsysExceptionTestCase>("testCase1",&EsysExceptionTestCase::testCase1));
257     testSuite->addTest (new TestCaller<EsysExceptionTestCase>("testCase2",&EsysExceptionTestCase::testCase2));
258     return testSuite;
259     }

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.26