/[escript]/trunk/escript/test/DataAlgorithmAdapterTestCase.cpp
ViewVC logotype

Diff of /trunk/escript/test/DataAlgorithmAdapterTestCase.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/esys2/escript/test/DataAlgorithmAdapter/DataAlgorithmAdapterTestCase.cpp revision 100 by jgs, Wed Dec 15 03:48:48 2004 UTC trunk/escript/test/DataAlgorithmAdapter/DataAlgorithmAdapterTestCase.cpp revision 155 by jgs, Wed Nov 9 02:02:19 2005 UTC
# Line 1  Line 1 
1    // $Id$
2  /*  /*
3   *****************************************************************************   *****************************************************************************
4   *                                                                           *   *                                                                           *
# Line 11  Line 12 
12   *                                                                           *   *                                                                           *
13   *****************************************************************************   *****************************************************************************
14  */  */
15    
16    #include "escript/Data/DataExpanded.h"
17    #include "escript/Data/DataArrayView.h"
18  #include "escript/Data/DataAlgorithm.h"  #include "escript/Data/DataAlgorithm.h"
19  #include "DataAlgorithmAdapterTestCase.h"  #include "DataAlgorithmAdapterTestCase.h"
20    
# Line 36  void DataAlgorithmAdapterTestCase::tearD Line 40  void DataAlgorithmAdapterTestCase::tearD
40  }  }
41    
42  void DataAlgorithmAdapterTestCase::testAll() {  void DataAlgorithmAdapterTestCase::testAll() {
43    
44    cout << endl;    cout << endl;
45    DataAlgorithmAdapter<FMax> myMax(numeric_limits<double>::min());  
46    myMax(1);    cout << "\tTesting FMax." << endl;
47    myMax(2);  
48    myMax(3);    FMax fmax;
49    assert(myMax.getResult()==3);    assert(fmax(5,6)==6);
50    DataAlgorithmAdapter<AbsMax> Lsup(numeric_limits<double>::min());    assert(fmax(5,-6)==5);
51      assert(fmax(0,0)==0);
52      assert(fmax(15,-96)==15);
53    
54      DataAlgorithmAdapter<FMax> sup(numeric_limits<double>::max()*-1);
55      sup.resetResult();
56      sup(-1);
57      sup(-2);
58      sup(-14);
59      sup(3);
60      assert(sup.getResult()==3);
61    
62      cout << "\tTesting AbsMax." << endl;
63    
64      AbsMax absmax;
65      assert(absmax(5,6)==6);
66      assert(absmax(5,-6)==6);
67      assert(absmax(0,0)==0);
68      assert(absmax(15,-96)==96);
69    
70      DataAlgorithmAdapter<AbsMax> Lsup(0);
71      Lsup.resetResult();
72    Lsup(-2);    Lsup(-2);
73    Lsup(2);    Lsup(2);
74    Lsup(5);    Lsup(5);
75    Lsup(-1000);    Lsup(-10);
76    assert(Lsup.getResult()==1000);    assert(Lsup.getResult()==10);
77    
78      cout << "\tTesting FMin." << endl;
79    
80      FMin fmin;
81      assert(fmin(5,6)==5);
82      assert(fmin(5,-6)==-6);
83      assert(fmin(0,0)==0);
84      assert(fmin(15,-96)==-96);
85    
86    DataAlgorithmAdapter<FMin> inf(numeric_limits<double>::max());    DataAlgorithmAdapter<FMin> inf(numeric_limits<double>::max());
87      inf.resetResult();
88    inf(1);    inf(1);
89      inf(12);
90    inf(2);    inf(2);
91    assert(inf.getResult() == 1);    inf(99);
92    cout << "Size: " << sizeof(DataAlgorithmAdapter<FMin>) << endl;    assert(inf.getResult()==1);
93    
94      cout << "\tTesting Length." << endl;
95    
96      Length lngth;
97      assert(lngth(5,6)==std::sqrt(61.0));
98      assert(lngth(5,-6)==std::sqrt(61.0));
99      assert(lngth(0,0)==std::sqrt(0.0));
100      assert(lngth(15,-96)==std::sqrt(9441.0));
101    
102      DataAlgorithmAdapter<Length> length(0);
103      length.resetResult();
104      length(2);
105      length(4);
106      length(6);
107      length(8);
108      assert(length.getResult()==std::sqrt(120.0));
109      length.resetResult();
110      length(1.5);
111      length(2.5);
112      length(3.5);
113      length(4.5);
114      assert(length.getResult()==std::sqrt(41.0));
115    
116      cout << "\tTesting Trace." << endl;
117    
118      Trace trce;
119      assert(trce(5,6)==11);
120      assert(trce(5,-6)==-1);
121      assert(trce(0,0)==0);
122      assert(trce(15,-96)==-81);
123    
124      DataAlgorithmAdapter<Trace> trace(0);
125      trace.resetResult();
126      trace(1);
127      trace(2);
128      trace(3);
129      trace(4);
130      trace(5);
131      assert(trace.getResult()==15);
132      trace.resetResult();
133      trace(1.5);
134      trace(2.5);
135      trace(3.5);
136      trace(4.5);
137      trace(5.5);
138      assert(trace.getResult()==17.5);
139    
140    }
141    
142    void DataAlgorithmAdapterTestCase::testAlgorithm() {
143    
144      {
145        cout << endl;
146        cout << "\tTest algorithm on Data objects with a single data-point.";
147    
148        // define the shape for the DataArrayView
149        DataArrayView::ShapeType shape;
150        shape.push_back(2);
151        shape.push_back(3);
152    
153        // allocate the data for the DataArrayView
154        DataArrayView::ValueType dataArray(DataArrayView::noValues(shape),0);
155    
156        // construct DataArrayView
157        DataArrayView dataView(dataArray,shape);
158    
159        // assign values to the data point
160        for (int i=0;i<shape[0];i++) {
161          for (int j=0;j<shape[1];j++) {
162            dataView(i,j)=dataView.index(i,j);
163          }
164        }
165    
166        // create a few Data objects from the created DataArrayView
167        DataExpanded dataExp(dataView,FunctionSpace());
168        DataConstant dataCon(dataView,FunctionSpace());
169        DataTagged   dataTag(dataCon);
170    
171        // test algorithm on DataExpanded
172        FMin fmin_func;
173        assert(escript::algorithm(dataExp,fmin_func,numeric_limits<double>::max())==0);
174        FMax fmax_func;
175        assert(escript::algorithm(dataExp,fmax_func,numeric_limits<double>::max()*-1)==5);
176    
177        // test algorithm on DataTagged
178        assert(escript::algorithm(dataTag,fmin_func,numeric_limits<double>::max())==0);
179        assert(escript::algorithm(dataTag,fmax_func,numeric_limits<double>::max()*-1)==5);
180    
181        // test algorithm on DataConstant
182        assert(escript::algorithm(dataCon,fmin_func,numeric_limits<double>::max())==0);
183        assert(escript::algorithm(dataCon,fmax_func,numeric_limits<double>::max()*-1)==5);
184    
185      }
186    
187      cout << endl;
188    
189    }
190    
191    void DataAlgorithmAdapterTestCase::testDpAlgorithm() {
192    
193      {
194        cout << endl;
195        cout << "\tTest dp_algorithm on Data objects with a single data-point.";
196    
197        // define the shapes for the DataArrayViews
198        DataArrayView::ShapeType shape;
199        shape.push_back(2);
200        shape.push_back(3);
201        DataArrayView::ShapeType shape2;
202    
203        // allocate the data for the DataArrayViews
204        DataArrayView::ValueType dataArray(DataArrayView::noValues(shape),0);
205        DataArrayView::ValueType dataArray2(DataArrayView::noValues(shape2),0);
206    
207        // construct DataArrayViews
208        DataArrayView dataView(dataArray,shape);
209        DataArrayView dataView2(dataArray2,shape2);
210    
211        // assign values to the data point
212        for (int i=0;i<shape[0];i++) {
213          for (int j=0;j<shape[1];j++) {
214            dataView(i,j)=dataView.index(i,j);
215          }
216        }
217    
218        // create a few Data objects from the created DataArrayViews
219        DataExpanded dataExp(dataView,FunctionSpace());
220        DataConstant dataCon(dataView,FunctionSpace());
221        DataTagged   dataTag(dataCon);
222    
223        // and create Data objects to receive the results of the dp_algorithm calls
224        DataExpanded dataExp2(dataView2,FunctionSpace());
225        DataConstant dataCon2(dataView2,FunctionSpace());
226        DataTagged   dataTag2(dataCon2);
227    
228        // test dp_algorithm on DataExpanded
229        FMin fmin_func;
230        escript::dp_algorithm(dataExp,dataExp2,fmin_func,numeric_limits<double>::max());
231        assert(dataExp2.getDataPoint(0,0)()==0);
232        FMax fmax_func;
233        escript::dp_algorithm(dataExp,dataExp2,fmax_func,numeric_limits<double>::max()*-1);
234        assert(dataExp2.getDataPoint(0,0)()==5);
235    
236        // test dp_algorithm on DataTagged
237        escript::dp_algorithm(dataTag,dataTag2,fmin_func,numeric_limits<double>::max());
238        assert(dataTag2.getDataPoint(0,0)()==0);
239        escript::dp_algorithm(dataTag,dataTag2,fmax_func,numeric_limits<double>::max()*-1);
240        assert(dataTag2.getDataPoint(0,0)()==5);
241    
242        // test dp_algorithm on DataConstant
243        escript::dp_algorithm(dataCon,dataCon2,fmin_func,numeric_limits<double>::max());
244        assert(dataCon2.getDataPoint(0,0)()==0);
245        escript::dp_algorithm(dataCon,dataCon2,fmax_func,numeric_limits<double>::max()*-1);
246        assert(dataCon2.getDataPoint(0,0)()==5);
247    
248      }
249    
250      cout << endl;
251    
252  }  }
253    
254  TestSuite* DataAlgorithmAdapterTestCase::suite ()  TestSuite* DataAlgorithmAdapterTestCase::suite ()
# Line 62  TestSuite* DataAlgorithmAdapterTestCase: Line 258  TestSuite* DataAlgorithmAdapterTestCase:
258    TestSuite *testSuite = new TestSuite ("DataAlgorithmAdapterTestCase");    TestSuite *testSuite = new TestSuite ("DataAlgorithmAdapterTestCase");
259    
260    testSuite->addTest (new TestCaller< DataAlgorithmAdapterTestCase>("testAll",&DataAlgorithmAdapterTestCase::testAll));    testSuite->addTest (new TestCaller< DataAlgorithmAdapterTestCase>("testAll",&DataAlgorithmAdapterTestCase::testAll));
261      testSuite->addTest (new TestCaller<DataAlgorithmAdapterTestCase>("testAlgorithm",&DataAlgorithmAdapterTestCase::testAlgorithm));
262      testSuite->addTest (new TestCaller<DataAlgorithmAdapterTestCase>("testDpAlgorithm",&DataAlgorithmAdapterTestCase::testDpAlgorithm));
263    return testSuite;    return testSuite;
264  }  }
265    

Legend:
Removed from v.100  
changed lines
  Added in v.155

  ViewVC Help
Powered by ViewVC 1.1.26