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

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

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

trunk/escript/test/DataTagged/DataTaggedTestCase.cpp revision 534 by jgs, Fri Feb 17 01:03:53 2006 UTC branches/ROBW_XPLATFORM/escript/test/DataTagged/DataTaggedTestCase.cpp revision 622 by robwdcock, Wed Mar 22 14:00:08 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 778  void DataTaggedTestCase::testOperations( Line 800  void DataTaggedTestCase::testOperations(
800    }    }
801    
802    {    {
803    
804        cout << "\tTest binaryOp multiplication of DataTagged object with a scalar." << endl;
805    
806        DataTagged myData;
807    
808        DataArray vOne(1.0);
809        DataArray vTwo(2.0);
810        myData.addTaggedValue(1,vOne.getView());
811        myData.addTaggedValue(2,vTwo.getView());
812    
813        DataArray vThree(3.0);
814        DataArrayView right=vThree.getView();
815    
816        //cout << myData.toString() << endl;
817        //cout << right.toString() << endl;
818    
819        binaryOp(myData,right,multiplies<double>());
820    
821        //cout << myData.toString() << endl;
822    
823        assert(myData.getNumSamples()==1);
824        assert(myData.getNumDPPSample()==1);
825    
826        assert(myData.validSamplePointNo(0));
827        assert(myData.validSampleNo(0));
828        assert(!myData.validSamplePointNo(1));
829        assert(!myData.validSampleNo(1));
830    
831        // data-point 0 has tag number 1 by default
832        assert(myData.getTagNumber(0)==1);
833    
834        assert(myData.isCurrentTag(1));
835        assert(myData.isCurrentTag(2));
836    
837        assert(myData.getTagLookup().size()==2);
838    
839        assert(myData.getLength()==3);
840    
841        assert(myData.getPointOffset(0,0)==1);
842    
843        // check result value for tag "1"
844        DataArrayView myDataView = myData.getDataPointByTag(1);
845        assert(!myDataView.isEmpty());
846        assert(myDataView.getOffset()==1);
847        assert(myDataView.getRank()==0);
848        assert(myDataView.noValues()==1);
849        assert(myDataView.getShape().size()==0);
850        assert(myDataView()==3.0);
851    
852        // check result value for tag "2"
853        myDataView = myData.getDataPointByTag(2);
854        assert(!myDataView.isEmpty());
855        assert(myDataView.getOffset()==2);
856        assert(myDataView.getRank()==0);
857        assert(myDataView.noValues()==1);
858        assert(myDataView.getShape().size()==0);
859        assert(myDataView()==6.0);
860    
861        // check result for default value
862        myDataView = myData.getDefaultValue();
863        assert(!myDataView.isEmpty());
864        assert(myDataView.getOffset()==0);
865        assert(myDataView.getRank()==0);
866        assert(myDataView.noValues()==1);
867        assert(myDataView.getShape().size()==0);
868        assert(myDataView()==0.0);
869    
870        // use a non-existent tag so we get a pointer to
871        // the first element of the data array
872        double* sampleData=myData.getSampleDataByTag(9);
873        assert(sampleData[0]==0);
874        assert(sampleData[1]==3);
875        assert(sampleData[2]==6);
876    
877      }
878    
879      {
880      cout << "\tTest binaryOp multiplication of two DataTagged objects with overlapping tag sets." << endl;      cout << "\tTest binaryOp multiplication of two DataTagged objects with overlapping tag sets." << endl;
881    
882      DataTagged myData;      DataTagged myData;
883      DataTagged right;      DataTagged right;
884    
885        // it's important that default values are different, as we need to be able to
886        // verify that the tag values in each object are being added to the correct
887        // default values - since the tag lists don't match, the default values will
888        // be used for missing tags in each object
889        myData.getDefaultValue()()=2.0;
890        right.getDefaultValue()()=3.0;
891    
892      DataArray vOne(1.0);      DataArray vOne(1.0);
893      DataArray vTwo(2.0);      DataArray vTwo(2.0);
894      myData.addTaggedValue(1,vOne.getView());      myData.addTaggedValue(1,vOne.getView());
# Line 790  void DataTaggedTestCase::testOperations( Line 896  void DataTaggedTestCase::testOperations(
896      right.addTaggedValue(2,vTwo.getView());      right.addTaggedValue(2,vTwo.getView());
897      right.addTaggedValue(3,vTwo.getView());      right.addTaggedValue(3,vTwo.getView());
898    
899        //cout << myData.toString() << endl;
900        //cout << right.toString() << endl;
901    
902      binaryOp(myData,right,multiplies<double>());      binaryOp(myData,right,multiplies<double>());
903    
904        //cout << myData.toString() << endl;
905    
906      assert(myData.getNumSamples()==1);      assert(myData.getNumSamples()==1);
907      assert(myData.getNumDPPSample()==1);      assert(myData.getNumDPPSample()==1);
908    
# Line 820  void DataTaggedTestCase::testOperations( Line 931  void DataTaggedTestCase::testOperations(
931      assert(myDataView.getRank()==0);      assert(myDataView.getRank()==0);
932      assert(myDataView.noValues()==1);      assert(myDataView.noValues()==1);
933      assert(myDataView.getShape().size()==0);      assert(myDataView.getShape().size()==0);
934      assert(myDataView()==0.0);      assert(myDataView()==3.0);
935    
936      // check result value for tag "2"      // check result value for tag "2"
937      myDataView = myData.getDataPointByTag(2);      myDataView = myData.getDataPointByTag(2);
# Line 838  void DataTaggedTestCase::testOperations( Line 949  void DataTaggedTestCase::testOperations(
949      assert(myDataView.getRank()==0);      assert(myDataView.getRank()==0);
950      assert(myDataView.noValues()==1);      assert(myDataView.noValues()==1);
951      assert(myDataView.getShape().size()==0);      assert(myDataView.getShape().size()==0);
952      assert(myDataView()==0.0);      assert(myDataView()==4.0);
953    
954      // check result for default value      // check result for default value
955      myDataView = myData.getDefaultValue();      myDataView = myData.getDefaultValue();
# Line 847  void DataTaggedTestCase::testOperations( Line 958  void DataTaggedTestCase::testOperations(
958      assert(myDataView.getRank()==0);      assert(myDataView.getRank()==0);
959      assert(myDataView.noValues()==1);      assert(myDataView.noValues()==1);
960      assert(myDataView.getShape().size()==0);      assert(myDataView.getShape().size()==0);
961      assert(myDataView()==0.0);      assert(myDataView()==6.0);
962    
963      // use a non-existent tag so we get a pointer to      // use a non-existent tag so we get a pointer to
964      // the first element of the data array      // the first element of the data array
965      double* sampleData=myData.getSampleDataByTag(9);      double* sampleData=myData.getSampleDataByTag(9);
966      for (int i=0; i<myData.getLength(); i++) {      assert(sampleData[0]==6);
967        if (i==2) {      assert(sampleData[1]==3);
968          assert(sampleData[i]==2);      assert(sampleData[2]==2);
969        } else {      assert(sampleData[3]==4);
         assert(sampleData[i]==0);  
       }  
     }  
970    
971    }    }
972    
# Line 5341  void DataTaggedTestCase::testSetSlice() Line 5449  void DataTaggedTestCase::testSetSlice()
5449    
5450    }    }
5451    
5452      {
5453    
5454        cout << "\tTest slicing DataTagged with scalar values and three *mismatched* tags." << endl;
5455    
5456        DataTagged::TagListType keys1;
5457        keys1.push_back(1);
5458        keys1.push_back(2);
5459        keys1.push_back(3);
5460    
5461        DataTagged::TagListType keys2;
5462        keys2.push_back(3);
5463        keys2.push_back(4);
5464        keys2.push_back(5);
5465    
5466        DataTagged::ValueListType values;
5467    
5468        DataArrayView::ShapeType viewShape;
5469    
5470        // default value for Data1
5471        DataArrayView::ValueType viewData1(1);
5472        viewData1[0]=0.0;
5473        DataArrayView myView1(viewData1,viewShape);
5474    
5475        // value for tag "1" for Data1
5476        DataArrayView::ValueType viewData2(1);
5477        viewData2[0]=0.0;
5478        DataArrayView myView2(viewData2,viewShape);
5479        values.push_back(myView2);
5480    
5481        // value for tag "2" for Data1
5482        DataArrayView::ValueType viewData5(1);
5483        viewData5[0]=0.0;
5484        DataArrayView myView5(viewData5,viewShape);
5485        values.push_back(myView5);
5486    
5487        // value for tag "3" for Data1
5488        DataArrayView::ValueType viewData6(1);
5489        viewData6[0]=0.0;
5490        DataArrayView myView6(viewData6,viewShape);
5491        values.push_back(myView6);
5492    
5493        DataTagged myData1(keys1,values,myView1,FunctionSpace());
5494    
5495        values.clear();
5496    
5497        // default value for Data2
5498        DataArrayView::ValueType viewData3(1);
5499        viewData3[0]=1.0;
5500        DataArrayView myView3(viewData3,viewShape);
5501    
5502        // value for tag "3" for Data2
5503        DataArrayView::ValueType viewData4(1);
5504        viewData4[0]=2.0;
5505        DataArrayView myView4(viewData4,viewShape);
5506        values.push_back(myView4);
5507    
5508        // value for tag "4" for Data2
5509        DataArrayView::ValueType viewData7(1);
5510        viewData7[0]=3.0;
5511        DataArrayView myView7(viewData7,viewShape);
5512        values.push_back(myView7);
5513    
5514        // value for tag "5" for Data2
5515        DataArrayView::ValueType viewData8(1);
5516        viewData8[0]=4.0;
5517        DataArrayView myView8(viewData8,viewShape);
5518        values.push_back(myView8);
5519    
5520        DataTagged myData2(keys2,values,myView3,FunctionSpace());
5521    
5522        //cout << myData1.toString() << endl;
5523        //cout << myData2.toString() << endl;
5524    
5525        // full slice
5526    
5527        DataArrayView::RegionType region;
5528    
5529        myData1.setSlice(&myData2, region);
5530    
5531        //cout << myData1.toString() << endl;
5532    
5533        assert(myData1.getTagLookup().size()==5);
5534    
5535        assert(myData1.getLength()==6);
5536    
5537        DataArrayView myDataView = myData1.getDefaultValue();
5538        assert(!myDataView.isEmpty());
5539        assert(myDataView.getOffset()==0);
5540        assert(myDataView.getRank()==0);
5541        assert(myDataView.noValues()==1);
5542        assert(myDataView.getShape().size()==0);
5543        assert(myDataView()==1.0);
5544    
5545        myDataView = myData1.getDataPointByTag(1);
5546        assert(!myDataView.isEmpty());
5547        assert(myDataView.getOffset()==1);
5548        assert(myDataView.getRank()==0);
5549        assert(myDataView.noValues()==1);
5550        assert(myDataView.getShape().size()==0);
5551        assert(myDataView()==1.0);
5552    
5553        myDataView = myData1.getDataPointByTag(2);
5554        assert(!myDataView.isEmpty());
5555        assert(myDataView.getOffset()==2);
5556        assert(myDataView.getRank()==0);
5557        assert(myDataView.noValues()==1);
5558        assert(myDataView.getShape().size()==0);
5559        assert(myDataView()==1.0);
5560    
5561        myDataView = myData1.getDataPointByTag(3);
5562        assert(!myDataView.isEmpty());
5563        assert(myDataView.getOffset()==3);
5564        assert(myDataView.getRank()==0);
5565        assert(myDataView.noValues()==1);
5566        assert(myDataView.getShape().size()==0);
5567        assert(myDataView()==2.0);
5568    
5569        myDataView = myData1.getDataPointByTag(4);
5570        assert(!myDataView.isEmpty());
5571        assert(myDataView.getOffset()==4);
5572        assert(myDataView.getRank()==0);
5573        assert(myDataView.noValues()==1);
5574        assert(myDataView.getShape().size()==0);
5575        assert(myDataView()==3.0);
5576    
5577        myDataView = myData1.getDataPointByTag(5);
5578        assert(!myDataView.isEmpty());
5579        assert(myDataView.getOffset()==5);
5580        assert(myDataView.getRank()==0);
5581        assert(myDataView.noValues()==1);
5582        assert(myDataView.getShape().size()==0);
5583        assert(myDataView()==4.0);
5584    
5585      }
5586    
5587  }  }
5588    
5589  TestSuite* DataTaggedTestCase::suite ()  TestSuite* DataTaggedTestCase::suite ()

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

  ViewVC Help
Powered by ViewVC 1.1.26