/[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 534 by jgs, Fri Feb 17 01:03:53 2006 UTC revision 548 by jgs, Tue Feb 21 23:52:41 2006 UTC
# Line 1  Line 1 
1  // $Id$  // $Id$
2    
3  /*  /*
4   *****************************************************************************   *****************************************************************************
5   *                                                                           *   *                                                                           *
# Line 569  void DataTaggedTestCase::testOperations( Line 570  void DataTaggedTestCase::testOperations(
570      DataTagged myData;      DataTagged myData;
571      DataTagged right;      DataTagged right;
572    
573      DataArray vOne(1.0);      // it's important that default values are different, as we need to be able to
574      DataArray vTwo(2.0);      // verify that the tag values in each object are being added to the correct
575        // default values - since the tag lists don't match, the default values will
576        // be used for missing tags in each object
577        myData.getDefaultValue()()=1.0;
578        right.getDefaultValue()()=2.0;
579    
580        DataArray vOne(3.0);
581        DataArray vTwo(4.0);
582      myData.addTaggedValue(1,vOne.getView());      myData.addTaggedValue(1,vOne.getView());
583      right.addTaggedValue(2,vTwo.getView());      right.addTaggedValue(2,vTwo.getView());
584    
585        //cout << myData.toString() << endl;
586        //cout << right.toString() << endl;
587    
588      binaryOp(myData,right,plus<double>());      binaryOp(myData,right,plus<double>());
589    
590        //cout << myData.toString() << endl;
591    
592      assert(myData.getNumSamples()==1);      assert(myData.getNumSamples()==1);
593      assert(myData.getNumDPPSample()==1);      assert(myData.getNumDPPSample()==1);
594    
# Line 603  void DataTaggedTestCase::testOperations( Line 616  void DataTaggedTestCase::testOperations(
616      assert(myDataView.getRank()==0);      assert(myDataView.getRank()==0);
617      assert(myDataView.noValues()==1);      assert(myDataView.noValues()==1);
618      assert(myDataView.getShape().size()==0);      assert(myDataView.getShape().size()==0);
619      assert(myDataView()==1.0);      assert(myDataView()==5.0);
620    
621      // check result value for tag "2"      // check result value for tag "2"
622      myDataView = myData.getDataPointByTag(2);      myDataView = myData.getDataPointByTag(2);
# Line 612  void DataTaggedTestCase::testOperations( Line 625  void DataTaggedTestCase::testOperations(
625      assert(myDataView.getRank()==0);      assert(myDataView.getRank()==0);
626      assert(myDataView.noValues()==1);      assert(myDataView.noValues()==1);
627      assert(myDataView.getShape().size()==0);      assert(myDataView.getShape().size()==0);
628      assert(myDataView()==2.0);      assert(myDataView()==5.0);
629    
630      // check result for default value      // check result for default value
631      myDataView = myData.getDefaultValue();      myDataView = myData.getDefaultValue();
# Line 621  void DataTaggedTestCase::testOperations( Line 634  void DataTaggedTestCase::testOperations(
634      assert(myDataView.getRank()==0);      assert(myDataView.getRank()==0);
635      assert(myDataView.noValues()==1);      assert(myDataView.noValues()==1);
636      assert(myDataView.getShape().size()==0);      assert(myDataView.getShape().size()==0);
637      assert(myDataView()==0.0);      assert(myDataView()==3.0);
638    
639      // use a non-existent tag so we get a pointer to      // use a non-existent tag so we get a pointer to
640      // the first element of the data array      // the first element of the data array
641      double* sampleData=myData.getSampleDataByTag(9);      double* sampleData=myData.getSampleDataByTag(9);
642      for (int i=0; i<myData.getLength(); i++) {      assert(sampleData[0]==3);
643        assert(sampleData[i]==i);      assert(sampleData[1]==5);
644      }      assert(sampleData[2]==5);
645    
646    }    }
647    
# Line 638  void DataTaggedTestCase::testOperations( Line 651  void DataTaggedTestCase::testOperations(
651      DataTagged myData;      DataTagged myData;
652      DataTagged right;      DataTagged right;
653    
654        // it's important that default values are different, as we need to be able to
655        // verify that the tag values in each object are being added to the correct
656        // default values - since the tag lists don't match, the default values will
657        // be used for missing tags in each object
658        myData.getDefaultValue()()=2.0;
659        right.getDefaultValue()()=3.0;
660    
661      DataArray vOne(1.0);      DataArray vOne(1.0);
662      myData.addTaggedValue(1,vOne.getView());      myData.addTaggedValue(1,vOne.getView());
663      myData.addTaggedValue(2,vOne.getView());      myData.addTaggedValue(2,vOne.getView());
664      right.addTaggedValue(2,vOne.getView());      right.addTaggedValue(2,vOne.getView());
665      right.addTaggedValue(3,vOne.getView());      right.addTaggedValue(3,vOne.getView());
666    
667        //cout << myData.toString() << endl;
668        //cout << right.toString() << endl;
669    
670      binaryOp(myData,right,plus<double>());      binaryOp(myData,right,plus<double>());
671    
672        //cout << myData.toString() << endl;
673    
674      assert(myData.getNumSamples()==1);      assert(myData.getNumSamples()==1);
675      assert(myData.getNumDPPSample()==1);      assert(myData.getNumDPPSample()==1);
676    
# Line 674  void DataTaggedTestCase::testOperations( Line 699  void DataTaggedTestCase::testOperations(
699      assert(myDataView.getRank()==0);      assert(myDataView.getRank()==0);
700      assert(myDataView.noValues()==1);      assert(myDataView.noValues()==1);
701      assert(myDataView.getShape().size()==0);      assert(myDataView.getShape().size()==0);
702      assert(myDataView()==1.0);      assert(myDataView()==4.0);
703    
704      // check result value for tag "2"      // check result value for tag "2"
705      myDataView = myData.getDataPointByTag(2);      myDataView = myData.getDataPointByTag(2);
# Line 692  void DataTaggedTestCase::testOperations( Line 717  void DataTaggedTestCase::testOperations(
717      assert(myDataView.getRank()==0);      assert(myDataView.getRank()==0);
718      assert(myDataView.noValues()==1);      assert(myDataView.noValues()==1);
719      assert(myDataView.getShape().size()==0);      assert(myDataView.getShape().size()==0);
720      assert(myDataView()==1.0);      assert(myDataView()==3.0);
721    
722      // check result for default value      // check result for default value
723      myDataView = myData.getDefaultValue();      myDataView = myData.getDefaultValue();
# Line 701  void DataTaggedTestCase::testOperations( Line 726  void DataTaggedTestCase::testOperations(
726      assert(myDataView.getRank()==0);      assert(myDataView.getRank()==0);
727      assert(myDataView.noValues()==1);      assert(myDataView.noValues()==1);
728      assert(myDataView.getShape().size()==0);      assert(myDataView.getShape().size()==0);
729      assert(myDataView()==0.0);      assert(myDataView()==5.0);
730    
731      // use a non-existent tag so we get a pointer to      // use a non-existent tag so we get a pointer to
732      // the first element of the data array      // the first element of the data array
733      double* sampleData=myData.getSampleDataByTag(9);      double* sampleData=myData.getSampleDataByTag(9);
734      for (int i=0; i<myData.getLength(); i++) {      assert(sampleData[0]==5);
735        if (i<3) {      assert(sampleData[1]==4);
736          assert(sampleData[i]==i);      assert(sampleData[2]==2);
737        } else {      assert(sampleData[3]==3);
         assert(sampleData[i]==i-2);  
       }  
     }  
738    
739    }    }
740    
# Line 783  void DataTaggedTestCase::testOperations( Line 805  void DataTaggedTestCase::testOperations(
805      DataTagged myData;      DataTagged myData;
806      DataTagged right;      DataTagged right;
807    
808        // it's important that default values are different, as we need to be able to
809        // verify that the tag values in each object are being added to the correct
810        // default values - since the tag lists don't match, the default values will
811        // be used for missing tags in each object
812        myData.getDefaultValue()()=2.0;
813        right.getDefaultValue()()=3.0;
814    
815      DataArray vOne(1.0);      DataArray vOne(1.0);
816      DataArray vTwo(2.0);      DataArray vTwo(2.0);
817      myData.addTaggedValue(1,vOne.getView());      myData.addTaggedValue(1,vOne.getView());
# Line 790  void DataTaggedTestCase::testOperations( Line 819  void DataTaggedTestCase::testOperations(
819      right.addTaggedValue(2,vTwo.getView());      right.addTaggedValue(2,vTwo.getView());
820      right.addTaggedValue(3,vTwo.getView());      right.addTaggedValue(3,vTwo.getView());
821    
822        //cout << myData.toString() << endl;
823        //cout << right.toString() << endl;
824    
825      binaryOp(myData,right,multiplies<double>());      binaryOp(myData,right,multiplies<double>());
826    
827        //cout << myData.toString() << endl;
828    
829      assert(myData.getNumSamples()==1);      assert(myData.getNumSamples()==1);
830      assert(myData.getNumDPPSample()==1);      assert(myData.getNumDPPSample()==1);
831    
# Line 820  void DataTaggedTestCase::testOperations( Line 854  void DataTaggedTestCase::testOperations(
854      assert(myDataView.getRank()==0);      assert(myDataView.getRank()==0);
855      assert(myDataView.noValues()==1);      assert(myDataView.noValues()==1);
856      assert(myDataView.getShape().size()==0);      assert(myDataView.getShape().size()==0);
857      assert(myDataView()==0.0);      assert(myDataView()==3.0);
858    
859      // check result value for tag "2"      // check result value for tag "2"
860      myDataView = myData.getDataPointByTag(2);      myDataView = myData.getDataPointByTag(2);
# Line 838  void DataTaggedTestCase::testOperations( Line 872  void DataTaggedTestCase::testOperations(
872      assert(myDataView.getRank()==0);      assert(myDataView.getRank()==0);
873      assert(myDataView.noValues()==1);      assert(myDataView.noValues()==1);
874      assert(myDataView.getShape().size()==0);      assert(myDataView.getShape().size()==0);
875      assert(myDataView()==0.0);      assert(myDataView()==4.0);
876    
877      // check result for default value      // check result for default value
878      myDataView = myData.getDefaultValue();      myDataView = myData.getDefaultValue();
# Line 847  void DataTaggedTestCase::testOperations( Line 881  void DataTaggedTestCase::testOperations(
881      assert(myDataView.getRank()==0);      assert(myDataView.getRank()==0);
882      assert(myDataView.noValues()==1);      assert(myDataView.noValues()==1);
883      assert(myDataView.getShape().size()==0);      assert(myDataView.getShape().size()==0);
884      assert(myDataView()==0.0);      assert(myDataView()==6.0);
885    
886      // use a non-existent tag so we get a pointer to      // use a non-existent tag so we get a pointer to
887      // the first element of the data array      // the first element of the data array
888      double* sampleData=myData.getSampleDataByTag(9);      double* sampleData=myData.getSampleDataByTag(9);
889      for (int i=0; i<myData.getLength(); i++) {      assert(sampleData[0]==6);
890        if (i==2) {      assert(sampleData[1]==3);
891          assert(sampleData[i]==2);      assert(sampleData[2]==2);
892        } else {      assert(sampleData[3]==4);
         assert(sampleData[i]==0);  
       }  
     }  
893    
894    }    }
895    
# Line 5341  void DataTaggedTestCase::testSetSlice() Line 5372  void DataTaggedTestCase::testSetSlice()
5372    
5373    }    }
5374    
5375      {
5376    
5377        cout << "\tTest slicing DataTagged with scalar values and three *mismatched* tags." << endl;
5378    
5379        DataTagged::TagListType keys1;
5380        keys1.push_back(1);
5381        keys1.push_back(2);
5382        keys1.push_back(3);
5383    
5384        DataTagged::TagListType keys2;
5385        keys2.push_back(3);
5386        keys2.push_back(4);
5387        keys2.push_back(5);
5388    
5389        DataTagged::ValueListType values;
5390    
5391        DataArrayView::ShapeType viewShape;
5392    
5393        // default value for Data1
5394        DataArrayView::ValueType viewData1(1);
5395        viewData1[0]=0.0;
5396        DataArrayView myView1(viewData1,viewShape);
5397    
5398        // value for tag "1" for Data1
5399        DataArrayView::ValueType viewData2(1);
5400        viewData2[0]=0.0;
5401        DataArrayView myView2(viewData2,viewShape);
5402        values.push_back(myView2);
5403    
5404        // value for tag "2" for Data1
5405        DataArrayView::ValueType viewData5(1);
5406        viewData5[0]=0.0;
5407        DataArrayView myView5(viewData5,viewShape);
5408        values.push_back(myView5);
5409    
5410        // value for tag "3" for Data1
5411        DataArrayView::ValueType viewData6(1);
5412        viewData6[0]=0.0;
5413        DataArrayView myView6(viewData6,viewShape);
5414        values.push_back(myView6);
5415    
5416        DataTagged myData1(keys1,values,myView1,FunctionSpace());
5417    
5418        values.clear();
5419    
5420        // default value for Data2
5421        DataArrayView::ValueType viewData3(1);
5422        viewData3[0]=1.0;
5423        DataArrayView myView3(viewData3,viewShape);
5424    
5425        // value for tag "3" for Data2
5426        DataArrayView::ValueType viewData4(1);
5427        viewData4[0]=2.0;
5428        DataArrayView myView4(viewData4,viewShape);
5429        values.push_back(myView4);
5430    
5431        // value for tag "4" for Data2
5432        DataArrayView::ValueType viewData7(1);
5433        viewData7[0]=3.0;
5434        DataArrayView myView7(viewData7,viewShape);
5435        values.push_back(myView7);
5436    
5437        // value for tag "5" for Data2
5438        DataArrayView::ValueType viewData8(1);
5439        viewData8[0]=4.0;
5440        DataArrayView myView8(viewData8,viewShape);
5441        values.push_back(myView8);
5442    
5443        DataTagged myData2(keys2,values,myView3,FunctionSpace());
5444    
5445        //cout << myData1.toString() << endl;
5446        //cout << myData2.toString() << endl;
5447    
5448        // full slice
5449    
5450        DataArrayView::RegionType region;
5451    
5452        myData1.setSlice(&myData2, region);
5453    
5454        //cout << myData1.toString() << endl;
5455    
5456        assert(myData1.getTagLookup().size()==5);
5457    
5458        assert(myData1.getLength()==6);
5459    
5460        DataArrayView myDataView = myData1.getDefaultValue();
5461        assert(!myDataView.isEmpty());
5462        assert(myDataView.getOffset()==0);
5463        assert(myDataView.getRank()==0);
5464        assert(myDataView.noValues()==1);
5465        assert(myDataView.getShape().size()==0);
5466        assert(myDataView()==1.0);
5467    
5468        myDataView = myData1.getDataPointByTag(1);
5469        assert(!myDataView.isEmpty());
5470        assert(myDataView.getOffset()==1);
5471        assert(myDataView.getRank()==0);
5472        assert(myDataView.noValues()==1);
5473        assert(myDataView.getShape().size()==0);
5474        assert(myDataView()==1.0);
5475    
5476        myDataView = myData1.getDataPointByTag(2);
5477        assert(!myDataView.isEmpty());
5478        assert(myDataView.getOffset()==2);
5479        assert(myDataView.getRank()==0);
5480        assert(myDataView.noValues()==1);
5481        assert(myDataView.getShape().size()==0);
5482        assert(myDataView()==1.0);
5483    
5484        myDataView = myData1.getDataPointByTag(3);
5485        assert(!myDataView.isEmpty());
5486        assert(myDataView.getOffset()==3);
5487        assert(myDataView.getRank()==0);
5488        assert(myDataView.noValues()==1);
5489        assert(myDataView.getShape().size()==0);
5490        assert(myDataView()==2.0);
5491    
5492        myDataView = myData1.getDataPointByTag(4);
5493        assert(!myDataView.isEmpty());
5494        assert(myDataView.getOffset()==4);
5495        assert(myDataView.getRank()==0);
5496        assert(myDataView.noValues()==1);
5497        assert(myDataView.getShape().size()==0);
5498        assert(myDataView()==3.0);
5499    
5500        myDataView = myData1.getDataPointByTag(5);
5501        assert(!myDataView.isEmpty());
5502        assert(myDataView.getOffset()==5);
5503        assert(myDataView.getRank()==0);
5504        assert(myDataView.noValues()==1);
5505        assert(myDataView.getShape().size()==0);
5506        assert(myDataView()==4.0);
5507    
5508      }
5509    
5510  }  }
5511    
5512  TestSuite* DataTaggedTestCase::suite ()  TestSuite* DataTaggedTestCase::suite ()

Legend:
Removed from v.534  
changed lines
  Added in v.548

  ViewVC Help
Powered by ViewVC 1.1.26