/[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

revision 533 by jgs, Thu Feb 16 06:49:59 2006 UTC revision 534 by jgs, Fri Feb 17 01:03:53 2006 UTC
# Line 4738  void DataTaggedTestCase::testSetSlice() Line 4738  void DataTaggedTestCase::testSetSlice()
4738    
4739    }    }
4740    
4741      {
4742    
4743        cout << "\tTest slicing DataTagged with rank 1 values and three tags." << endl;
4744    
4745        DataTagged::TagListType keys;
4746        keys.push_back(1);
4747        keys.push_back(2);
4748        keys.push_back(3);
4749    
4750        DataTagged::ValueListType values;
4751    
4752        DataArrayView::ShapeType viewShape;
4753        viewShape.push_back(3);
4754    
4755        // default value for Data1
4756        DataArrayView::ValueType viewData1(3);
4757        for (int i=0;i<viewData1.size();i++) {
4758          viewData1[i]=0.0;
4759        }
4760        DataArrayView myView1(viewData1,viewShape);
4761    
4762        // value for tag "1" for Data1
4763        DataArrayView::ValueType viewData2(3);
4764        for (int i=0;i<viewData2.size();i++) {
4765          viewData2[i]=0.0;
4766        }
4767        DataArrayView myView2(viewData2,viewShape);
4768        values.push_back(myView2);
4769    
4770        // value for tag "2" for Data1
4771        DataArrayView::ValueType viewData3(3);
4772        for (int i=0;i<viewData3.size();i++) {
4773          viewData3[i]=0.0;
4774        }
4775        DataArrayView myView3(viewData3,viewShape);
4776        values.push_back(myView3);
4777    
4778        // value for tag "3" for Data1
4779        DataArrayView::ValueType viewData4(3);
4780        for (int i=0;i<viewData4.size();i++) {
4781          viewData4[i]=0.0;
4782        }
4783        DataArrayView myView4(viewData4,viewShape);
4784        values.push_back(myView4);
4785    
4786        DataTagged myData1(keys,values,myView1,FunctionSpace());
4787    
4788        values.clear();
4789    
4790        // default value for Data2
4791        DataArrayView::ValueType viewData5(3);
4792        for (int i=0;i<viewData5.size();i++) {
4793          viewData5[i]=1.0;
4794        }
4795        DataArrayView myView5(viewData5,viewShape);
4796    
4797        // value for tag "1" for Data2
4798        DataArrayView::ValueType viewData6(3);
4799        for (int i=0;i<viewData6.size();i++) {
4800          viewData6[i]=2.0;
4801        }
4802        DataArrayView myView6(viewData6,viewShape);
4803        values.push_back(myView6);
4804    
4805        // value for tag "2" for Data2
4806        DataArrayView::ValueType viewData7(3);
4807        for (int i=0;i<viewData7.size();i++) {
4808          viewData7[i]=3.0;
4809        }
4810        DataArrayView myView7(viewData7,viewShape);
4811        values.push_back(myView7);
4812    
4813        // value for tag "3" for Data2
4814        DataArrayView::ValueType viewData8(3);
4815        for (int i=0;i<viewData8.size();i++) {
4816          viewData8[i]=4.0;
4817        }
4818        DataArrayView myView8(viewData8,viewShape);
4819        values.push_back(myView8);
4820    
4821        DataTagged myData2(keys,values,myView5,FunctionSpace());
4822    
4823        // full slice
4824    
4825        std::pair<int, int> region_element;
4826        region_element.first=0;
4827        region_element.second=3;
4828        DataArrayView::RegionType region;
4829        region.push_back(region_element);
4830    
4831        myData1.setSlice(&myData2, region);
4832    
4833        //cout << myData1.toString() << endl;
4834    
4835        assert(myData1.getTagLookup().size()==3);
4836    
4837        assert(myData1.getLength()==12);
4838    
4839        DataArrayView myDataView = myData1.getDefaultValue();
4840        assert(!myDataView.isEmpty());
4841        assert(myDataView.getOffset()==0);
4842        assert(myDataView.getRank()==1);
4843        assert(myDataView.noValues()==3);
4844        assert(myDataView.getShape().size()==1);
4845        assert(myDataView(0)==1.0);
4846        assert(myDataView(1)==1.0);
4847        assert(myDataView(2)==1.0);
4848    
4849        myDataView = myData1.getDataPointByTag(1);
4850        assert(!myDataView.isEmpty());
4851        assert(myDataView.getOffset()==3);
4852        assert(myDataView.getRank()==1);
4853        assert(myDataView.noValues()==3);
4854        assert(myDataView.getShape().size()==1);
4855        assert(myDataView(0)==2.0);
4856        assert(myDataView(1)==2.0);
4857        assert(myDataView(2)==2.0);
4858    
4859        myDataView = myData1.getDataPointByTag(2);
4860        assert(!myDataView.isEmpty());
4861        assert(myDataView.getOffset()==6);
4862        assert(myDataView.getRank()==1);
4863        assert(myDataView.noValues()==3);
4864        assert(myDataView.getShape().size()==1);
4865        assert(myDataView(0)==3.0);
4866        assert(myDataView(1)==3.0);
4867        assert(myDataView(2)==3.0);
4868    
4869        myDataView = myData1.getDataPointByTag(3);
4870        assert(!myDataView.isEmpty());
4871        assert(myDataView.getOffset()==9);
4872        assert(myDataView.getRank()==1);
4873        assert(myDataView.noValues()==3);
4874        assert(myDataView.getShape().size()==1);
4875        assert(myDataView(0)==4.0);
4876        assert(myDataView(1)==4.0);
4877        assert(myDataView(2)==4.0);
4878    
4879        // rank 1 slice
4880    
4881        viewShape.clear();
4882        viewShape.push_back(1);
4883    
4884        DataArrayView::ValueType viewData9(1);
4885        viewData9[0]=6.0;
4886        DataArrayView myView9(viewData9,viewShape);
4887    
4888        values.clear();
4889    
4890        DataArrayView::ValueType viewData10(1);
4891        viewData10[0]=7.0;
4892        DataArrayView myView10(viewData10,viewShape);
4893        values.push_back(myView10);
4894    
4895        DataArrayView::ValueType viewData11(1);
4896        viewData11[0]=8.0;
4897        DataArrayView myView11(viewData11,viewShape);
4898        values.push_back(myView11);
4899    
4900        DataArrayView::ValueType viewData12(1);
4901        viewData12[0]=9.0;
4902        DataArrayView myView12(viewData12,viewShape);
4903        values.push_back(myView12);
4904    
4905        DataTagged myData3(keys,values,myView9,FunctionSpace());
4906    
4907        region.clear();
4908        region_element.first=1;
4909        region_element.second=2;
4910        region.push_back(region_element);
4911    
4912        myData1.setSlice(&myData3, region);
4913    
4914        //cout << myData1.toString() << endl;
4915    
4916        assert(myData1.getTagLookup().size()==3);
4917    
4918        assert(myData1.getLength()==12);
4919    
4920        myDataView = myData1.getDefaultValue();
4921        assert(!myDataView.isEmpty());
4922        assert(myDataView.getOffset()==0);
4923        assert(myDataView.getRank()==1);
4924        assert(myDataView.noValues()==3);
4925        assert(myDataView.getShape().size()==1);
4926        assert(myDataView(0)==1.0);
4927        assert(myDataView(1)==6.0);
4928        assert(myDataView(2)==1.0);
4929    
4930        myDataView = myData1.getDataPointByTag(1);
4931        assert(!myDataView.isEmpty());
4932        assert(myDataView.getOffset()==3);
4933        assert(myDataView.getRank()==1);
4934        assert(myDataView.noValues()==3);
4935        assert(myDataView.getShape().size()==1);
4936        assert(myDataView(0)==2.0);
4937        assert(myDataView(1)==7.0);
4938        assert(myDataView(2)==2.0);
4939    
4940        myDataView = myData1.getDataPointByTag(2);
4941        assert(!myDataView.isEmpty());
4942        assert(myDataView.getOffset()==6);
4943        assert(myDataView.getRank()==1);
4944        assert(myDataView.noValues()==3);
4945        assert(myDataView.getShape().size()==1);
4946        assert(myDataView(0)==3.0);
4947        assert(myDataView(1)==8.0);
4948        assert(myDataView(2)==3.0);
4949    
4950        myDataView = myData1.getDataPointByTag(3);
4951        assert(!myDataView.isEmpty());
4952        assert(myDataView.getOffset()==9);
4953        assert(myDataView.getRank()==1);
4954        assert(myDataView.noValues()==3);
4955        assert(myDataView.getShape().size()==1);
4956        assert(myDataView(0)==4.0);
4957        assert(myDataView(1)==9.0);
4958        assert(myDataView(2)==4.0);
4959    
4960        // scalar slice
4961    
4962        viewShape.clear();
4963    
4964        DataArrayView::ValueType viewData13(1);
4965        viewData13[0]=10.0;
4966        DataArrayView myView13(viewData13,viewShape);
4967    
4968        values.clear();
4969    
4970        DataArrayView::ValueType viewData14(1);
4971        viewData14[0]=11.0;
4972        DataArrayView myView14(viewData14,viewShape);
4973        values.push_back(myView14);
4974    
4975        DataArrayView::ValueType viewData15(2);
4976        viewData15[0]=12.0;
4977        DataArrayView myView15(viewData15,viewShape);
4978        values.push_back(myView15);
4979    
4980        DataArrayView::ValueType viewData16(3);
4981        viewData16[0]=13.0;
4982        DataArrayView myView16(viewData16,viewShape);
4983        values.push_back(myView16);
4984    
4985        DataTagged myData4(keys,values,myView13,FunctionSpace());
4986    
4987        region.clear();
4988        region_element.first=0;
4989        region_element.second=0;
4990        region.push_back(region_element);
4991    
4992        myData1.setSlice(&myData4, region);
4993    
4994        //cout << myData1.toString() << endl;
4995    
4996        myDataView = myData1.getDefaultValue();
4997        assert(!myDataView.isEmpty());
4998        assert(myDataView.getOffset()==0);
4999        assert(myDataView.getRank()==1);
5000        assert(myDataView.noValues()==3);
5001        assert(myDataView.getShape().size()==1);
5002        assert(myDataView(0)==10.0);
5003        assert(myDataView(1)==6.0);
5004        assert(myDataView(2)==1.0);
5005    
5006        myDataView = myData1.getDataPointByTag(1);
5007        assert(!myDataView.isEmpty());
5008        assert(myDataView.getOffset()==3);
5009        assert(myDataView.getRank()==1);
5010        assert(myDataView.noValues()==3);
5011        assert(myDataView.getShape().size()==1);
5012        assert(myDataView(0)==11.0);
5013        assert(myDataView(1)==7.0);
5014        assert(myDataView(2)==2.0);
5015    
5016        myDataView = myData1.getDataPointByTag(2);
5017        assert(!myDataView.isEmpty());
5018        assert(myDataView.getOffset()==6);
5019        assert(myDataView.getRank()==1);
5020        assert(myDataView.noValues()==3);
5021        assert(myDataView.getShape().size()==1);
5022        assert(myDataView(0)==12.0);
5023        assert(myDataView(1)==8.0);
5024        assert(myDataView(2)==3.0);
5025    
5026        myDataView = myData1.getDataPointByTag(3);
5027        assert(!myDataView.isEmpty());
5028        assert(myDataView.getOffset()==9);
5029        assert(myDataView.getRank()==1);
5030        assert(myDataView.noValues()==3);
5031        assert(myDataView.getShape().size()==1);
5032        assert(myDataView(0)==13.0);
5033        assert(myDataView(1)==9.0);
5034        assert(myDataView(2)==4.0);
5035    
5036      }
5037    
5038      {
5039    
5040        cout << "\tTest slicing DataTagged with rank 3 values and three tags." << endl;
5041    
5042        DataTagged::TagListType keys;
5043        keys.push_back(1);
5044        keys.push_back(2);
5045        keys.push_back(3);
5046    
5047        DataTagged::ValueListType values;
5048    
5049        DataArrayView::ShapeType viewShape;
5050        viewShape.push_back(3);
5051        viewShape.push_back(3);
5052        viewShape.push_back(3);
5053    
5054        // default value for Data1
5055        DataArrayView::ValueType viewData1(27);
5056        for (int i=0;i<viewData1.size();i++) {
5057          viewData1[i]=0.0;
5058        }
5059        DataArrayView myView1(viewData1,viewShape);
5060    
5061        // value for tag "1" for Data1
5062        DataArrayView::ValueType viewData2(27);
5063        for (int i=0;i<viewData2.size();i++) {
5064          viewData2[i]=0.0;
5065        }
5066        DataArrayView myView2(viewData2,viewShape);
5067        values.push_back(myView2);
5068    
5069        // value for tag "2" for Data1
5070        DataArrayView::ValueType viewData3(27);
5071        for (int i=0;i<viewData3.size();i++) {
5072          viewData3[i]=0.0;
5073        }
5074        DataArrayView myView3(viewData3,viewShape);
5075        values.push_back(myView3);
5076    
5077        // value for tag "3" for Data1
5078        DataArrayView::ValueType viewData4(27);
5079        for (int i=0;i<viewData4.size();i++) {
5080          viewData4[i]=0.0;
5081        }
5082        DataArrayView myView4(viewData4,viewShape);
5083        values.push_back(myView4);
5084    
5085        DataTagged myData1(keys,values,myView1,FunctionSpace());
5086    
5087        values.clear();
5088    
5089        // default value for Data2
5090        DataArrayView::ValueType viewData5(27);
5091        for (int i=0;i<viewData5.size();i++) {
5092          viewData5[i]=1.0;
5093        }
5094        DataArrayView myView5(viewData5,viewShape);
5095    
5096        // value for tag "1" for Data2
5097        DataArrayView::ValueType viewData6(27);
5098        for (int i=0;i<viewData6.size();i++) {
5099          viewData6[i]=2.0;
5100        }
5101        DataArrayView myView6(viewData6,viewShape);
5102        values.push_back(myView6);
5103    
5104        // value for tag "2" for Data2
5105        DataArrayView::ValueType viewData7(27);
5106        for (int i=0;i<viewData7.size();i++) {
5107          viewData7[i]=3.0;
5108        }
5109        DataArrayView myView7(viewData7,viewShape);
5110        values.push_back(myView7);
5111    
5112        // value for tag "3" for Data2
5113        DataArrayView::ValueType viewData8(27);
5114        for (int i=0;i<viewData8.size();i++) {
5115          viewData8[i]=4.0;
5116        }
5117        DataArrayView myView8(viewData8,viewShape);
5118        values.push_back(myView8);
5119    
5120        DataTagged myData2(keys,values,myView5,FunctionSpace());
5121    
5122        // full slice
5123    
5124        std::pair<int, int> region_element;
5125        region_element.first=0;
5126        region_element.second=3;
5127        DataArrayView::RegionType region;
5128        region.push_back(region_element);
5129        region.push_back(region_element);
5130        region.push_back(region_element);
5131    
5132        myData1.setSlice(&myData2, region);
5133    
5134        //cout << myData1.toString() << endl;
5135    
5136        assert(myData1.getTagLookup().size()==3);
5137    
5138        assert(myData1.getLength()==108);
5139    
5140        DataArrayView myDataView = myData1.getDefaultValue();
5141        assert(!myDataView.isEmpty());
5142        assert(myDataView.getOffset()==0);
5143        assert(myDataView.getRank()==3);
5144        assert(myDataView.noValues()==27);
5145        assert(myDataView.getShape().size()==3);
5146        assert(myDataView(0,0,0)==1.0);
5147        assert(myDataView(1,0,0)==1.0);
5148        assert(myDataView(2,0,0)==1.0);
5149    
5150        myDataView = myData1.getDataPointByTag(1);
5151        assert(!myDataView.isEmpty());
5152        assert(myDataView.getOffset()==27);
5153        assert(myDataView.getRank()==3);
5154        assert(myDataView.noValues()==27);
5155        assert(myDataView.getShape().size()==3);
5156        assert(myDataView(0,0,0)==2.0);
5157        assert(myDataView(1,0,0)==2.0);
5158        assert(myDataView(2,0,0)==2.0);
5159    
5160        myDataView = myData1.getDataPointByTag(2);
5161        assert(!myDataView.isEmpty());
5162        assert(myDataView.getOffset()==54);
5163        assert(myDataView.getRank()==3);
5164        assert(myDataView.noValues()==27);
5165        assert(myDataView.getShape().size()==3);
5166        assert(myDataView(0,0,0)==3.0);
5167        assert(myDataView(1,0,0)==3.0);
5168        assert(myDataView(2,0,0)==3.0);
5169    
5170        myDataView = myData1.getDataPointByTag(3);
5171        assert(!myDataView.isEmpty());
5172        assert(myDataView.getOffset()==81);
5173        assert(myDataView.getRank()==3);
5174        assert(myDataView.noValues()==27);
5175        assert(myDataView.getShape().size()==3);
5176        assert(myDataView(0,0,0)==4.0);
5177        assert(myDataView(1,0,0)==4.0);
5178        assert(myDataView(2,0,0)==4.0);
5179    
5180        // rank 1 slice
5181    
5182        viewShape.clear();
5183        viewShape.push_back(3);
5184    
5185        DataArrayView::ValueType viewData9(3);
5186        for (int i=0;i<viewData9.size();i++) {
5187          viewData9[i]=6.0;
5188        }
5189        DataArrayView myView9(viewData9,viewShape);
5190    
5191        values.clear();
5192    
5193        DataArrayView::ValueType viewData10(3);
5194        for (int i=0;i<viewData10.size();i++) {
5195          viewData10[i]=7.0;
5196        }
5197        DataArrayView myView10(viewData10,viewShape);
5198        values.push_back(myView10);
5199    
5200        DataArrayView::ValueType viewData11(3);
5201        for (int i=0;i<viewData11.size();i++) {
5202          viewData11[i]=8.0;
5203        }
5204        DataArrayView myView11(viewData11,viewShape);
5205        values.push_back(myView11);
5206    
5207        DataArrayView::ValueType viewData12(3);
5208        for (int i=0;i<viewData12.size();i++) {
5209          viewData12[i]=9.0;
5210        }
5211        DataArrayView myView12(viewData12,viewShape);
5212        values.push_back(myView12);
5213    
5214        DataTagged myData3(keys,values,myView9,FunctionSpace());
5215    
5216        region.clear();
5217        region_element.first=0;
5218        region_element.second=3;
5219        region.push_back(region_element);
5220        region_element.second=0;
5221        region.push_back(region_element);
5222        region.push_back(region_element);
5223    
5224        myData1.setSlice(&myData3, region);
5225    
5226        //cout << myData1.toString() << endl;
5227    
5228        assert(myData1.getTagLookup().size()==3);
5229    
5230        assert(myData1.getLength()==108);
5231    
5232        myDataView = myData1.getDefaultValue();
5233        assert(!myDataView.isEmpty());
5234        assert(myDataView.getOffset()==0);
5235        assert(myDataView.getRank()==3);
5236        assert(myDataView.noValues()==27);
5237        assert(myDataView.getShape().size()==3);
5238        assert(myDataView(0,0,0)==6.0);
5239        assert(myDataView(1,0,0)==6.0);
5240        assert(myDataView(2,0,0)==6.0);
5241    
5242        myDataView = myData1.getDataPointByTag(1);
5243        assert(!myDataView.isEmpty());
5244        assert(myDataView.getOffset()==27);
5245        assert(myDataView.getRank()==3);
5246        assert(myDataView.noValues()==27);
5247        assert(myDataView.getShape().size()==3);
5248        assert(myDataView(0,0,0)==7.0);
5249        assert(myDataView(1,0,0)==7.0);
5250        assert(myDataView(2,0,0)==7.0);
5251    
5252        myDataView = myData1.getDataPointByTag(2);
5253        assert(!myDataView.isEmpty());
5254        assert(myDataView.getOffset()==54);
5255        assert(myDataView.getRank()==3);
5256        assert(myDataView.noValues()==27);
5257        assert(myDataView.getShape().size()==3);
5258        assert(myDataView(0,0,0)==8.0);
5259        assert(myDataView(1,0,0)==8.0);
5260        assert(myDataView(2,0,0)==8.0);
5261    
5262        myDataView = myData1.getDataPointByTag(3);
5263        assert(!myDataView.isEmpty());
5264        assert(myDataView.getOffset()==81);
5265        assert(myDataView.getRank()==3);
5266        assert(myDataView.noValues()==27);
5267        assert(myDataView.getShape().size()==3);
5268        assert(myDataView(0,0,0)==9.0);
5269        assert(myDataView(1,0,0)==9.0);
5270        assert(myDataView(2,0,0)==9.0);
5271    
5272        // scalar slice
5273    
5274        viewShape.clear();
5275    
5276        DataArrayView::ValueType viewData13(1);
5277        viewData13[0]=10.0;
5278        DataArrayView myView13(viewData13,viewShape);
5279    
5280        values.clear();
5281    
5282        DataArrayView::ValueType viewData14(1);
5283        viewData14[0]=11.0;
5284        DataArrayView myView14(viewData14,viewShape);
5285        values.push_back(myView14);
5286    
5287        DataArrayView::ValueType viewData15(2);
5288        viewData15[0]=12.0;
5289        DataArrayView myView15(viewData15,viewShape);
5290        values.push_back(myView15);
5291    
5292        DataArrayView::ValueType viewData16(3);
5293        viewData16[0]=13.0;
5294        DataArrayView myView16(viewData16,viewShape);
5295        values.push_back(myView16);
5296    
5297        DataTagged myData4(keys,values,myView13,FunctionSpace());
5298    
5299        region.clear();
5300        region_element.first=0;
5301        region_element.second=0;
5302        region.push_back(region_element);
5303        region.push_back(region_element);
5304        region.push_back(region_element);
5305    
5306        myData1.setSlice(&myData4, region);
5307    
5308        //cout << myData1.toString() << endl;
5309    
5310        myDataView = myData1.getDefaultValue();
5311        assert(!myDataView.isEmpty());
5312        assert(myDataView.getOffset()==0);
5313        assert(myDataView.getRank()==3);
5314        assert(myDataView.noValues()==27);
5315        assert(myDataView.getShape().size()==3);
5316        assert(myDataView(0,0,0)==10.0);
5317    
5318        myDataView = myData1.getDataPointByTag(1);
5319        assert(!myDataView.isEmpty());
5320        assert(myDataView.getOffset()==27);
5321        assert(myDataView.getRank()==3);
5322        assert(myDataView.noValues()==27);
5323        assert(myDataView.getShape().size()==3);
5324        assert(myDataView(0,0,0)==11.0);
5325    
5326        myDataView = myData1.getDataPointByTag(2);
5327        assert(!myDataView.isEmpty());
5328        assert(myDataView.getOffset()==54);
5329        assert(myDataView.getRank()==3);
5330        assert(myDataView.noValues()==27);
5331        assert(myDataView.getShape().size()==3);
5332        assert(myDataView(0,0,0)==12.0);
5333    
5334        myDataView = myData1.getDataPointByTag(3);
5335        assert(!myDataView.isEmpty());
5336        assert(myDataView.getOffset()==81);
5337        assert(myDataView.getRank()==3);
5338        assert(myDataView.noValues()==27);
5339        assert(myDataView.getShape().size()==3);
5340        assert(myDataView(0,0,0)==13.0);
5341    
5342      }
5343    
5344  }  }
5345    
5346  TestSuite* DataTaggedTestCase::suite ()  TestSuite* DataTaggedTestCase::suite ()

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

  ViewVC Help
Powered by ViewVC 1.1.26