/[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 532 by jgs, Wed Feb 15 01:25:57 2006 UTC revision 533 by jgs, Thu Feb 16 06:49:59 2006 UTC
# Line 4184  void DataTaggedTestCase::testSetSlice() Line 4184  void DataTaggedTestCase::testSetSlice()
4184    
4185    }    }
4186    
4187      {
4188    
4189        cout << "\tTest slicing DataTagged with scalar values and one tag." << endl;
4190    
4191        DataTagged::TagListType keys;
4192        keys.push_back(1);
4193    
4194        DataTagged::ValueListType values;
4195    
4196        DataArrayView::ShapeType viewShape;
4197    
4198        // default value for Data1
4199        DataArrayView::ValueType viewData1(1);
4200        viewData1[0]=0.0;
4201        DataArrayView myView1(viewData1,viewShape);
4202    
4203        // value for tag "1" for Data1
4204        DataArrayView::ValueType viewData2(1);
4205        viewData2[0]=0.0;
4206        DataArrayView myView2(viewData2,viewShape);
4207        values.push_back(myView2);
4208    
4209        DataTagged myData1(keys,values,myView1,FunctionSpace());
4210    
4211        values.clear();
4212    
4213        // default value for Data2
4214        DataArrayView::ValueType viewData3(1);
4215        viewData3[0]=1.0;
4216        DataArrayView myView3(viewData3,viewShape);
4217    
4218        // value for tag "1" for Data2
4219        DataArrayView::ValueType viewData4(1);
4220        viewData4[0]=2.0;
4221        DataArrayView myView4(viewData4,viewShape);
4222        values.push_back(myView4);
4223    
4224        DataTagged myData2(keys,values,myView3,FunctionSpace());
4225    
4226        // full slice
4227    
4228        DataArrayView::RegionType region;
4229    
4230        myData1.setSlice(&myData2, region);
4231    
4232        //cout << myData1.toString() << endl;
4233    
4234        assert(myData1.getTagLookup().size()==1);
4235    
4236        assert(myData1.getLength()==2);
4237    
4238        DataArrayView myDataView = myData1.getDefaultValue();
4239        assert(!myDataView.isEmpty());
4240        assert(myDataView.getOffset()==0);
4241        assert(myDataView.getRank()==0);
4242        assert(myDataView.noValues()==1);
4243        assert(myDataView.getShape().size()==0);
4244        assert(myDataView()==1.0);
4245    
4246        myDataView = myData1.getDataPointByTag(1);
4247        assert(!myDataView.isEmpty());
4248        assert(myDataView.getOffset()==1);
4249        assert(myDataView.getRank()==0);
4250        assert(myDataView.noValues()==1);
4251        assert(myDataView.getShape().size()==0);
4252        assert(myDataView()==2.0);
4253    
4254      }
4255    
4256      {
4257    
4258        cout << "\tTest slicing DataTagged with rank 1 values and one tag." << endl;
4259    
4260        DataTagged::TagListType keys;
4261        keys.push_back(1);
4262    
4263        DataTagged::ValueListType values;
4264    
4265        DataArrayView::ShapeType viewShape;
4266        viewShape.push_back(3);
4267    
4268        // default value for Data1
4269        DataArrayView::ValueType viewData1(3);
4270        for (int i=0;i<viewData1.size();i++) {
4271          viewData1[i]=0.0;
4272        }
4273        DataArrayView myView1(viewData1,viewShape);
4274    
4275        // value for tag "1" for Data1
4276        DataArrayView::ValueType viewData2(3);
4277        for (int i=0;i<viewData2.size();i++) {
4278          viewData2[i]=0.0;
4279        }
4280        DataArrayView myView2(viewData2,viewShape);
4281        values.push_back(myView2);
4282    
4283        DataTagged myData1(keys,values,myView1,FunctionSpace());
4284    
4285        values.clear();
4286    
4287        // default value for Data2
4288        DataArrayView::ValueType viewData3(3);
4289        for (int i=0;i<viewData3.size();i++) {
4290          viewData3[i]=1.0;
4291        }
4292        DataArrayView myView3(viewData3,viewShape);
4293    
4294        // value for tag "1" for Data2
4295        DataArrayView::ValueType viewData4(3);
4296        for (int i=0;i<viewData4.size();i++) {
4297          viewData4[i]=2.0;
4298        }
4299        DataArrayView myView4(viewData4,viewShape);
4300        values.push_back(myView4);
4301    
4302        DataTagged myData2(keys,values,myView3,FunctionSpace());
4303    
4304        // full slice
4305    
4306        std::pair<int, int> region_element;
4307        region_element.first=0;
4308        region_element.second=3;
4309        DataArrayView::RegionType region;
4310        region.push_back(region_element);
4311    
4312        myData1.setSlice(&myData2, region);
4313    
4314        //cout << myData1.toString() << endl;
4315    
4316        assert(myData1.getTagLookup().size()==1);
4317    
4318        assert(myData1.getLength()==6);
4319    
4320        DataArrayView myDataView = myData1.getDefaultValue();
4321        assert(!myDataView.isEmpty());
4322        assert(myDataView.getOffset()==0);
4323        assert(myDataView.getRank()==1);
4324        assert(myDataView.noValues()==3);
4325        assert(myDataView.getShape().size()==1);
4326        assert(myDataView(0)==1.0);
4327        assert(myDataView(1)==1.0);
4328        assert(myDataView(2)==1.0);
4329    
4330        myDataView = myData1.getDataPointByTag(1);
4331        assert(!myDataView.isEmpty());
4332        assert(myDataView.getOffset()==3);
4333        assert(myDataView.getRank()==1);
4334        assert(myDataView.noValues()==3);
4335        assert(myDataView.getShape().size()==1);
4336        assert(myDataView(0)==2.0);
4337        assert(myDataView(1)==2.0);
4338        assert(myDataView(2)==2.0);
4339    
4340        // rank 1 slice
4341    
4342        viewShape.clear();
4343        viewShape.push_back(1);
4344    
4345        DataArrayView::ValueType viewData5(1);
4346        viewData5[0]=3.0;
4347        DataArrayView myView5(viewData5,viewShape);
4348    
4349        values.clear();
4350    
4351        DataArrayView::ValueType viewData6(1);
4352        viewData6[0]=4.0;
4353        DataArrayView myView6(viewData6,viewShape);
4354        values.push_back(myView6);
4355    
4356        DataTagged myData3(keys,values,myView5,FunctionSpace());
4357    
4358        region.clear();
4359        region_element.first=1;
4360        region_element.second=2;
4361        region.push_back(region_element);
4362    
4363        myData1.setSlice(&myData3, region);
4364    
4365        //cout << myData1.toString() << endl;
4366    
4367        assert(myData1.getTagLookup().size()==1);
4368    
4369        assert(myData1.getLength()==6);
4370    
4371        myDataView = myData1.getDefaultValue();
4372        assert(!myDataView.isEmpty());
4373        assert(myDataView.getOffset()==0);
4374        assert(myDataView.getRank()==1);
4375        assert(myDataView.noValues()==3);
4376        assert(myDataView.getShape().size()==1);
4377        assert(myDataView(0)==1.0);
4378        assert(myDataView(1)==3.0);
4379        assert(myDataView(2)==1.0);
4380    
4381        myDataView = myData1.getDataPointByTag(1);
4382        assert(!myDataView.isEmpty());
4383        assert(myDataView.getOffset()==3);
4384        assert(myDataView.getRank()==1);
4385        assert(myDataView.noValues()==3);
4386        assert(myDataView.getShape().size()==1);
4387        assert(myDataView(0)==2.0);
4388        assert(myDataView(1)==4.0);
4389        assert(myDataView(2)==2.0);
4390    
4391        // scalar slice
4392    
4393        viewShape.clear();
4394    
4395        DataArrayView::ValueType viewData7(1);
4396        viewData7[0]=5.0;
4397        DataArrayView myView7(viewData7,viewShape);
4398    
4399        values.clear();
4400    
4401        DataArrayView::ValueType viewData8(1);
4402        viewData8[0]=6.0;
4403        DataArrayView myView8(viewData8,viewShape);
4404        values.push_back(myView8);
4405    
4406        DataTagged myData4(keys,values,myView7,FunctionSpace());
4407    
4408        region.clear();
4409        region_element.first=0;
4410        region_element.second=0;
4411        region.push_back(region_element);
4412    
4413        myData1.setSlice(&myData4, region);
4414    
4415        //cout << myData1.toString() << endl;
4416    
4417        myDataView = myData1.getDefaultValue();
4418        assert(!myDataView.isEmpty());
4419        assert(myDataView.getOffset()==0);
4420        assert(myDataView.getRank()==1);
4421        assert(myDataView.noValues()==3);
4422        assert(myDataView.getShape().size()==1);
4423        assert(myDataView(0)==5.0);
4424        assert(myDataView(1)==3.0);
4425        assert(myDataView(2)==1.0);
4426    
4427        myDataView = myData1.getDataPointByTag(1);
4428        assert(!myDataView.isEmpty());
4429        assert(myDataView.getOffset()==3);
4430        assert(myDataView.getRank()==1);
4431        assert(myDataView.noValues()==3);
4432        assert(myDataView.getShape().size()==1);
4433        assert(myDataView(0)==6.0);
4434        assert(myDataView(1)==4.0);
4435        assert(myDataView(2)==2.0);
4436    
4437      }
4438    
4439      {
4440    
4441        cout << "\tTest slicing DataTagged with rank 3 values and one tag." << endl;
4442    
4443        DataTagged::TagListType keys;
4444        keys.push_back(1);
4445    
4446        DataTagged::ValueListType values;
4447    
4448        DataArrayView::ShapeType viewShape;
4449        viewShape.push_back(3);
4450        viewShape.push_back(3);
4451        viewShape.push_back(3);
4452    
4453        // default value for Data1
4454        DataArrayView::ValueType viewData1(27);
4455        for (int i=0;i<viewData1.size();i++) {
4456          viewData1[i]=0.0;
4457        }
4458        DataArrayView myView1(viewData1,viewShape);
4459    
4460        // value for tag "1" for Data1
4461        DataArrayView::ValueType viewData2(27);
4462        for (int i=0;i<viewData2.size();i++) {
4463          viewData2[i]=0.0;
4464        }
4465        DataArrayView myView2(viewData2,viewShape);
4466        values.push_back(myView2);
4467    
4468        DataTagged myData1(keys,values,myView1,FunctionSpace());
4469    
4470        values.clear();
4471    
4472        // default value for Data2
4473        DataArrayView::ValueType viewData3(27);
4474        for (int i=0;i<viewData3.size();i++) {
4475          viewData3[i]=1.0;
4476        }
4477        DataArrayView myView3(viewData3,viewShape);
4478    
4479        // value for tag "1" for Data2
4480        DataArrayView::ValueType viewData4(27);
4481        for (int i=0;i<viewData4.size();i++) {
4482          viewData4[i]=2.0;
4483        }
4484        DataArrayView myView4(viewData4,viewShape);
4485        values.push_back(myView4);
4486    
4487        DataTagged myData2(keys,values,myView3,FunctionSpace());
4488    
4489        // full slice
4490    
4491        std::pair<int, int> region_element;
4492        region_element.first=0;
4493        region_element.second=3;
4494        DataArrayView::RegionType region;
4495        region.push_back(region_element);
4496        region.push_back(region_element);
4497        region.push_back(region_element);
4498    
4499        myData1.setSlice(&myData2, region);
4500    
4501        //cout << myData1.toString() << endl;
4502    
4503        assert(myData1.getTagLookup().size()==1);
4504    
4505        assert(myData1.getLength()==54);
4506    
4507        DataArrayView myDataView = myData1.getDefaultValue();
4508        assert(!myDataView.isEmpty());
4509        assert(myDataView.getOffset()==0);
4510        assert(myDataView.getRank()==3);
4511        assert(myDataView.noValues()==27);
4512        assert(myDataView.getShape().size()==3);
4513        assert(myDataView(0,0,0)==1.0);
4514        assert(myDataView(1,1,1)==1.0);
4515        assert(myDataView(2,2,2)==1.0);
4516    
4517        myDataView = myData1.getDataPointByTag(1);
4518        assert(!myDataView.isEmpty());
4519        assert(myDataView.getOffset()==27);
4520        assert(myDataView.getRank()==3);
4521        assert(myDataView.noValues()==27);
4522        assert(myDataView.getShape().size()==3);
4523        assert(myDataView(0,0,0)==2.0);
4524        assert(myDataView(1,1,1)==2.0);
4525        assert(myDataView(2,2,2)==2.0);
4526    
4527        // rank 1 slice
4528    
4529        viewShape.clear();
4530        viewShape.push_back(3);
4531    
4532        DataArrayView::ValueType viewData5(3);
4533        for (int i=0;i<viewData5.size();i++) {
4534          viewData5[i]=3.0;
4535        }
4536        DataArrayView myView5(viewData5,viewShape);
4537    
4538        values.clear();
4539    
4540        DataArrayView::ValueType viewData6(3);
4541        for (int i=0;i<viewData6.size();i++) {
4542          viewData6[i]=4.0;
4543        }
4544        DataArrayView myView6(viewData6,viewShape);
4545        values.push_back(myView6);
4546    
4547        DataTagged myData3(keys,values,myView5,FunctionSpace());
4548    
4549        region.clear();
4550        region.push_back(region_element);
4551        region_element.first=0;
4552        region_element.second=0;
4553        region.push_back(region_element);
4554        region.push_back(region_element);
4555    
4556        myData1.setSlice(&myData3, region);
4557    
4558        //cout << myData1.toString() << endl;
4559    
4560        assert(myData1.getTagLookup().size()==1);
4561    
4562        assert(myData1.getLength()==54);
4563    
4564        myDataView = myData1.getDefaultValue();
4565        assert(!myDataView.isEmpty());
4566        assert(myDataView.getOffset()==0);
4567        assert(myDataView.getRank()==3);
4568        assert(myDataView.noValues()==27);
4569        assert(myDataView.getShape().size()==3);
4570        assert(myDataView(0,0,0)==3.0);
4571        assert(myDataView(1,0,0)==3.0);
4572        assert(myDataView(2,0,0)==3.0);
4573    
4574        myDataView = myData1.getDataPointByTag(1);
4575        assert(!myDataView.isEmpty());
4576        assert(myDataView.getOffset()==27);
4577        assert(myDataView.getRank()==3);
4578        assert(myDataView.noValues()==27);
4579        assert(myDataView.getShape().size()==3);
4580        assert(myDataView(0,0,0)==4.0);
4581        assert(myDataView(1,0,0)==4.0);
4582        assert(myDataView(2,0,0)==4.0);
4583    
4584        // scalar slice
4585    
4586        viewShape.clear();
4587    
4588        DataArrayView::ValueType viewData7(1);
4589        viewData7[0]=5.0;
4590        DataArrayView myView7(viewData7,viewShape);
4591    
4592        values.clear();
4593    
4594        DataArrayView::ValueType viewData8(1);
4595        viewData8[0]=6.0;
4596        DataArrayView myView8(viewData8,viewShape);
4597        values.push_back(myView8);
4598    
4599        DataTagged myData4(keys,values,myView7,FunctionSpace());
4600    
4601        region.clear();
4602        region_element.first=0;
4603        region_element.second=0;
4604        region.push_back(region_element);
4605        region.push_back(region_element);
4606        region.push_back(region_element);
4607    
4608        myData1.setSlice(&myData4, region);
4609    
4610        //cout << myData1.toString() << endl;
4611    
4612        myDataView = myData1.getDefaultValue();
4613        assert(!myDataView.isEmpty());
4614        assert(myDataView.getOffset()==0);
4615        assert(myDataView.getRank()==3);
4616        assert(myDataView.noValues()==27);
4617        assert(myDataView.getShape().size()==3);
4618        assert(myDataView(0,0,0)==5.0);
4619    
4620        myDataView = myData1.getDataPointByTag(1);
4621        assert(!myDataView.isEmpty());
4622        assert(myDataView.getOffset()==27);
4623        assert(myDataView.getRank()==3);
4624        assert(myDataView.noValues()==27);
4625        assert(myDataView.getShape().size()==3);
4626        assert(myDataView(0,0,0)==6.0);
4627    
4628      }
4629    
4630      {
4631    
4632        cout << "\tTest slicing DataTagged with scalar values and three tags." << endl;
4633    
4634        DataTagged::TagListType keys;
4635        keys.push_back(1);
4636        keys.push_back(2);
4637        keys.push_back(3);
4638    
4639        DataTagged::ValueListType values;
4640    
4641        DataArrayView::ShapeType viewShape;
4642    
4643        // default value for Data1
4644        DataArrayView::ValueType viewData1(1);
4645        viewData1[0]=0.0;
4646        DataArrayView myView1(viewData1,viewShape);
4647    
4648        // value for tag "1" for Data1
4649        DataArrayView::ValueType viewData2(1);
4650        viewData2[0]=0.0;
4651        DataArrayView myView2(viewData2,viewShape);
4652        values.push_back(myView2);
4653    
4654        // value for tag "2" for Data1
4655        DataArrayView::ValueType viewData5(1);
4656        viewData5[0]=0.0;
4657        DataArrayView myView5(viewData5,viewShape);
4658        values.push_back(myView5);
4659    
4660        // value for tag "3" for Data1
4661        DataArrayView::ValueType viewData6(1);
4662        viewData6[0]=0.0;
4663        DataArrayView myView6(viewData6,viewShape);
4664        values.push_back(myView6);
4665    
4666        DataTagged myData1(keys,values,myView1,FunctionSpace());
4667    
4668        values.clear();
4669    
4670        // default value for Data2
4671        DataArrayView::ValueType viewData3(1);
4672        viewData3[0]=1.0;
4673        DataArrayView myView3(viewData3,viewShape);
4674    
4675        // value for tag "1" for Data2
4676        DataArrayView::ValueType viewData4(1);
4677        viewData4[0]=2.0;
4678        DataArrayView myView4(viewData4,viewShape);
4679        values.push_back(myView4);
4680    
4681        // value for tag "2" for Data2
4682        DataArrayView::ValueType viewData7(1);
4683        viewData7[0]=3.0;
4684        DataArrayView myView7(viewData7,viewShape);
4685        values.push_back(myView7);
4686    
4687        // value for tag "3" for Data2
4688        DataArrayView::ValueType viewData8(1);
4689        viewData8[0]=4.0;
4690        DataArrayView myView8(viewData8,viewShape);
4691        values.push_back(myView8);
4692    
4693        DataTagged myData2(keys,values,myView3,FunctionSpace());
4694    
4695        // full slice
4696    
4697        DataArrayView::RegionType region;
4698    
4699        myData1.setSlice(&myData2, region);
4700    
4701        //cout << myData1.toString() << endl;
4702    
4703        assert(myData1.getTagLookup().size()==3);
4704    
4705        assert(myData1.getLength()==4);
4706    
4707        DataArrayView myDataView = myData1.getDefaultValue();
4708        assert(!myDataView.isEmpty());
4709        assert(myDataView.getOffset()==0);
4710        assert(myDataView.getRank()==0);
4711        assert(myDataView.noValues()==1);
4712        assert(myDataView.getShape().size()==0);
4713        assert(myDataView()==1.0);
4714    
4715        myDataView = myData1.getDataPointByTag(1);
4716        assert(!myDataView.isEmpty());
4717        assert(myDataView.getOffset()==1);
4718        assert(myDataView.getRank()==0);
4719        assert(myDataView.noValues()==1);
4720        assert(myDataView.getShape().size()==0);
4721        assert(myDataView()==2.0);
4722    
4723        myDataView = myData1.getDataPointByTag(2);
4724        assert(!myDataView.isEmpty());
4725        assert(myDataView.getOffset()==2);
4726        assert(myDataView.getRank()==0);
4727        assert(myDataView.noValues()==1);
4728        assert(myDataView.getShape().size()==0);
4729        assert(myDataView()==3.0);
4730    
4731        myDataView = myData1.getDataPointByTag(3);
4732        assert(!myDataView.isEmpty());
4733        assert(myDataView.getOffset()==3);
4734        assert(myDataView.getRank()==0);
4735        assert(myDataView.noValues()==1);
4736        assert(myDataView.getShape().size()==0);
4737        assert(myDataView()==4.0);
4738    
4739      }
4740    
4741  }  }
4742    
4743  TestSuite* DataTaggedTestCase::suite ()  TestSuite* DataTaggedTestCase::suite ()

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

  ViewVC Help
Powered by ViewVC 1.1.26