/[escript]/trunk/escript/test/DataTagged/DataTaggedTestCase.cpp
ViewVC logotype

Diff of /trunk/escript/test/DataTagged/DataTaggedTestCase.cpp

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

revision 506 by jgs, Thu Feb 9 06:06:02 2006 UTC revision 508 by jgs, Fri Feb 10 01:41:55 2006 UTC
# Line 51  void DataTaggedTestCase::testReshape() { Line 51  void DataTaggedTestCase::testReshape() {
51    cout << endl;    cout << endl;
52    
53    {    {
54      cout << "\tTest reshape of default constructed DataTagged to rank 1." << endl;  
55      DataTagged value;      cout << "\tTest rank 1 reshape of default DataTagged." << endl;
56      value.getPointDataView()()=1.0;  
57        DataTagged myData;
58        myData.getPointDataView()()=1.0;
59    
60      DataArrayView::ShapeType shape;      DataArrayView::ShapeType shape;
61      shape.push_back(2);      shape.push_back(2);
62      value.reshapeDataPoint(shape);  
63      for (int i=0;i<shape[0];++i) {      myData.reshapeDataPoint(shape);
64        assert(value.getDefaultValue()(i)==1);  
65        for (int i=0;i<shape[0];i++) {
66          assert(myData.getDefaultValue()(i)==1);
67        }
68    
69        //cout << myData.toString() << endl;
70    
71        assert(myData.getNumSamples()==1);
72        assert(myData.getNumDPPSample()==1);
73    
74        assert(myData.validSamplePointNo(0));
75        assert(myData.validSampleNo(0));
76        assert(!myData.validSamplePointNo(1));
77        assert(!myData.validSampleNo(1));
78    
79        // data-point 0 has tag number 1 by default
80        assert(myData.getTagNumber(0)==1);
81    
82        assert(!myData.isCurrentTag(1));
83    
84        assert(myData.getTagLookup().size()==0);
85    
86        assert(myData.getLength()==2);
87    
88        assert(myData.getPointOffset(0,0)==0);
89    
90        DataArrayView myDataView = myData.getDataPoint(0,0);
91        assert(!myDataView.isEmpty());
92        assert(myDataView.getOffset()==0);
93        assert(myDataView.getRank()==1);
94        assert(myDataView.noValues()==2);
95        assert(myDataView.getShape().size()==1);
96        assert(myDataView(0)==1.0);
97        assert(myDataView(1)==1.0);
98    
99        // Test non-existent tag returns the default value.
100        myDataView = myData.getDataPointByTag(1);
101        assert(!myDataView.isEmpty());
102        assert(myDataView.getOffset()==0);
103        assert(myDataView.getRank()==1);
104        assert(myDataView.noValues()==2);
105        assert(myDataView.getShape().size()==1);
106        assert(myDataView(0)==1.0);
107        assert(myDataView(1)==1.0);
108    
109        myDataView = myData.getDefaultValue();
110        assert(!myDataView.isEmpty());
111        assert(myDataView.getOffset()==0);
112        assert(myDataView.getRank()==1);
113        assert(myDataView.noValues()==2);
114        assert(myDataView.getShape().size()==1);
115        assert(myDataView(0)==1.0);
116        assert(myDataView(1)==1.0);
117    
118        // use a non-existent tag so we get a pointer to
119        // the first element of the data array
120        double* sampleData=myData.getSampleDataByTag(9);
121        for (int i=0; i<myData.getLength(); i++) {
122          assert(sampleData[i]==1.0);
123      }      }
124    
125    }    }
126    
127    {    {
128      cout << "\tTest reshape of default constructed DataTagged to rank 2." << endl;  
129      DataTagged value;      cout << "\tTest rank 2 reshape of DataTagged with one tag." << endl;
130      value.getPointDataView()()=0.0;  
131      DataArray vOne(1.0);      DataTagged::TagListType keys;
132      DataArray vTwo(2.0);      keys.push_back(1);
133      value.addTaggedValue(1,vOne.getView());  
134      value.addTaggedValue(2,vTwo.getView());      DataTagged::ValueListType values;
135    
136        DataArrayView::ShapeType viewShape;
137    
138        // default value
139        DataArrayView::ValueType viewData(1);
140        viewData[0]=1.0;
141        DataArrayView myView(viewData,viewShape);
142    
143        // value for tag "1"
144        DataArray eOne(myView);
145        eOne.getView()()=2.0;
146        values.push_back(eOne.getView());
147    
148        DataTagged myData(keys,values,myView,FunctionSpace());
149    
150      DataArrayView::ShapeType shape;      DataArrayView::ShapeType shape;
151      shape.push_back(2);      shape.push_back(2);
152      shape.push_back(5);      shape.push_back(5);
153      value.reshapeDataPoint(shape);  
154      for (int j=0;j<shape[1];++j) {      myData.reshapeDataPoint(shape);
155        for (int i=0;i<shape[0];++i) {  
156      assert(value.getDefaultValue()(i,j)==0.0);      //cout << myData.toString() << endl;
157      assert(value.getDataPointByTag(1)(i,j)==vOne.getView()());  
158      assert(value.getDataPointByTag(2)(i,j)==vTwo.getView()());      assert(myData.getNumSamples()==1);
159        assert(myData.getNumDPPSample()==1);
160    
161        assert(myData.validSamplePointNo(0));
162        assert(myData.validSampleNo(0));
163        assert(!myData.validSamplePointNo(1));
164        assert(!myData.validSampleNo(1));
165    
166        // data-point 0 has tag number 1 by default
167        assert(myData.getTagNumber(0)==1);
168    
169        assert(myData.isCurrentTag(1));
170    
171        assert(myData.getTagLookup().size()==1);
172    
173        assert(myData.getLength()==20);
174    
175        assert(myData.getPointOffset(0,0)==10);
176    
177        DataArrayView myDataView = myData.getDataPoint(0,0);
178        assert(!myDataView.isEmpty());
179        assert(myDataView.getOffset()==10);
180        assert(myDataView.getRank()==2);
181        assert(myDataView.noValues()==10);
182        assert(myDataView.getShape().size()==2);
183        for (int j=0;j<shape[1];j++) {
184          for (int i=0;i<shape[0];i++) {
185            assert(myDataView(i,j)==2.0);
186          }
187        }
188    
189        myDataView = myData.getDataPointByTag(1);
190        assert(!myDataView.isEmpty());
191        assert(myDataView.getOffset()==10);
192        assert(myDataView.getRank()==2);
193        assert(myDataView.noValues()==10);
194        assert(myDataView.getShape().size()==2);
195        for (int j=0;j<shape[1];j++) {
196          for (int i=0;i<shape[0];i++) {
197            assert(myDataView(i,j)==2.0);
198          }
199        }
200    
201        myDataView = myData.getDefaultValue();
202        assert(!myDataView.isEmpty());
203        assert(myDataView.getOffset()==0);
204        assert(myDataView.getRank()==2);
205        assert(myDataView.noValues()==10);
206        assert(myDataView.getShape().size()==2);
207        for (int j=0;j<shape[1];j++) {
208          for (int i=0;i<shape[0];i++) {
209            assert(myDataView(i,j)==1.0);
210          }
211        }
212    
213        // use a non-existent tag so we get a pointer to
214        // the first element of the data array
215        double* sampleData=myData.getSampleDataByTag(9);
216        for (int i=0; i<myData.getLength(); i++) {
217          if (i<10) {
218            assert(sampleData[i]==1.0);
219          } else {
220            assert(sampleData[i]==2.0);
221          }
222        }
223    
224      }
225    
226      {
227    
228        cout << "\tTest rank 3 reshape of DataTagged with three tags." << endl;
229    
230        DataTagged::TagListType keys;
231        keys.push_back(1);
232        keys.push_back(2);
233        keys.push_back(3);
234    
235        DataTagged::ValueListType values;
236    
237        DataArrayView::ShapeType viewShape;
238    
239        // default value
240        DataArrayView::ValueType viewData(1);
241        viewData[0]=0.0;
242        DataArrayView myView(viewData,viewShape);
243    
244        // value for tag "1"
245        DataArray eOne(myView);
246        eOne.getView()()=1.0;
247        values.push_back(eOne.getView());
248    
249        // value for tag "2"
250        DataArray eTwo(myView);
251        eTwo.getView()()=2.0;
252        values.push_back(eTwo.getView());
253    
254        // value for tag "3"
255        DataArray eThree(myView);
256        eThree.getView()()=3.0;
257        values.push_back(eThree.getView());
258    
259        DataTagged myData(keys,values,myView,FunctionSpace());
260    
261        DataArrayView::ShapeType shape;
262        shape.push_back(2);
263        shape.push_back(2);
264        shape.push_back(2);
265    
266        myData.reshapeDataPoint(shape);
267    
268        //cout << myData.toString() << endl;
269    
270        assert(myData.getNumSamples()==1);
271        assert(myData.getNumDPPSample()==1);
272    
273        assert(myData.validSamplePointNo(0));
274        assert(myData.validSampleNo(0));
275        assert(!myData.validSamplePointNo(1));
276        assert(!myData.validSampleNo(1));
277    
278        // data-point 0 has tag number 1 by default
279        assert(myData.getTagNumber(0)==1);
280    
281        assert(myData.isCurrentTag(1));
282        assert(myData.isCurrentTag(2));
283        assert(myData.isCurrentTag(3));
284    
285        assert(myData.getTagLookup().size()==3);
286    
287        assert(myData.getLength()==32);
288    
289        assert(myData.getPointOffset(0,0)==8);
290    
291        DataArrayView myDataView = myData.getDataPoint(0,0);
292        assert(!myDataView.isEmpty());
293        assert(myDataView.getOffset()==8);
294        assert(myDataView.getRank()==3);
295        assert(myDataView.noValues()==8);
296        assert(myDataView.getShape().size()==3);
297        for (int k=0;k<shape[2];k++) {
298          for (int j=0;j<shape[1];j++) {
299            for (int i=0;i<shape[0];i++) {
300              assert(myDataView(i,j,k)==1.0);
301            }
302          }
303        }
304    
305        myDataView = myData.getDataPointByTag(1);
306        assert(!myDataView.isEmpty());
307        assert(myDataView.getOffset()==8);
308        assert(myDataView.getRank()==3);
309        assert(myDataView.noValues()==8);
310        assert(myDataView.getShape().size()==3);
311        for (int k=0;k<shape[2];k++) {
312          for (int j=0;j<shape[1];j++) {
313            for (int i=0;i<shape[0];i++) {
314              assert(myDataView(i,j,k)==1.0);
315            }
316          }
317        }
318    
319        myDataView = myData.getDataPointByTag(2);
320        assert(!myDataView.isEmpty());
321        assert(myDataView.getOffset()==16);
322        assert(myDataView.getRank()==3);
323        assert(myDataView.noValues()==8);
324        assert(myDataView.getShape().size()==3);
325        for (int k=0;k<shape[2];k++) {
326          for (int j=0;j<shape[1];j++) {
327            for (int i=0;i<shape[0];i++) {
328              assert(myDataView(i,j,k)==2.0);
329            }
330        }        }
331      }      }
332    
333        myDataView = myData.getDataPointByTag(3);
334        assert(!myDataView.isEmpty());
335        assert(myDataView.getOffset()==24);
336        assert(myDataView.getRank()==3);
337        assert(myDataView.noValues()==8);
338        assert(myDataView.getShape().size()==3);
339        for (int k=0;k<shape[2];k++) {
340          for (int j=0;j<shape[1];j++) {
341            for (int i=0;i<shape[0];i++) {
342              assert(myDataView(i,j,k)==3.0);
343            }
344          }
345        }
346    
347        myDataView = myData.getDefaultValue();
348        assert(!myDataView.isEmpty());
349        assert(myDataView.getOffset()==0);
350        assert(myDataView.getRank()==3);
351        assert(myDataView.noValues()==8);
352        assert(myDataView.getShape().size()==3);
353        for (int k=0;k<shape[2];k++) {
354          for (int j=0;j<shape[1];j++) {
355            for (int i=0;i<shape[0];i++) {
356              assert(myDataView(i,j,k)==0.0);
357            }
358          }
359        }
360    
361        // use a non-existent tag so we get a pointer to
362        // the first element of the data array
363        double* sampleData=myData.getSampleDataByTag(9);
364        for (int i=0; i<myData.getLength(); i++) {
365          if (i<8) {
366            assert(sampleData[i]==0.0);
367          } else if ((i>=8) && (i<16)) {
368            assert(sampleData[i]==1.0);
369          } else if ((i>=16) && (i<24)) {
370            assert(sampleData[i]==2.0);
371          } else {
372            assert(sampleData[i]==3.0);
373          }
374        }
375    
376    }    }
377    
378  }  }
379    
380  void DataTaggedTestCase::testOperations() {  void DataTaggedTestCase::testOperations() {
# Line 415  void DataTaggedTestCase::testOperations( Line 709  void DataTaggedTestCase::testOperations(
709      for (int i=0; i<myData.getLength(); i++) {      for (int i=0; i<myData.getLength(); i++) {
710        if (i<3) {        if (i<3) {
711          assert(sampleData[i]==i);          assert(sampleData[i]==i);
712        }        } else {
       if (i>=3) {  
713          assert(sampleData[i]==i-2);          assert(sampleData[i]==i-2);
714        }        }
715      }      }
# Line 1452  void DataTaggedTestCase::testAddTaggedVa Line 1745  void DataTaggedTestCase::testAddTaggedVa
1745      for (int i=0; i<myData.getLength(); i++) {      for (int i=0; i<myData.getLength(); i++) {
1746        if (i<3) {        if (i<3) {
1747          assert(sampleData[i]==i);          assert(sampleData[i]==i);
1748        }        } else if ((i>=3) && (i<6)) {
       if ((i>=3) && (i<6)) {  
1749          assert(sampleData[i]==i-2);          assert(sampleData[i]==i-2);
1750        }        } else if ((i>=6) && (i<9)) {
       if ((i>=6) && (i<9)) {  
1751          assert(sampleData[i]==i-4);          assert(sampleData[i]==i-4);
1752        }        } else  {
       if (i>=9) {  
1753          assert(sampleData[i]==i-6);          assert(sampleData[i]==i-6);
1754        }        }
1755      }      }
# Line 1539  void DataTaggedTestCase::testAddTaggedVa Line 1829  void DataTaggedTestCase::testAddTaggedVa
1829      for (int i=0; i<myData.getLength(); i++) {      for (int i=0; i<myData.getLength(); i++) {
1830        if (i<3) {        if (i<3) {
1831          assert(sampleData[i]==i);          assert(sampleData[i]==i);
1832        }        } else if ((i>=3) && (i<6)) {
       if ((i>=3) && (i<6)) {  
1833          assert(sampleData[i]==i-2);          assert(sampleData[i]==i-2);
1834        }        } else if ((i>=6) && (i<9)) {
       if ((i>=6) && (i<9)) {  
1835          assert(sampleData[i]==i-4);          assert(sampleData[i]==i-4);
1836        }        } else if ((i>=9) && (i<12)) {
       if ((i>=9) && (i<12)) {  
1837          assert(sampleData[i]==i-6);          assert(sampleData[i]==i-6);
1838        }        } else {
       if (i>=12) {  
1839          assert(sampleData[i]==i-12);          assert(sampleData[i]==i-12);
1840        }        }
1841      }      }
# Line 1636  void DataTaggedTestCase::testAddTaggedVa Line 1922  void DataTaggedTestCase::testAddTaggedVa
1922      for (int i=0; i<myData.getLength(); i++) {      for (int i=0; i<myData.getLength(); i++) {
1923        if (i<3) {        if (i<3) {
1924          assert(sampleData[i]==i);          assert(sampleData[i]==i);
1925        }        } else if ((i>=3) && (i<6)) {
       if ((i>=3) && (i<6)) {  
1926          assert(sampleData[i]==i-2);          assert(sampleData[i]==i-2);
1927        }        } else if ((i>=6) && (i<9)) {
       if ((i>=6) && (i<9)) {  
1928          assert(sampleData[i]==i-4);          assert(sampleData[i]==i-4);
1929        }        } else if ((i>=9) && (i<12)) {
       if ((i>=9) && (i<12)) {  
1930          assert(sampleData[i]==i-6);          assert(sampleData[i]==i-6);
1931        }        } else {
       if (i>=12) {  
1932          assert(sampleData[i]==i-8);          assert(sampleData[i]==i-8);
1933        }        }
1934      }      }
# Line 1759  void DataTaggedTestCase::testAddTaggedVa Line 2041  void DataTaggedTestCase::testAddTaggedVa
2041      for (int i=0; i<myData.getLength(); i++) {      for (int i=0; i<myData.getLength(); i++) {
2042        if (i<3) {        if (i<3) {
2043          assert(sampleData[i]==i);          assert(sampleData[i]==i);
2044        }        } else if ((i>=3) && (i<6)) {
       if ((i>=3) && (i<6)) {  
2045          assert(sampleData[i]==i-2);          assert(sampleData[i]==i-2);
2046        }        } else if ((i>=6) && (i<9)) {
       if ((i>=6) && (i<9)) {  
2047          assert(sampleData[i]==i-4);          assert(sampleData[i]==i-4);
2048        }        } else if ((i>=9) && (i<12)) {
       if ((i>=9) && (i<12)) {  
2049          assert(sampleData[i]==i-6);          assert(sampleData[i]==i-6);
2050        }        } else if ((i>=12) && (i<15)) {
       if ((i>=12) && (i<15)) {  
2051          assert(sampleData[i]==i-8);          assert(sampleData[i]==i-8);
2052        }        } else if ((i>=15) && (i<18)) {
       if ((i>=15) && (i<18)) {  
2053          assert(sampleData[i]==i-11);          assert(sampleData[i]==i-11);
2054        }        } else {
       if (i>=18) {  
2055          assert(sampleData[i]==i-14);          assert(sampleData[i]==i-14);
2056        }        }
2057      }      }
# Line 1903  void DataTaggedTestCase::testAddTaggedVa Line 2179  void DataTaggedTestCase::testAddTaggedVa
2179      for (int i=0; i<myData.getLength(); i++) {      for (int i=0; i<myData.getLength(); i++) {
2180        if (i<3) {        if (i<3) {
2181          assert(sampleData[i]==i);          assert(sampleData[i]==i);
2182        }        } else if ((i>=3) && (i<6)) {
       if ((i>=3) && (i<6)) {  
2183          assert(sampleData[i]==i-2);          assert(sampleData[i]==i-2);
2184        }        } else if ((i>=6) && (i<9)) {
       if ((i>=6) && (i<9)) {  
2185          assert(sampleData[i]==i-4);          assert(sampleData[i]==i-4);
2186        }        } else if ((i>=9) && (i<12)) {
       if ((i>=9) && (i<12)) {  
2187          assert(sampleData[i]==i-6);          assert(sampleData[i]==i-6);
2188        }        } else if ((i>=12) && (i<15)) {
       if ((i>=12) && (i<15)) {  
2189          assert(sampleData[i]==i-8);          assert(sampleData[i]==i-8);
2190        }        } else if ((i>=15) && (i<18)) {
       if ((i>=15) && (i<18)) {  
2191          assert(sampleData[i]==i-10);          assert(sampleData[i]==i-10);
2192        }        } else {
       if (i>=18) {  
2193          assert(sampleData[i]==i-12);          assert(sampleData[i]==i-12);
2194        }        }
2195      }      }
# Line 2006  void DataTaggedTestCase::testSetTaggedVa Line 2276  void DataTaggedTestCase::testSetTaggedVa
2276      for (int i=0; i<myData.getLength(); i++) {      for (int i=0; i<myData.getLength(); i++) {
2277        if (i<3) {        if (i<3) {
2278          assert(sampleData[i]==i);          assert(sampleData[i]==i);
2279        }        } else if ((i>=3) && (i<6)) {
       if ((i>=3) && (i<6)) {  
2280          assert(sampleData[i]==i-2);          assert(sampleData[i]==i-2);
2281        }        } else if ((i>=6) && (i<9)) {
       if ((i>=6) && (i<9)) {  
2282          assert(sampleData[i]==i-1);          assert(sampleData[i]==i-1);
2283        }        } else {
       if ((i>=9) && (i<12)) {  
2284          assert(sampleData[i]==i-6);          assert(sampleData[i]==i-6);
2285        }        }
2286      }      }
# Line 2272  void DataTaggedTestCase::testAll() { Line 2539  void DataTaggedTestCase::testAll() {
2539      for (int i=0; i<myData.getLength(); i++) {      for (int i=0; i<myData.getLength(); i++) {
2540        if (i<3) {        if (i<3) {
2541          assert(sampleData[i]==i);          assert(sampleData[i]==i);
2542        }        } else {
       if (i>=3) {  
2543          assert(sampleData[i]==i-2);          assert(sampleData[i]==i-2);
2544        }        }
2545      }      }
# Line 2424  void DataTaggedTestCase::testAll() { Line 2690  void DataTaggedTestCase::testAll() {
2690      for (int i=0; i<myData.getLength(); i++) {      for (int i=0; i<myData.getLength(); i++) {
2691        if (i<3) {        if (i<3) {
2692          assert(sampleData[i]==i);          assert(sampleData[i]==i);
2693        }        } else if ((i>=3) && (i<6)) {
       if ((i>=3) && (i<6)) {  
2694          assert(sampleData[i]==i-2);          assert(sampleData[i]==i-2);
2695        }        } else if ((i>=6) && (i<9)) {
       if ((i>=6) && (i<9)) {  
2696          assert(sampleData[i]==i-4);          assert(sampleData[i]==i-4);
2697        }        } else {
       if (i>=9) {  
2698          assert(sampleData[i]==i-6);          assert(sampleData[i]==i-6);
2699        }        }
2700      }      }
# Line 2590  void DataTaggedTestCase::testCopyConstru Line 2853  void DataTaggedTestCase::testCopyConstru
2853      for (int i=0; i<myData.getLength(); i++) {      for (int i=0; i<myData.getLength(); i++) {
2854        if (i<3) {        if (i<3) {
2855          assert(sampleData[i]==i);          assert(sampleData[i]==i);
2856        }        } else if ((i>=3) && (i<6)) {
       if ((i>=3) && (i<6)) {  
2857          assert(sampleData[i]==i-2);          assert(sampleData[i]==i-2);
2858        }        } else if ((i>=6) && (i<9)) {
       if ((i>=6) && (i<9)) {  
2859          assert(sampleData[i]==i-4);          assert(sampleData[i]==i-4);
2860        }        } else {
       if (i>=9) {  
2861          assert(sampleData[i]==i-6);          assert(sampleData[i]==i-6);
2862        }        }
2863      }      }
# Line 2685  TestSuite* DataTaggedTestCase::suite () Line 2945  TestSuite* DataTaggedTestCase::suite ()
2945    testSuite->addTest (new TestCaller< DataTaggedTestCase>("testSetTaggedValue",&DataTaggedTestCase::testSetTaggedValue));    testSuite->addTest (new TestCaller< DataTaggedTestCase>("testSetTaggedValue",&DataTaggedTestCase::testSetTaggedValue));
2946    testSuite->addTest (new TestCaller< DataTaggedTestCase>("testCopyConstructors",&DataTaggedTestCase::testCopyConstructors));    testSuite->addTest (new TestCaller< DataTaggedTestCase>("testCopyConstructors",&DataTaggedTestCase::testCopyConstructors));
2947    testSuite->addTest (new TestCaller< DataTaggedTestCase>("testOperations",&DataTaggedTestCase::testOperations));    testSuite->addTest (new TestCaller< DataTaggedTestCase>("testOperations",&DataTaggedTestCase::testOperations));
2948  //  testSuite->addTest (new TestCaller< DataTaggedTestCase>("testReshape",&DataTaggedTestCase::testReshape));    testSuite->addTest (new TestCaller< DataTaggedTestCase>("testReshape",&DataTaggedTestCase::testReshape));
2949    return testSuite;    return testSuite;
2950  }  }

Legend:
Removed from v.506  
changed lines
  Added in v.508

  ViewVC Help
Powered by ViewVC 1.1.26