/[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 533 by jgs, Thu Feb 16 06:49:59 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 4734  void DataTaggedTestCase::testSetSlice() Line 4842  void DataTaggedTestCase::testSetSlice()
4842      assert(myDataView.getRank()==0);      assert(myDataView.getRank()==0);
4843      assert(myDataView.noValues()==1);      assert(myDataView.noValues()==1);
4844      assert(myDataView.getShape().size()==0);      assert(myDataView.getShape().size()==0);
4845        assert(myDataView()==4.0);
4846    
4847      }
4848    
4849      {
4850    
4851        cout << "\tTest slicing DataTagged with rank 1 values and three tags." << endl;
4852    
4853        DataTagged::TagListType keys;
4854        keys.push_back(1);
4855        keys.push_back(2);
4856        keys.push_back(3);
4857    
4858        DataTagged::ValueListType values;
4859    
4860        DataArrayView::ShapeType viewShape;
4861        viewShape.push_back(3);
4862    
4863        // default value for Data1
4864        DataArrayView::ValueType viewData1(3);
4865        for (int i=0;i<viewData1.size();i++) {
4866          viewData1[i]=0.0;
4867        }
4868        DataArrayView myView1(viewData1,viewShape);
4869    
4870        // value for tag "1" for Data1
4871        DataArrayView::ValueType viewData2(3);
4872        for (int i=0;i<viewData2.size();i++) {
4873          viewData2[i]=0.0;
4874        }
4875        DataArrayView myView2(viewData2,viewShape);
4876        values.push_back(myView2);
4877    
4878        // value for tag "2" for Data1
4879        DataArrayView::ValueType viewData3(3);
4880        for (int i=0;i<viewData3.size();i++) {
4881          viewData3[i]=0.0;
4882        }
4883        DataArrayView myView3(viewData3,viewShape);
4884        values.push_back(myView3);
4885    
4886        // value for tag "3" for Data1
4887        DataArrayView::ValueType viewData4(3);
4888        for (int i=0;i<viewData4.size();i++) {
4889          viewData4[i]=0.0;
4890        }
4891        DataArrayView myView4(viewData4,viewShape);
4892        values.push_back(myView4);
4893    
4894        DataTagged myData1(keys,values,myView1,FunctionSpace());
4895    
4896        values.clear();
4897    
4898        // default value for Data2
4899        DataArrayView::ValueType viewData5(3);
4900        for (int i=0;i<viewData5.size();i++) {
4901          viewData5[i]=1.0;
4902        }
4903        DataArrayView myView5(viewData5,viewShape);
4904    
4905        // value for tag "1" for Data2
4906        DataArrayView::ValueType viewData6(3);
4907        for (int i=0;i<viewData6.size();i++) {
4908          viewData6[i]=2.0;
4909        }
4910        DataArrayView myView6(viewData6,viewShape);
4911        values.push_back(myView6);
4912    
4913        // value for tag "2" for Data2
4914        DataArrayView::ValueType viewData7(3);
4915        for (int i=0;i<viewData7.size();i++) {
4916          viewData7[i]=3.0;
4917        }
4918        DataArrayView myView7(viewData7,viewShape);
4919        values.push_back(myView7);
4920    
4921        // value for tag "3" for Data2
4922        DataArrayView::ValueType viewData8(3);
4923        for (int i=0;i<viewData8.size();i++) {
4924          viewData8[i]=4.0;
4925        }
4926        DataArrayView myView8(viewData8,viewShape);
4927        values.push_back(myView8);
4928    
4929        DataTagged myData2(keys,values,myView5,FunctionSpace());
4930    
4931        // full slice
4932    
4933        std::pair<int, int> region_element;
4934        region_element.first=0;
4935        region_element.second=3;
4936        DataArrayView::RegionType region;
4937        region.push_back(region_element);
4938    
4939        myData1.setSlice(&myData2, region);
4940    
4941        //cout << myData1.toString() << endl;
4942    
4943        assert(myData1.getTagLookup().size()==3);
4944    
4945        assert(myData1.getLength()==12);
4946    
4947        DataArrayView myDataView = myData1.getDefaultValue();
4948        assert(!myDataView.isEmpty());
4949        assert(myDataView.getOffset()==0);
4950        assert(myDataView.getRank()==1);
4951        assert(myDataView.noValues()==3);
4952        assert(myDataView.getShape().size()==1);
4953        assert(myDataView(0)==1.0);
4954        assert(myDataView(1)==1.0);
4955        assert(myDataView(2)==1.0);
4956    
4957        myDataView = myData1.getDataPointByTag(1);
4958        assert(!myDataView.isEmpty());
4959        assert(myDataView.getOffset()==3);
4960        assert(myDataView.getRank()==1);
4961        assert(myDataView.noValues()==3);
4962        assert(myDataView.getShape().size()==1);
4963        assert(myDataView(0)==2.0);
4964        assert(myDataView(1)==2.0);
4965        assert(myDataView(2)==2.0);
4966    
4967        myDataView = myData1.getDataPointByTag(2);
4968        assert(!myDataView.isEmpty());
4969        assert(myDataView.getOffset()==6);
4970        assert(myDataView.getRank()==1);
4971        assert(myDataView.noValues()==3);
4972        assert(myDataView.getShape().size()==1);
4973        assert(myDataView(0)==3.0);
4974        assert(myDataView(1)==3.0);
4975        assert(myDataView(2)==3.0);
4976    
4977        myDataView = myData1.getDataPointByTag(3);
4978        assert(!myDataView.isEmpty());
4979        assert(myDataView.getOffset()==9);
4980        assert(myDataView.getRank()==1);
4981        assert(myDataView.noValues()==3);
4982        assert(myDataView.getShape().size()==1);
4983        assert(myDataView(0)==4.0);
4984        assert(myDataView(1)==4.0);
4985        assert(myDataView(2)==4.0);
4986    
4987        // rank 1 slice
4988    
4989        viewShape.clear();
4990        viewShape.push_back(1);
4991    
4992        DataArrayView::ValueType viewData9(1);
4993        viewData9[0]=6.0;
4994        DataArrayView myView9(viewData9,viewShape);
4995    
4996        values.clear();
4997    
4998        DataArrayView::ValueType viewData10(1);
4999        viewData10[0]=7.0;
5000        DataArrayView myView10(viewData10,viewShape);
5001        values.push_back(myView10);
5002    
5003        DataArrayView::ValueType viewData11(1);
5004        viewData11[0]=8.0;
5005        DataArrayView myView11(viewData11,viewShape);
5006        values.push_back(myView11);
5007    
5008        DataArrayView::ValueType viewData12(1);
5009        viewData12[0]=9.0;
5010        DataArrayView myView12(viewData12,viewShape);
5011        values.push_back(myView12);
5012    
5013        DataTagged myData3(keys,values,myView9,FunctionSpace());
5014    
5015        region.clear();
5016        region_element.first=1;
5017        region_element.second=2;
5018        region.push_back(region_element);
5019    
5020        myData1.setSlice(&myData3, region);
5021    
5022        //cout << myData1.toString() << endl;
5023    
5024        assert(myData1.getTagLookup().size()==3);
5025    
5026        assert(myData1.getLength()==12);
5027    
5028        myDataView = myData1.getDefaultValue();
5029        assert(!myDataView.isEmpty());
5030        assert(myDataView.getOffset()==0);
5031        assert(myDataView.getRank()==1);
5032        assert(myDataView.noValues()==3);
5033        assert(myDataView.getShape().size()==1);
5034        assert(myDataView(0)==1.0);
5035        assert(myDataView(1)==6.0);
5036        assert(myDataView(2)==1.0);
5037    
5038        myDataView = myData1.getDataPointByTag(1);
5039        assert(!myDataView.isEmpty());
5040        assert(myDataView.getOffset()==3);
5041        assert(myDataView.getRank()==1);
5042        assert(myDataView.noValues()==3);
5043        assert(myDataView.getShape().size()==1);
5044        assert(myDataView(0)==2.0);
5045        assert(myDataView(1)==7.0);
5046        assert(myDataView(2)==2.0);
5047    
5048        myDataView = myData1.getDataPointByTag(2);
5049        assert(!myDataView.isEmpty());
5050        assert(myDataView.getOffset()==6);
5051        assert(myDataView.getRank()==1);
5052        assert(myDataView.noValues()==3);
5053        assert(myDataView.getShape().size()==1);
5054        assert(myDataView(0)==3.0);
5055        assert(myDataView(1)==8.0);
5056        assert(myDataView(2)==3.0);
5057    
5058        myDataView = myData1.getDataPointByTag(3);
5059        assert(!myDataView.isEmpty());
5060        assert(myDataView.getOffset()==9);
5061        assert(myDataView.getRank()==1);
5062        assert(myDataView.noValues()==3);
5063        assert(myDataView.getShape().size()==1);
5064        assert(myDataView(0)==4.0);
5065        assert(myDataView(1)==9.0);
5066        assert(myDataView(2)==4.0);
5067    
5068        // scalar slice
5069    
5070        viewShape.clear();
5071    
5072        DataArrayView::ValueType viewData13(1);
5073        viewData13[0]=10.0;
5074        DataArrayView myView13(viewData13,viewShape);
5075    
5076        values.clear();
5077    
5078        DataArrayView::ValueType viewData14(1);
5079        viewData14[0]=11.0;
5080        DataArrayView myView14(viewData14,viewShape);
5081        values.push_back(myView14);
5082    
5083        DataArrayView::ValueType viewData15(2);
5084        viewData15[0]=12.0;
5085        DataArrayView myView15(viewData15,viewShape);
5086        values.push_back(myView15);
5087    
5088        DataArrayView::ValueType viewData16(3);
5089        viewData16[0]=13.0;
5090        DataArrayView myView16(viewData16,viewShape);
5091        values.push_back(myView16);
5092    
5093        DataTagged myData4(keys,values,myView13,FunctionSpace());
5094    
5095        region.clear();
5096        region_element.first=0;
5097        region_element.second=0;
5098        region.push_back(region_element);
5099    
5100        myData1.setSlice(&myData4, region);
5101    
5102        //cout << myData1.toString() << endl;
5103    
5104        myDataView = myData1.getDefaultValue();
5105        assert(!myDataView.isEmpty());
5106        assert(myDataView.getOffset()==0);
5107        assert(myDataView.getRank()==1);
5108        assert(myDataView.noValues()==3);
5109        assert(myDataView.getShape().size()==1);
5110        assert(myDataView(0)==10.0);
5111        assert(myDataView(1)==6.0);
5112        assert(myDataView(2)==1.0);
5113    
5114        myDataView = myData1.getDataPointByTag(1);
5115        assert(!myDataView.isEmpty());
5116        assert(myDataView.getOffset()==3);
5117        assert(myDataView.getRank()==1);
5118        assert(myDataView.noValues()==3);
5119        assert(myDataView.getShape().size()==1);
5120        assert(myDataView(0)==11.0);
5121        assert(myDataView(1)==7.0);
5122        assert(myDataView(2)==2.0);
5123    
5124        myDataView = myData1.getDataPointByTag(2);
5125        assert(!myDataView.isEmpty());
5126        assert(myDataView.getOffset()==6);
5127        assert(myDataView.getRank()==1);
5128        assert(myDataView.noValues()==3);
5129        assert(myDataView.getShape().size()==1);
5130        assert(myDataView(0)==12.0);
5131        assert(myDataView(1)==8.0);
5132        assert(myDataView(2)==3.0);
5133    
5134        myDataView = myData1.getDataPointByTag(3);
5135        assert(!myDataView.isEmpty());
5136        assert(myDataView.getOffset()==9);
5137        assert(myDataView.getRank()==1);
5138        assert(myDataView.noValues()==3);
5139        assert(myDataView.getShape().size()==1);
5140        assert(myDataView(0)==13.0);
5141        assert(myDataView(1)==9.0);
5142        assert(myDataView(2)==4.0);
5143    
5144      }
5145    
5146      {
5147    
5148        cout << "\tTest slicing DataTagged with rank 3 values and three tags." << endl;
5149    
5150        DataTagged::TagListType keys;
5151        keys.push_back(1);
5152        keys.push_back(2);
5153        keys.push_back(3);
5154    
5155        DataTagged::ValueListType values;
5156    
5157        DataArrayView::ShapeType viewShape;
5158        viewShape.push_back(3);
5159        viewShape.push_back(3);
5160        viewShape.push_back(3);
5161    
5162        // default value for Data1
5163        DataArrayView::ValueType viewData1(27);
5164        for (int i=0;i<viewData1.size();i++) {
5165          viewData1[i]=0.0;
5166        }
5167        DataArrayView myView1(viewData1,viewShape);
5168    
5169        // value for tag "1" for Data1
5170        DataArrayView::ValueType viewData2(27);
5171        for (int i=0;i<viewData2.size();i++) {
5172          viewData2[i]=0.0;
5173        }
5174        DataArrayView myView2(viewData2,viewShape);
5175        values.push_back(myView2);
5176    
5177        // value for tag "2" for Data1
5178        DataArrayView::ValueType viewData3(27);
5179        for (int i=0;i<viewData3.size();i++) {
5180          viewData3[i]=0.0;
5181        }
5182        DataArrayView myView3(viewData3,viewShape);
5183        values.push_back(myView3);
5184    
5185        // value for tag "3" for Data1
5186        DataArrayView::ValueType viewData4(27);
5187        for (int i=0;i<viewData4.size();i++) {
5188          viewData4[i]=0.0;
5189        }
5190        DataArrayView myView4(viewData4,viewShape);
5191        values.push_back(myView4);
5192    
5193        DataTagged myData1(keys,values,myView1,FunctionSpace());
5194    
5195        values.clear();
5196    
5197        // default value for Data2
5198        DataArrayView::ValueType viewData5(27);
5199        for (int i=0;i<viewData5.size();i++) {
5200          viewData5[i]=1.0;
5201        }
5202        DataArrayView myView5(viewData5,viewShape);
5203    
5204        // value for tag "1" for Data2
5205        DataArrayView::ValueType viewData6(27);
5206        for (int i=0;i<viewData6.size();i++) {
5207          viewData6[i]=2.0;
5208        }
5209        DataArrayView myView6(viewData6,viewShape);
5210        values.push_back(myView6);
5211    
5212        // value for tag "2" for Data2
5213        DataArrayView::ValueType viewData7(27);
5214        for (int i=0;i<viewData7.size();i++) {
5215          viewData7[i]=3.0;
5216        }
5217        DataArrayView myView7(viewData7,viewShape);
5218        values.push_back(myView7);
5219    
5220        // value for tag "3" for Data2
5221        DataArrayView::ValueType viewData8(27);
5222        for (int i=0;i<viewData8.size();i++) {
5223          viewData8[i]=4.0;
5224        }
5225        DataArrayView myView8(viewData8,viewShape);
5226        values.push_back(myView8);
5227    
5228        DataTagged myData2(keys,values,myView5,FunctionSpace());
5229    
5230        // full slice
5231    
5232        std::pair<int, int> region_element;
5233        region_element.first=0;
5234        region_element.second=3;
5235        DataArrayView::RegionType region;
5236        region.push_back(region_element);
5237        region.push_back(region_element);
5238        region.push_back(region_element);
5239    
5240        myData1.setSlice(&myData2, region);
5241    
5242        //cout << myData1.toString() << endl;
5243    
5244        assert(myData1.getTagLookup().size()==3);
5245    
5246        assert(myData1.getLength()==108);
5247    
5248        DataArrayView myDataView = myData1.getDefaultValue();
5249        assert(!myDataView.isEmpty());
5250        assert(myDataView.getOffset()==0);
5251        assert(myDataView.getRank()==3);
5252        assert(myDataView.noValues()==27);
5253        assert(myDataView.getShape().size()==3);
5254        assert(myDataView(0,0,0)==1.0);
5255        assert(myDataView(1,0,0)==1.0);
5256        assert(myDataView(2,0,0)==1.0);
5257    
5258        myDataView = myData1.getDataPointByTag(1);
5259        assert(!myDataView.isEmpty());
5260        assert(myDataView.getOffset()==27);
5261        assert(myDataView.getRank()==3);
5262        assert(myDataView.noValues()==27);
5263        assert(myDataView.getShape().size()==3);
5264        assert(myDataView(0,0,0)==2.0);
5265        assert(myDataView(1,0,0)==2.0);
5266        assert(myDataView(2,0,0)==2.0);
5267    
5268        myDataView = myData1.getDataPointByTag(2);
5269        assert(!myDataView.isEmpty());
5270        assert(myDataView.getOffset()==54);
5271        assert(myDataView.getRank()==3);
5272        assert(myDataView.noValues()==27);
5273        assert(myDataView.getShape().size()==3);
5274        assert(myDataView(0,0,0)==3.0);
5275        assert(myDataView(1,0,0)==3.0);
5276        assert(myDataView(2,0,0)==3.0);
5277    
5278        myDataView = myData1.getDataPointByTag(3);
5279        assert(!myDataView.isEmpty());
5280        assert(myDataView.getOffset()==81);
5281        assert(myDataView.getRank()==3);
5282        assert(myDataView.noValues()==27);
5283        assert(myDataView.getShape().size()==3);
5284        assert(myDataView(0,0,0)==4.0);
5285        assert(myDataView(1,0,0)==4.0);
5286        assert(myDataView(2,0,0)==4.0);
5287    
5288        // rank 1 slice
5289    
5290        viewShape.clear();
5291        viewShape.push_back(3);
5292    
5293        DataArrayView::ValueType viewData9(3);
5294        for (int i=0;i<viewData9.size();i++) {
5295          viewData9[i]=6.0;
5296        }
5297        DataArrayView myView9(viewData9,viewShape);
5298    
5299        values.clear();
5300    
5301        DataArrayView::ValueType viewData10(3);
5302        for (int i=0;i<viewData10.size();i++) {
5303          viewData10[i]=7.0;
5304        }
5305        DataArrayView myView10(viewData10,viewShape);
5306        values.push_back(myView10);
5307    
5308        DataArrayView::ValueType viewData11(3);
5309        for (int i=0;i<viewData11.size();i++) {
5310          viewData11[i]=8.0;
5311        }
5312        DataArrayView myView11(viewData11,viewShape);
5313        values.push_back(myView11);
5314    
5315        DataArrayView::ValueType viewData12(3);
5316        for (int i=0;i<viewData12.size();i++) {
5317          viewData12[i]=9.0;
5318        }
5319        DataArrayView myView12(viewData12,viewShape);
5320        values.push_back(myView12);
5321    
5322        DataTagged myData3(keys,values,myView9,FunctionSpace());
5323    
5324        region.clear();
5325        region_element.first=0;
5326        region_element.second=3;
5327        region.push_back(region_element);
5328        region_element.second=0;
5329        region.push_back(region_element);
5330        region.push_back(region_element);
5331    
5332        myData1.setSlice(&myData3, region);
5333    
5334        //cout << myData1.toString() << endl;
5335    
5336        assert(myData1.getTagLookup().size()==3);
5337    
5338        assert(myData1.getLength()==108);
5339    
5340        myDataView = myData1.getDefaultValue();
5341        assert(!myDataView.isEmpty());
5342        assert(myDataView.getOffset()==0);
5343        assert(myDataView.getRank()==3);
5344        assert(myDataView.noValues()==27);
5345        assert(myDataView.getShape().size()==3);
5346        assert(myDataView(0,0,0)==6.0);
5347        assert(myDataView(1,0,0)==6.0);
5348        assert(myDataView(2,0,0)==6.0);
5349    
5350        myDataView = myData1.getDataPointByTag(1);
5351        assert(!myDataView.isEmpty());
5352        assert(myDataView.getOffset()==27);
5353        assert(myDataView.getRank()==3);
5354        assert(myDataView.noValues()==27);
5355        assert(myDataView.getShape().size()==3);
5356        assert(myDataView(0,0,0)==7.0);
5357        assert(myDataView(1,0,0)==7.0);
5358        assert(myDataView(2,0,0)==7.0);
5359    
5360        myDataView = myData1.getDataPointByTag(2);
5361        assert(!myDataView.isEmpty());
5362        assert(myDataView.getOffset()==54);
5363        assert(myDataView.getRank()==3);
5364        assert(myDataView.noValues()==27);
5365        assert(myDataView.getShape().size()==3);
5366        assert(myDataView(0,0,0)==8.0);
5367        assert(myDataView(1,0,0)==8.0);
5368        assert(myDataView(2,0,0)==8.0);
5369    
5370        myDataView = myData1.getDataPointByTag(3);
5371        assert(!myDataView.isEmpty());
5372        assert(myDataView.getOffset()==81);
5373        assert(myDataView.getRank()==3);
5374        assert(myDataView.noValues()==27);
5375        assert(myDataView.getShape().size()==3);
5376        assert(myDataView(0,0,0)==9.0);
5377        assert(myDataView(1,0,0)==9.0);
5378        assert(myDataView(2,0,0)==9.0);
5379    
5380        // scalar slice
5381    
5382        viewShape.clear();
5383    
5384        DataArrayView::ValueType viewData13(1);
5385        viewData13[0]=10.0;
5386        DataArrayView myView13(viewData13,viewShape);
5387    
5388        values.clear();
5389    
5390        DataArrayView::ValueType viewData14(1);
5391        viewData14[0]=11.0;
5392        DataArrayView myView14(viewData14,viewShape);
5393        values.push_back(myView14);
5394    
5395        DataArrayView::ValueType viewData15(2);
5396        viewData15[0]=12.0;
5397        DataArrayView myView15(viewData15,viewShape);
5398        values.push_back(myView15);
5399    
5400        DataArrayView::ValueType viewData16(3);
5401        viewData16[0]=13.0;
5402        DataArrayView myView16(viewData16,viewShape);
5403        values.push_back(myView16);
5404    
5405        DataTagged myData4(keys,values,myView13,FunctionSpace());
5406    
5407        region.clear();
5408        region_element.first=0;
5409        region_element.second=0;
5410        region.push_back(region_element);
5411        region.push_back(region_element);
5412        region.push_back(region_element);
5413    
5414        myData1.setSlice(&myData4, region);
5415    
5416        //cout << myData1.toString() << endl;
5417    
5418        myDataView = myData1.getDefaultValue();
5419        assert(!myDataView.isEmpty());
5420        assert(myDataView.getOffset()==0);
5421        assert(myDataView.getRank()==3);
5422        assert(myDataView.noValues()==27);
5423        assert(myDataView.getShape().size()==3);
5424        assert(myDataView(0,0,0)==10.0);
5425    
5426        myDataView = myData1.getDataPointByTag(1);
5427        assert(!myDataView.isEmpty());
5428        assert(myDataView.getOffset()==27);
5429        assert(myDataView.getRank()==3);
5430        assert(myDataView.noValues()==27);
5431        assert(myDataView.getShape().size()==3);
5432        assert(myDataView(0,0,0)==11.0);
5433    
5434        myDataView = myData1.getDataPointByTag(2);
5435        assert(!myDataView.isEmpty());
5436        assert(myDataView.getOffset()==54);
5437        assert(myDataView.getRank()==3);
5438        assert(myDataView.noValues()==27);
5439        assert(myDataView.getShape().size()==3);
5440        assert(myDataView(0,0,0)==12.0);
5441    
5442        myDataView = myData1.getDataPointByTag(3);
5443        assert(!myDataView.isEmpty());
5444        assert(myDataView.getOffset()==81);
5445        assert(myDataView.getRank()==3);
5446        assert(myDataView.noValues()==27);
5447        assert(myDataView.getShape().size()==3);
5448        assert(myDataView(0,0,0)==13.0);
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);      assert(myDataView()==4.0);
5584    
5585    }    }

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

  ViewVC Help
Powered by ViewVC 1.1.26