/[escript]/temp_trunk_copy/escript/test/DataTaggedTestCase.cpp
ViewVC logotype

Diff of /temp_trunk_copy/escript/test/DataTaggedTestCase.cpp

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

revision 468 by jgs, Wed Jan 25 06:50:39 2006 UTC revision 499 by jgs, Tue Feb 7 04:40:44 2006 UTC
# Line 12  Line 12 
12   *                                                                           *   *                                                                           *
13   *****************************************************************************   *****************************************************************************
14  */  */
15  #include "escript/Data/DataTagged.h"  
 #include "escript/Data/BinaryOp.h"  
 #include "escript/Data/UnaryOp.h"  
16  #include "EsysException.h"  #include "EsysException.h"
17    
18  #include "escript/Data/FunctionSpaceFactory.h"  #include "DataTagged.h"
 #include "escript/Data/DataFactory.h"  
19    
20  #include "DataTaggedTestCase.h"  #include "DataTaggedTestCase.h"
21    
22    #include "BinaryOp.h"
23    #include "UnaryOp.h"
24    #include "FunctionSpaceFactory.h"
25    #include "DataFactory.h"
26    
27  #include <iostream>  #include <iostream>
28  #include <functional>  #include <functional>
29  #include <algorithm>  #include <algorithm>
# Line 186  void DataTaggedTestCase::testAll() { Line 188  void DataTaggedTestCase::testAll() {
188    cout << endl;    cout << endl;
189    
190    {    {
191      cout << "\tTest default construction." << endl;  
192        cout << "\tTest default DataTagged." << endl;
193      DataTagged myData;      DataTagged myData;
194      assert(myData.getPointDataView()()==0);  
195      assert(myData.getNumDPPSample()==1);      //cout << myData.toString() << endl;
196    
197      assert(myData.getNumSamples()==1);      assert(myData.getNumSamples()==1);
198      cout << "\tTest adding two keys with empty value list." << endl;      assert(myData.getNumDPPSample()==1);
199      DataTagged::TagListType keys;  
200      DataTagged::ValueListType values;      assert(myData.validSamplePointNo(0));
201      keys.push_back(1);      assert(myData.validSampleNo(0));
202      keys.push_back(2);      assert(!myData.validSamplePointNo(1));
203      myData.addTaggedValues(keys,values);      assert(!myData.validSampleNo(1));
204      for (int i=0;i<keys.size();++i) {  
205        assert(myData.getPointDataView()()==0);      assert(myData.getTagNumber(0)==1);
206      }  
207        assert(!myData.isCurrentTag(1));
208    
209        assert(myData.getTagLookup().size()==0);
210    
211        assert(myData.getLength()==1);
212    
213        assert(myData.getPointOffset(0,0)==0);
214    
215        DataArrayView myDataView = myData.getDataPoint(0,0);
216        assert(!myDataView.isEmpty());
217        assert(myDataView.getOffset()==0);
218        assert(myDataView.getRank()==0);
219        assert(myDataView.noValues()==1);
220        assert(myDataView.getShape().size()==0);
221        assert(myDataView()==0.0);
222    
223        // Test non-existent tag returns the default value.
224        myDataView = myData.getDataPointByTag(1);
225        assert(!myDataView.isEmpty());
226        assert(myDataView.getOffset()==0);
227        assert(myDataView.getRank()==0);
228        assert(myDataView.noValues()==1);
229        assert(myDataView.getShape().size()==0);
230        assert(myDataView()==0.0);
231    
232        myDataView = myData.getDefaultValue();
233        assert(!myDataView.isEmpty());
234        assert(myDataView.getOffset()==0);
235        assert(myDataView.getRank()==0);
236        assert(myDataView.noValues()==1);
237        assert(myDataView.getShape().size()==0);
238        assert(myDataView()==0.0);
239    
240        //cout << "\tTest adding two keys with empty value list." << endl;
241        //DataTagged::TagListType keys;
242        //DataTagged::ValueListType values;
243        //keys.push_back(1);
244        //keys.push_back(2);
245        //myData.addTaggedValues(keys,values);
246        //for (int i=0;i<keys.size();++i) {
247        //  assert(myData.getPointDataView()()==0);
248        //}
249    
250    }    }
251    
252    {    {
253    
254        cout << "\tTest DataTagged with default value only." << endl;
255    
256      DataArrayView::ShapeType viewShape;      DataArrayView::ShapeType viewShape;
257      viewShape.push_back(3);      viewShape.push_back(3);
258      DataArrayView::ValueType viewData(3);  
259      DataTagged::TagListType keys;      DataTagged::TagListType keys;
260    
261      DataTagged::ValueListType values;      DataTagged::ValueListType values;
262      for (int i=0;i<viewShape[0];++i) {  
263        viewData[i]=0.0;      DataArrayView::ValueType viewData(3);
264        for (int i=0;i<viewShape[0];i++) {
265          viewData[i]=i;
266      }      }
267      DataArrayView myView(viewData,viewShape);      DataArrayView myView(viewData,viewShape);
268      cout << "\tCreate tagged data with no tag values just a default." << endl;  
269      DataTagged myData(keys,values,myView,FunctionSpace());      DataTagged myData(keys,values,myView,FunctionSpace());
270      assert(myData.getNumDPPSample()==1);  
271        //cout << myData.toString() << endl;
272    
273      assert(myData.getNumSamples()==1);      assert(myData.getNumSamples()==1);
274      cout << "\tTest non existent tag returns the default value." << endl;      assert(myData.getNumDPPSample()==1);
275      assert(myData.getDataPointByTag(1)==myView);  
276      cout << "\tTest adding a single tag value." << endl;      assert(myData.validSamplePointNo(0));
277      for (int i=0;i<myView.getShape()[0];++i) {      assert(myData.validSampleNo(0));
278        myView(i)=i;      assert(!myData.validSamplePointNo(1));
279      }      assert(!myData.validSampleNo(1));
280      values.push_back(myView);  
281        assert(myData.getTagNumber(0)==1);
282    
283        assert(!myData.isCurrentTag(1));
284    
285        assert(myData.getTagLookup().size()==0);
286    
287        assert(myData.getLength()==3);
288    
289        assert(myData.getPointOffset(0,0)==0);
290    
291        DataArrayView myDataView = myData.getDataPoint(0,0);
292        assert(myDataView==myView);
293        assert(!myDataView.isEmpty());
294        assert(myDataView.getOffset()==0);
295        assert(myDataView.getRank()==1);
296        assert(myDataView.noValues()==3);
297        assert(myDataView.getShape().size()==1);
298        assert(myDataView(0)==0);
299        assert(myDataView(1)==1);
300        assert(myDataView(2)==2);
301    
302        // Test non-existent tag returns the default value.
303        myDataView = myData.getDataPointByTag(1);
304        assert(myDataView==myView);
305        assert(!myDataView.isEmpty());
306        assert(myDataView.getOffset()==0);
307        assert(myDataView.getRank()==1);
308        assert(myDataView.noValues()==3);
309        assert(myDataView.getShape().size()==1);
310        assert(myDataView(0)==0);
311        assert(myDataView(1)==1);
312        assert(myDataView(2)==2);
313    
314        myDataView = myData.getDefaultValue();
315        assert(myDataView==myView);
316        assert(!myDataView.isEmpty());
317        assert(myDataView.getOffset()==0);
318        assert(myDataView.getRank()==1);
319        assert(myDataView.noValues()==3);
320        assert(myDataView.getShape().size()==1);
321        assert(myDataView(0)==0);
322        assert(myDataView(1)==1);
323        assert(myDataView(2)==2);
324    
325        //cout << "\tTest adding a single tag value." << endl;
326        //for (int i=0;i<myView.getShape()[0];++i) {
327        //  myView(i)=i;
328        //}
329        //values.push_back(myView);
330        //keys.push_back(1);
331        //myData.addTaggedValues(keys,values);
332        //assert(myData.getDataPointByTag(1)==myView);
333        //cout << "\tTest addition of further tags." << endl;
334        //keys.resize(0);
335        //keys.push_back(3);
336        //for (int i=0;i<myView.getShape()[0];++i) {
337        //  myView(i)=i+1.5;
338        //}
339        //myData.addTaggedValues(keys,values);
340        //assert(myData.getDataPointByTag(3)==myView);
341        //assert(myData.getDataPointByTag(1)!=myView);
342        //cout << "\tTrigger the size mismatch exception." << endl;
343        //try {
344        //  values.push_back(myView);
345        //  myData.addTaggedValues(keys,values);
346        //  assert(false);
347        //}
348        //catch (EsysException& e) {
349        // assert(true);
350        //}
351    
352      }
353    
354      {
355    
356        cout << "\tTest DataTagged with one tag." << endl;
357    
358        // the one data-point has tag value "1"
359    
360        DataTagged::TagListType keys;
361      keys.push_back(1);      keys.push_back(1);
362      myData.addTaggedValues(keys,values);  
363      assert(myData.getDataPointByTag(1)==myView);      DataTagged::ValueListType values;
364      cout << "\tTest addition of further tags." << endl;  
365      keys.resize(0);      DataArrayView::ShapeType viewShape;
366      keys.push_back(3);      viewShape.push_back(3);
367      for (int i=0;i<myView.getShape()[0];++i) {  
368        myView(i)=i+1.5;      // default value
369      }      DataArrayView::ValueType viewData(3);
370      myData.addTaggedValues(keys,values);      for (int i=0;i<viewShape[0];i++) {
371      assert(myData.getDataPointByTag(3)==myView);        viewData[i]=i;
     assert(myData.getDataPointByTag(1)!=myView);  
     cout << "\tTrigger the size mismatch exception." << endl;  
     try {  
       values.push_back(myView);  
       myData.addTaggedValues(keys,values);  
       assert(false);  
372      }      }
373      catch (EsysException& e) {      DataArrayView myView(viewData,viewShape);
374        assert(true);  
375        // value for tag "1"
376        DataArray eOne(myView);
377        for (int i=0;i<eOne.getView().getShape()[0];i++) {
378          eOne.getView()(i)=i+1.0;
379      }      }
380        values.push_back(eOne.getView());
381    
382        DataTagged myData(keys,values,myView,FunctionSpace());
383    
384        //cout << myData.toString() << endl;
385    
386        assert(myData.getNumSamples()==1);
387        assert(myData.getNumDPPSample()==1);
388    
389        assert(myData.validSamplePointNo(0));
390        assert(myData.validSampleNo(0));
391        assert(!myData.validSamplePointNo(1));
392        assert(!myData.validSampleNo(1));
393    
394        assert(myData.getTagNumber(0)==1);
395    
396        assert(!myData.isCurrentTag(0));
397        assert(myData.isCurrentTag(1));
398    
399        assert(myData.getTagLookup().size()==1);
400    
401        assert(myData.getLength()==6);
402    
403        assert(myData.getPointOffset(0,0)==3);
404    
405        DataArrayView myDataView = myData.getDataPoint(0,0);
406        assert(myDataView==eOne.getView());
407        assert(!myDataView.isEmpty());
408        assert(myDataView.getOffset()==3);
409        assert(myDataView.getRank()==1);
410        assert(myDataView.noValues()==3);
411        assert(myDataView.getShape().size()==1);
412        assert(myDataView(0)==1);
413        assert(myDataView(1)==2);
414        assert(myDataView(2)==3);
415    
416        myDataView = myData.getDataPointByTag(1);
417        assert(myDataView==eOne.getView());
418        assert(!myDataView.isEmpty());
419        assert(myDataView.getOffset()==3);
420        assert(myDataView.getRank()==1);
421        assert(myDataView.noValues()==3);
422        assert(myDataView.getShape().size()==1);
423        assert(myDataView(0)==1);
424        assert(myDataView(1)==2);
425        assert(myDataView(2)==3);
426    
427        // Test non-existent tag returns the default value.
428        myDataView = myData.getDataPointByTag(0);
429        assert(myDataView==myView);
430        assert(!myDataView.isEmpty());
431        assert(myDataView.getOffset()==0);
432        assert(myDataView.getRank()==1);
433        assert(myDataView.noValues()==3);
434        assert(myDataView.getShape().size()==1);
435        assert(myDataView(0)==0);
436        assert(myDataView(1)==1);
437        assert(myDataView(2)==2);
438    
439        myDataView = myData.getDefaultValue();
440        assert(myDataView==myView);
441        assert(!myDataView.isEmpty());
442        assert(myDataView.getOffset()==0);
443        assert(myDataView.getRank()==1);
444        assert(myDataView.noValues()==3);
445        assert(myDataView.getShape().size()==1);
446        assert(myDataView(0)==0);
447        assert(myDataView(1)==1);
448        assert(myDataView(2)==2);
449    
450    }    }
451    
452    {    {
453      cout << "\tTest creation of tagged data with multiple tags." << endl;  
454        cout << "\tTest DataTagged with multiple tags." << endl;
455    
456        // the one data-point has tag value "1"
457    
458        DataTagged::TagListType keys;
459        keys.push_back(1);
460        keys.push_back(2);
461        keys.push_back(3);
462    
463        DataTagged::ValueListType values;
464    
465      DataArrayView::ShapeType viewShape;      DataArrayView::ShapeType viewShape;
466      viewShape.push_back(3);      viewShape.push_back(3);
467    
468        // default value
469      DataArrayView::ValueType viewData(3);      DataArrayView::ValueType viewData(3);
470      DataTagged::TagListType keys;      for (int i=0;i<viewShape[0];i++) {
471      DataTagged::ValueListType values;        viewData[i]=i;
     for (int i=0;i<viewShape[0];++i) {  
       viewData[i]=0.0;  
472      }      }
473      DataArrayView myView(viewData,viewShape);      DataArrayView myView(viewData,viewShape);
474    
475        // value for tag "1"
476      DataArray eOne(myView);      DataArray eOne(myView);
477      DataArray eTwo(myView);      for (int i=0;i<eOne.getView().getShape()[0];i++) {
     DataArray eThree(myView);  
     for (int i=0;i<eOne.getView().getShape()[0];++i) {  
478        eOne.getView()(i)=i+1.0;        eOne.getView()(i)=i+1.0;
479      }      }
480      for (int i=0;i<eTwo.getView().getShape()[0];++i) {      values.push_back(eOne.getView());
481    
482        // value for tag "2"
483        DataArray eTwo(myView);
484        for (int i=0;i<eTwo.getView().getShape()[0];i++) {
485        eTwo.getView()(i)=i+2.0;        eTwo.getView()(i)=i+2.0;
486      }      }
487      for (int i=0;i<eThree.getView().getShape()[0];++i) {      values.push_back(eTwo.getView());
488    
489        // value for tag "3"
490        DataArray eThree(myView);
491        for (int i=0;i<eThree.getView().getShape()[0];i++) {
492        eThree.getView()(i)=i+3.0;        eThree.getView()(i)=i+3.0;
493      }      }
     values.push_back(eOne.getView());  
     values.push_back(eTwo.getView());  
494      values.push_back(eThree.getView());      values.push_back(eThree.getView());
495      keys.push_back(1);  
     keys.push_back(2);  
     keys.push_back(3);  
496      DataTagged myData(keys,values,myView,FunctionSpace());      DataTagged myData(keys,values,myView,FunctionSpace());
497      assert(myData.getDataPointByTag(1)==eOne.getView());  
498      assert(myData.getDataPointByTag(2)==eTwo.getView());      //cout << myData.toString() << endl;
499      assert(myData.getDataPointByTag(3)==eThree.getView());  
500      cout << "\tTest isCurrentTag function." << endl;      assert(myData.getNumSamples()==1);
501      for (int i=0;i<keys.size();++i) {      assert(myData.getNumDPPSample()==1);
502        assert(myData.isCurrentTag(keys[i]));  
503      }      assert(myData.validSamplePointNo(0));
504      cout << "\tCheck correct operation for key that doesn't exist." << endl;      assert(myData.validSampleNo(0));
505      assert(!myData.isCurrentTag(123));      assert(!myData.validSamplePointNo(1));
506      cout << "\tTrigger bad shape in input values exception." << endl;      assert(!myData.validSampleNo(1));
507      viewShape.clear();  
508      viewShape.push_back(1);      assert(myData.getTagNumber(0)==1);
509      keys.clear();  
510      values.clear();      assert(!myData.isCurrentTag(0));
511      viewData.resize(1,0.0);      assert(myData.isCurrentTag(1));
512      DataArrayView myView2(viewData,viewShape);      assert(myData.isCurrentTag(2));
513      try {      assert(myData.isCurrentTag(3));
514        myData.addTaggedValue(5,myView2);  
515        assert(false);      assert(myData.getTagLookup().size()==3);
516      }  
517      catch (EsysException& e) {      assert(myData.getLength()==12);
518        assert(true);  
519      }      assert(myData.getPointOffset(0,0)==3);
520      cout << "\tTest addTaggedValues." << endl;  
521      DataTagged myData2;      DataArrayView myDataView = myData.getDataPoint(0,0);
522      myData2.reshapeDataPoint(myView.getShape());      assert(myDataView==eOne.getView());
523      keys.clear();      assert(!myDataView.isEmpty());
524      values.clear();      assert(myDataView.getOffset()==3);
525      keys.push_back(1);      assert(myDataView.getRank()==1);
526      keys.push_back(2);      assert(myDataView.noValues()==3);
527      keys.push_back(3);      assert(myDataView.getShape().size()==1);
528      values.push_back(eOne.getView());      assert(myDataView(0)==1);
529      values.push_back(eTwo.getView());      assert(myDataView(1)==2);
530      values.push_back(eThree.getView());      assert(myDataView(2)==3);
531      myData2.addTaggedValues(keys,values);  
532      assert(myData2.getDataPointByTag(1)==eOne.getView());      myDataView = myData.getDataPointByTag(1);
533      assert(myData2.getDataPointByTag(2)==eTwo.getView());      assert(myDataView==eOne.getView());
534      assert(myData2.getDataPointByTag(3)==eThree.getView());      assert(!myDataView.isEmpty());
535      cout << "\tTest setTaggedValue." << endl;      assert(myDataView.getOffset()==3);
536      DataTagged myData3;      assert(myDataView.getRank()==1);
537      myData3.reshapeDataPoint(myView.getShape());      assert(myDataView.noValues()==3);
538      myData3.addTaggedValue(1,eThree.getView());      assert(myDataView.getShape().size()==1);
539      myData3.addTaggedValue(2,eOne.getView());      assert(myDataView(0)==1);
540      myData3.addTaggedValue(3,eTwo.getView());      assert(myDataView(1)==2);
541      myData3.setTaggedValue(1,eOne.getView());      assert(myDataView(2)==3);
542      myData3.setTaggedValue(2,eTwo.getView());  
543      myData3.setTaggedValue(3,eThree.getView());      // Test non-existent tag returns the default value.
544      assert(myData3.getDataPointByTag(1)==eOne.getView());      myDataView = myData.getDataPointByTag(0);
545      assert(myData3.getDataPointByTag(2)==eTwo.getView());      assert(myDataView==myView);
546      assert(myData3.getDataPointByTag(3)==eThree.getView());      assert(!myDataView.isEmpty());
547        assert(myDataView.getOffset()==0);
548        assert(myDataView.getRank()==1);
549        assert(myDataView.noValues()==3);
550        assert(myDataView.getShape().size()==1);
551        assert(myDataView(0)==0);
552        assert(myDataView(1)==1);
553        assert(myDataView(2)==2);
554    
555        myDataView = myData.getDefaultValue();
556        assert(myDataView==myView);
557        assert(!myDataView.isEmpty());
558        assert(myDataView.getOffset()==0);
559        assert(myDataView.getRank()==1);
560        assert(myDataView.noValues()==3);
561        assert(myDataView.getShape().size()==1);
562        assert(myDataView(0)==0);
563        assert(myDataView(1)==1);
564        assert(myDataView(2)==2);
565    
566        // Test data-points held for remaining tags
567        myDataView = myData.getDataPointByTag(2);
568        assert(myDataView==eTwo.getView());
569        assert(!myDataView.isEmpty());
570        assert(myDataView.getOffset()==6);
571        assert(myDataView.getRank()==1);
572        assert(myDataView.noValues()==3);
573        assert(myDataView.getShape().size()==1);
574        assert(myDataView(0)==2);
575        assert(myDataView(1)==3);
576        assert(myDataView(2)==4);
577    
578        myDataView = myData.getDataPointByTag(3);
579        assert(myDataView==eThree.getView());
580        assert(!myDataView.isEmpty());
581        assert(myDataView.getOffset()==9);
582        assert(myDataView.getRank()==1);
583        assert(myDataView.noValues()==3);
584        assert(myDataView.getShape().size()==1);
585        assert(myDataView(0)==3);
586        assert(myDataView(1)==4);
587        assert(myDataView(2)==5);
588    
589        //cout << "\tTrigger bad shape in input values exception." << endl;
590        //viewShape.clear();
591        //viewShape.push_back(1);
592        //keys.clear();
593        //values.clear();
594        //viewData.resize(1,0.0);
595        //DataArrayView myView2(viewData,viewShape);
596        //try {
597        //  myData.addTaggedValue(5,myView2);
598        //  assert(false);
599        //}
600        //catch (EsysException& e) {
601        //  assert(true);
602        //}
603        //cout << "\tTest addTaggedValues." << endl;
604        //DataTagged myData2;
605        //myData2.reshapeDataPoint(myView.getShape());
606        //keys.clear();
607        //values.clear();
608        //keys.push_back(1);
609        //keys.push_back(2);
610        //keys.push_back(3);
611        //values.push_back(eOne.getView());
612        //values.push_back(eTwo.getView());
613        //values.push_back(eThree.getView());
614        //myData2.addTaggedValues(keys,values);
615        //assert(myData2.getDataPointByTag(1)==eOne.getView());
616        //assert(myData2.getDataPointByTag(2)==eTwo.getView());
617        //assert(myData2.getDataPointByTag(3)==eThree.getView());
618        //cout << "\tTest setTaggedValue." << endl;
619        //DataTagged myData3;
620        //myData3.reshapeDataPoint(myView.getShape());
621        //myData3.addTaggedValue(1,eThree.getView());
622        //myData3.addTaggedValue(2,eOne.getView());
623        //myData3.addTaggedValue(3,eTwo.getView());
624        //myData3.setTaggedValue(1,eOne.getView());
625        //myData3.setTaggedValue(2,eTwo.getView());
626        //myData3.setTaggedValue(3,eThree.getView());
627        //assert(myData3.getDataPointByTag(1)==eOne.getView());
628        //assert(myData3.getDataPointByTag(2)==eTwo.getView());
629        //assert(myData3.getDataPointByTag(3)==eThree.getView());
630    
631    }    }
632    
633  }  }
# Line 334  TestSuite* DataTaggedTestCase::suite () Line 638  TestSuite* DataTaggedTestCase::suite ()
638    // create the suite of tests to perform.    // create the suite of tests to perform.
639    TestSuite *testSuite = new TestSuite ("DataTaggedTestCase");    TestSuite *testSuite = new TestSuite ("DataTaggedTestCase");
640    testSuite->addTest (new TestCaller< DataTaggedTestCase>("testAll",&DataTaggedTestCase::testAll));    testSuite->addTest (new TestCaller< DataTaggedTestCase>("testAll",&DataTaggedTestCase::testAll));
641    testSuite->addTest (new TestCaller< DataTaggedTestCase>("testOperations",&DataTaggedTestCase::testOperations));  //  testSuite->addTest (new TestCaller< DataTaggedTestCase>("testOperations",&DataTaggedTestCase::testOperations));
642    testSuite->addTest (new TestCaller< DataTaggedTestCase>("testReshape",&DataTaggedTestCase::testReshape));  //  testSuite->addTest (new TestCaller< DataTaggedTestCase>("testReshape",&DataTaggedTestCase::testReshape));
643    return testSuite;    return testSuite;
644  }  }

Legend:
Removed from v.468  
changed lines
  Added in v.499

  ViewVC Help
Powered by ViewVC 1.1.26