/[escript]/branches/schroedinger/escript/test/DataTestCase.cpp
ViewVC logotype

Diff of /branches/schroedinger/escript/test/DataTestCase.cpp

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

revision 1925 by jfenwick, Wed Oct 8 00:28:28 2008 UTC revision 1926 by jfenwick, Fri Oct 24 05:54:08 2008 UTC
# Line 69  void DataTestCase::testCopying() Line 69  void DataTestCase::testCopying()
69  {  {
70    using namespace escript::DataTypes;    using namespace escript::DataTypes;
71    cout << endl;    cout << endl;
   {  
     // first we test the deep copy  
     cout << "\tTest deep copy DataConstant" << endl;  
     DataTypes::ShapeType shape;  
     shape.push_back(2);  
     shape.push_back(3);  
     DataTypes::ValueType data(DataTypes::noValues(shape),1);  
     DataConstant* dc=new DataConstant(FunctionSpace(),shape,data);  
     Data d(dc);  
       
     Data* deep=d.copySelf();    // test self copy  
     for (int i=0;i<DataTypes::noValues(shape);++i)  
     {  
        if (d.getDataAtOffset(i)!=deep->getDataAtOffset(i))  
         assert(false);  
     }  
     d.setToZero();  
     for (int i=0;i<DataTypes::noValues(shape);++i)  
     {  
        if (d.getDataAtOffset(i)==deep->getDataAtOffset(i))  
         assert(false);  
     }  
     d.copy(*deep);          // test copy from object  
     for (int i=0;i<DataTypes::noValues(shape);++i)  
     {  
        if (d.getDataAtOffset(i)!=deep->getDataAtOffset(i))  
         assert(false);  
     }  
     d.setToZero();  
     for (int i=0;i<DataTypes::noValues(shape);++i)  
     {  
        if (d.getDataAtOffset(i)==deep->getDataAtOffset(i))  
         assert(false);  
     }  
     delete deep;  
   }  
72    
73      DataTypes::ShapeType shape;
74      shape.push_back(2);
75      shape.push_back(3);
76      DataTypes::ValueType data(DataTypes::noValues(shape),1);
77      const int NUMDATS=3;
78      Data* dats[NUMDATS];
79      char* strs[]={"DataConstant", "DataTagged", "DataExpanded"};
80      dats[0]=new Data(new DataConstant(FunctionSpace(),shape,data));
81      dats[1]=new Data(new DataTagged(FunctionSpace(),shape,data));
82      dats[2]=new Data(new DataExpanded(FunctionSpace(),shape,data));
83    
84      for (int k=0;k<NUMDATS;++k)
85    {    {
86      // first we test the deep copy      cout << "\tTest deep copy " << strs[k] << endl;
87      cout << "\tTest deep copy DataExpanded" << endl;      Data* d=dats[k];
88      DataTypes::ShapeType shape;      Data* deep=d->copySelf();   // test self copy
     shape.push_back(2);  
     shape.push_back(3);  
     DataTypes::ValueType data(DataTypes::noValues(shape),1);  
     DataExpanded* dc=new DataExpanded(FunctionSpace(),shape,data);  
     Data d(dc);  
       
     Data* deep=d.copySelf();    // test self copy  
89      for (int i=0;i<DataTypes::noValues(shape);++i)      for (int i=0;i<DataTypes::noValues(shape);++i)
90      {      {
91         if (d.getDataAtOffset(i)!=deep->getDataAtOffset(i))      if (d->getDataAtOffset(i)!=deep->getDataAtOffset(i))
92          assert(false);          assert(false);
93      }      }
94      d.setToZero();      d->setToZero();
95      for (int i=0;i<DataTypes::noValues(shape);++i)      for (int i=0;i<DataTypes::noValues(shape);++i)
96      {      {
97         if (d.getDataAtOffset(i)==deep->getDataAtOffset(i))      if (d->getDataAtOffset(i)==deep->getDataAtOffset(i))
98          assert(false);          assert(false);
99      }      }
100      d.copy(*deep);          // test copy from object      d->copy(*deep);         // test copy from object
101      for (int i=0;i<DataTypes::noValues(shape);++i)      for (int i=0;i<DataTypes::noValues(shape);++i)
102      {      {
103         if (d.getDataAtOffset(i)!=deep->getDataAtOffset(i))      if (d->getDataAtOffset(i)!=deep->getDataAtOffset(i))
104          assert(false);          assert(false);
105      }      }
106      d.setToZero();      d->setToZero();
107      for (int i=0;i<DataTypes::noValues(shape);++i)      for (int i=0;i<DataTypes::noValues(shape);++i)
108      {      {
109         if (d.getDataAtOffset(i)==deep->getDataAtOffset(i))      if (d->getDataAtOffset(i)==deep->getDataAtOffset(i))
         assert(false);  
     }  
     delete deep;  
   }  
   {  
     // first we test the deep copy  
     cout << "\tTest deep copy DataTagged" << endl;  
     DataTypes::ShapeType shape;  
     shape.push_back(2);  
     shape.push_back(3);  
     DataTypes::ValueType data(DataTypes::noValues(shape),1);  
     DataTagged* dc=new DataTagged(FunctionSpace(),shape,data);  
     Data d(dc);  
       
     Data* deep=d.copySelf();    // test self copy  
     for (int i=0;i<DataTypes::noValues(shape);++i)  
     {  
        if (d.getDataAtOffset(i)!=deep->getDataAtOffset(i))  
         assert(false);  
     }  
     d.setToZero();  
     for (int i=0;i<DataTypes::noValues(shape);++i)  
     {  
        if (d.getDataAtOffset(i)==deep->getDataAtOffset(i))  
         assert(false);  
     }  
     d.copy(*deep);          // test copy from object  
     for (int i=0;i<DataTypes::noValues(shape);++i)  
     {  
        if (d.getDataAtOffset(i)!=deep->getDataAtOffset(i))  
         assert(false);  
     }  
     d.setToZero();  
     for (int i=0;i<DataTypes::noValues(shape);++i)  
     {  
        if (d.getDataAtOffset(i)==deep->getDataAtOffset(i))  
110          assert(false);          assert(false);
111      }      }
112      delete deep;      delete deep;
113        delete dats[k];
114    }    }
115    
116  }  }
# Line 185  void DataTestCase::testSlicing() { Line 119  void DataTestCase::testSlicing() {
119    
120    using namespace escript::DataTypes;    using namespace escript::DataTypes;
121    cout << endl;    cout << endl;
   
   {  
   
     cout << "\tTest get-slicing DataConstant" << endl;  
   
     DataTypes::ShapeType viewShape;  
     viewShape.push_back(2);  
     viewShape.push_back(3);  
     Data data(1.3,viewShape,FunctionSpace(),false);  
   
     //cout << data.toString() << endl;  
   
     DataTypes::RegionType region;  
     region.push_back(DataTypes::RegionType::value_type(0,0));  
     region.push_back(DataTypes::RegionType::value_type(0,0));  
   
     Data slice1(data.getSlice(region));  
   
     //cout << slice1.toString() << endl;  
   
     assert(slice1.getDataPointRank()==0);  
     assert(slice1.getDataPoint(0,0)==1.3);  
   
     region.clear();  
     region.push_back(DataTypes::RegionType::value_type(0,1));  
     region.push_back(DataTypes::RegionType::value_type(0,1));  
   
     Data slice2(data.getSlice(region));  
   
     //cout << slice2.toString() << endl;  
   
     assert(slice2.getDataPointRank()==2);  
     int off1=slice2.getDataOffset(0,0);  
 //     assert(slice2.getDataPoint(0,0)(0,0)==1.3);  
     assert(slice2.getDataAtOffset(off1+getRelIndex(slice2.getDataPointShape(),0,0))==1.3);  
   
     region.clear();  
     region.push_back(DataTypes::RegionType::value_type(0,1));  
     region.push_back(DataTypes::RegionType::value_type(0,2));  
   
     Data slice3(data.getSlice(region));  
   
     //cout << slice3.toString() << endl;  
   
     assert(slice3.getDataPointRank()==2);  
     off1=slice3.getDataOffset(0,0);  
 //     assert(slice3.getDataPoint(0,0)(0,0)==1.3);  
 //     assert(slice3.getDataPoint(0,0)(0,1)==1.3);  
     assert(slice3.getDataAtOffset(off1+getRelIndex(slice3.getDataPointShape(),0,0))==1.3);  
     assert(slice3.getDataAtOffset(off1+getRelIndex(slice3.getDataPointShape(),0,1))==1.3);  
   
   }  
   
   {  
   
     cout << "\tTest set-slicing DataConstant" << endl;  
   
     DataTypes::ShapeType viewShape;  
     Data source(10.0,viewShape,FunctionSpace(),false);  
   
     //cout << source.toString() << endl;  
   
     viewShape.push_back(2);  
     viewShape.push_back(3);  
     Data target(1.3,viewShape,FunctionSpace(),false);  
   
     //cout << target.toString() << endl;  
   
     DataTypes::RegionType region;  
     region.push_back(DataTypes::RegionType::value_type(0,0));  
     region.push_back(DataTypes::RegionType::value_type(0,0));  
   
     target.setSlice(source,region);  
   
     //cout << target.toString() << endl;  
   
     int off1=target.getDataOffset(0,0);  
     assert(target.getDataAtOffset(off1+getRelIndex(target.getDataPointShape(),0,0)==source.getDataPoint(0,0)));  
   
   }  
   
122    {    {
123       DataTypes::ShapeType viewShape;
124       viewShape.push_back(2);
125       viewShape.push_back(3);
126    
127       const int NUMDATS=3;
128       char* strs[]={"DataConstant", "DataTagged","DataExpanded"};
129       bool tags[]={false,true,false};  // is the slice of this data supposed to be tagged
130       Data* dats[NUMDATS];
131       for (int k=0;k<NUMDATS;++k)
132       {
133            dats[k]=new Data(1.3, viewShape);
134       }
135       dats[1]->tag();
136       dats[2]->expand();
137       for (int k=0;k<NUMDATS;++k)
138       {
139        cout << "\tTest get-slicing " << strs[k] << endl;
140            dats[k]->getDataAtOffset(dats[k]->getDataOffset(0,0)+getRelIndex(viewShape,0,0))=1.0;
141            dats[k]->getDataAtOffset(dats[k]->getDataOffset(0,0)+getRelIndex(viewShape,1,1))=2.0;
142    
143            DataTypes::RegionType region;
144            region.push_back(DataTypes::RegionType::value_type(0,0));
145            region.push_back(DataTypes::RegionType::value_type(0,0));
146    
147            Data slice1(dats[k]->getSlice(region));
148    
149            if (tags[k]) {assert(slice1.isTagged());}
150            assert(slice1.getDataPointRank()==0);
151            assert(slice1.getDataPoint(0,0)==1.0);
152    
153      cout << "\tTest get-slicing DataTagged" << endl;      //
154      //      // create a rank 2 slice with one value
155      // create a DataTagged with a default value only      
156        region.clear();
157      DataTypes::ShapeType viewShape;      region.push_back(DataTypes::RegionType::value_type(0,1));
158      viewShape.push_back(2);      region.push_back(DataTypes::RegionType::value_type(0,1));
159      viewShape.push_back(3);      
160      Data data(1.3,viewShape,FunctionSpace(),false);      Data slice2(dats[k]->getSlice(region));
161      data.tag();      
162      data.getDataAtOffset(data.getDataOffset(0,0)+getRelIndex(viewShape,0,0))=1.0;      //cout << slice2.toString() << endl;
163      data.getDataAtOffset(data.getDataOffset(0,0)+getRelIndex(viewShape,1,1))=2.0;        
164  //     data.getDataPoint(0,0)(0,0)=1.0;      if (tags[k]) {assert(slice2.isTagged());}
165  //     data.getDataPoint(0,0)(1,1)=2.0;      assert(slice2.getDataPointRank()==2);
166        
167      //cout << data.toString() << endl;      assert(slice2.getDataAtOffset(slice2.getDataOffset(0,0)+getRelIndex(slice2.getDataPointShape(),0,0))==1.0);
     //  
     // create a scalar slice  
   
     DataTypes::RegionType region;  
     region.push_back(DataTypes::RegionType::value_type(0,0));  
     region.push_back(DataTypes::RegionType::value_type(0,0));  
   
     Data slice1(data.getSlice(region));  
     //cout << slice1.toString() << endl;  
   
     assert(slice1.isTagged());  
     assert(slice1.getDataPointRank()==0);  
     assert(slice1.getDataPoint(0,0)==1.0);  
     //  
     // create a rank 2 slice with one value  
   
     region.clear();  
     region.push_back(DataTypes::RegionType::value_type(0,1));  
     region.push_back(DataTypes::RegionType::value_type(0,1));  
   
     Data slice2(data.getSlice(region));  
   
     //cout << slice2.toString() << endl;  
   
     assert(slice2.isTagged());  
     assert(slice2.getDataPointRank()==2);  
   
     assert(slice2.getDataAtOffset(slice2.getDataOffset(0,0)+getRelIndex(slice2.getDataPointShape(),0,0))==1.0);  
   
     //  
     // create a rank 2 slice with four values  
   
     region.clear();  
     region.push_back(DataTypes::RegionType::value_type(0,2));  
     region.push_back(DataTypes::RegionType::value_type(0,2));  
   
     Data slice3(data.getSlice(region));  
   
     //cout << slice3.toString() << endl;  
   
     assert(slice3.isTagged());  
     assert(slice3.getDataPointRank()==2);  
     assert(getRef(slice3,0,0,0,0)==1.0);  
     assert(getRef(slice3,0,0,0,1)==1.3);  
     assert(getRef(slice3,0,0,1,0)==1.3);  
     assert(getRef(slice3,0,0,1,1)==2.0);  
   
     //  
     // add a value for tag "1"  
   
     DataTypes::ValueType viewData(6);  
     for (int i=0;i<viewData.size();i++) {  
       viewData[i]=i;  
     }  
 //    DataArrayView dataView(viewData,viewShape);  
   
 //     data.setTaggedValueFromCPP(1, dataView);  
     data.setTaggedValueFromCPP(1, viewShape, viewData);  
168    
169        //
170        // create a rank 2 slice with four values
171        
172        region.clear();
173        region.push_back(DataTypes::RegionType::value_type(0,2));
174        region.push_back(DataTypes::RegionType::value_type(0,2));
175        
176        Data slice3(dats[k]->getSlice(region));
177        
178        //cout << slice3.toString() << endl;
179        
180        if (tags[k]) {assert(slice3.isTagged());}
181        assert(slice3.getDataPointRank()==2);
182        assert(getRef(slice3,0,0,0,0)==1.0);
183        assert(getRef(slice3,0,0,0,1)==1.3);
184        assert(getRef(slice3,0,0,1,0)==1.3);
185        assert(getRef(slice3,0,0,1,1)==2.0);
186       }
187    
188       // now some extra tests for tagged data (dats[1])
189    
190       //
191       // add a value for tag "1"
192    
193       DataTypes::ValueType viewData(6);
194       for (int i=0;i<viewData.size();i++) {
195        viewData[i]=i;
196       }
197       dats[1]->setTaggedValueFromCPP(1, viewShape, viewData);
198    
199      //      //
200      // create a full slice      // create a full slice
201    
202      region.clear();     DataTypes::RegionType region;
203      region.push_back(DataTypes::RegionType::value_type(0,2));     region.push_back(DataTypes::RegionType::value_type(0,2));
204      region.push_back(DataTypes::RegionType::value_type(0,3));     region.push_back(DataTypes::RegionType::value_type(0,3));
205    
206      Data slice4(data.getSlice(region));     Data slice4(dats[1]->getSlice(region));
207    
208      //cout << slice4.toString() << endl;     assert(slice4.isTagged());
209       assert(slice4.getDataPointRank()==2);
210      assert(slice4.isTagged());     assert(getRef(slice4,0,0,0,0)==0);
211      assert(slice4.getDataPointRank()==2);     assert(getRef(slice4,0,0,0,1)==2);
212      assert(getRef(slice4,0,0,0,0)==0);     assert(getRef(slice4,0,0,0,2)==4);
213      assert(getRef(slice4,0,0,0,1)==2);     assert(getRef(slice4,0,0,1,0)==1);
214      assert(getRef(slice4,0,0,0,2)==4);     assert(getRef(slice4,0,0,1,1)==3);
215      assert(getRef(slice4,0,0,1,0)==1);     assert(getRef(slice4,0,0,1,2)==5);
216      assert(getRef(slice4,0,0,1,1)==3);  
217      assert(getRef(slice4,0,0,1,2)==5);     for (int k=0;k<NUMDATS;++k)
218       {
219        delete dats[k];
220       }
221     }
222    
223     {
224      DataTypes::ShapeType viewShape;
225      viewShape.push_back(2);
226      viewShape.push_back(3);
227    
228      const int NUMDATS=3;
229      char* strs[]={"DataConstant", "DataTagged","DataExpanded"};
230      bool tags[]={false,true,false};   // is the slice of this data supposed to be tagged
231      Data* dats[NUMDATS];
232      Data* src[NUMDATS];
233      for (int k=0;k<NUMDATS;++k)
234      {
235        dats[k]=new Data(1.3, viewShape);
236            src[k]=new Data(10,DataTypes::scalarShape);
237    }    }
238      dats[1]->tag();
239      src[1]->tag();
240      dats[2]->expand();
241      src[2]->expand();
242    
243      for (int k=0;k<NUMDATS;++k)
244    {    {
245        cout << "\tTest set-slicing " << strs[k] << endl;
246        Data target(1.3,viewShape);
247        if (k==2) {target.expand();}
248        DataTypes::RegionType region;
249        region.push_back(DataTypes::RegionType::value_type(1,1));
250        region.push_back(DataTypes::RegionType::value_type(1,1));
251        target.setSlice(*(src[k]),region);
252        assert(getRef(target,0,0,1,1)==src[k]->getDataPoint(0,0));
253      }
254      
255      // some extra tests on tagged data
256    
257      cout << "\tTest set-slicing DataTagged" << endl;    //
258      // add a value for tag "1" to target
     //  
     // create a source DataTagged with a scalar default value only  
   
     DataTypes::ShapeType viewShape;  
     Data source(10.0,viewShape,FunctionSpace(),false);  
     source.tag();  
   
     //cout << "source:\n" << source.toString() << endl;  
   
     //  
     // create a target DataTagged with a rank 2 default value only  
   
     viewShape.push_back(2);  
     viewShape.push_back(3);  
     Data target(1.3,viewShape,FunctionSpace(),false);  
     target.tag();  
   
     //cout << "target:\n" << target.toString() << endl;  
   
     //  
     // set a slice in target from source  
   
     DataTypes::RegionType region;  
     region.push_back(DataTypes::RegionType::value_type(1,1));  
     region.push_back(DataTypes::RegionType::value_type(1,1));  
   
     target.setSlice(source,region);  
   
     //cout << "target:\n" << target.toString() << endl;  
   
     assert(target.isTagged());  
     assert(target.getDataPointRank()==2);  
     assert(getRef(target,0,0,0,0)==1.3);  
     assert(getRef(target,0,0,0,1)==1.3);  
     assert(getRef(target,0,0,0,2)==1.3);  
     assert(getRef(target,0,0,1,0)==1.3);  
     assert(getRef(target,0,0,1,1)==source.getDataPoint(0,0));  
     assert(getRef(target,0,0,1,2)==1.3);  
   
     //  
     // add a value for tag "1" to target  
   
     DataTypes::ValueType viewData(6);  
     for (int i=0;i<viewData.size();i++) {  
       viewData[i]=i;  
     }  
 //     DataArrayView dataView(viewData,viewShape);  
 //  
 //     target.setTaggedValueFromCPP(1, dataView);  
     target.setTaggedValueFromCPP(1, viewShape, viewData);  
   
     //cout << "target:\n" << target.toString() << endl;  
   
     //  
     // set a slice in target from source  
259    
260      region.clear();    DataTypes::ValueType viewData(6);
261      region.push_back(DataTypes::RegionType::value_type(0,0));    for (int i=0;i<viewData.size();i++) {
262      region.push_back(DataTypes::RegionType::value_type(1,1));      viewData[i]=i;
263      }
264    
265      target.setSlice(source,region);    Data target(1.3,viewShape,FunctionSpace(),false);
266      target.tag();
267      target.setTaggedValueFromCPP(1, viewShape, viewData);
268    
269      //cout << "target:\n" << target.toString() << endl;      //cout << "target:\n" << target.toString() << endl;
270    
     assert(target.isTagged());  
     assert(target.getDataPointRank()==2);  
     assert(getRef(target,0,0,0,0)==0);  
     assert(getRef(target,0,0,0,1)==source.getDataPoint(0,0));  
     assert(getRef(target,0,0,0,2)==4);  
     assert(getRef(target,0,0,1,0)==1);  
     assert(getRef(target,0,0,1,1)==3);  
     assert(getRef(target,0,0,1,2)==5);  
   
     //  
     // add a value for tag "2" to source  
   
     DataTypes::ShapeType viewShape2;  
     DataTypes::ValueType viewData2(1);  
     viewData2[0]=6;  
 //     DataArrayView dataView2(viewData2,viewShape2);  
 //  
 //     source.setTaggedValueFromCPP(2, dataView2);  
     source.setTaggedValueFromCPP(2, viewShape2, viewData2);  
   
     //cout << "source:\n" << source.toString() << endl;  
   
271      //      //
272      // set a slice in target from source      // set a slice in target from source
273    
274      region.clear();    DataTypes::RegionType region;
275      region.push_back(DataTypes::RegionType::value_type(0,0));    region.push_back(DataTypes::RegionType::value_type(0,0));
276      region.push_back(DataTypes::RegionType::value_type(1,1));    region.push_back(DataTypes::RegionType::value_type(1,1));
277    
278      target.setSlice(*src[1],region);
279    
280      assert(target.isTagged());
281      assert(target.getDataPointRank()==2);
282      assert(getRef(target,0,0,0,0)==0);
283      assert(getRef(target,0,0,0,1)==src[1]->getDataPoint(0,0));
284      assert(getRef(target,0,0,0,2)==4);
285      assert(getRef(target,0,0,1,0)==1);
286      assert(getRef(target,0,0,1,1)==3);
287      assert(getRef(target,0,0,1,2)==5);
288    
289      //
290      // add a value for tag "2" to source
291    
292      DataTypes::ShapeType viewShape2;
293      DataTypes::ValueType viewData2(1);
294      viewData2[0]=6;
295      src[1]->setTaggedValueFromCPP(2, viewShape2, viewData2);
296    
297      region.clear();
298      region.push_back(DataTypes::RegionType::value_type(0,0));
299      region.push_back(DataTypes::RegionType::value_type(1,1));
300    
301      target.setSlice(source,region);    target.setSlice(*src[1],region);
302    
303      //cout << "target:\n" << target.toString() << endl;    assert(target.isTagged());
304      assert(target.getDataPointRank()==2);
     assert(target.isTagged());  
     assert(target.getDataPointRank()==2);  
305    
306      // use a non-existant tag so we get a pointer to the default value      // use a non-existant tag so we get a pointer to the default value
307      // ie: the first element in the data array      // ie: the first element in the data array
308      DataAbstract::ValueType::value_type* targetData=target.getSampleDataByTag(9);    DataAbstract::ValueType::value_type* targetData=target.getSampleDataByTag(9);
309      for (int i=0; i<target.getLength(); i++) {    for (int i=0; i<target.getLength(); i++) {
310        assert(targetData[i]>=0);        assert(targetData[i]>=0);
     }  
     assert(targetData[0]==1.3);  
     assert(targetData[1]==1.3);  
     assert(targetData[2]==10);  
     assert(targetData[3]==10);  
     assert(targetData[4]==1.3);  
     assert(targetData[5]==1.3);  
     assert(targetData[6]==0);  
     assert(targetData[7]==1);  
     assert(targetData[8]==10);  
     assert(targetData[9]==3);  
     assert(targetData[10]==4);  
     assert(targetData[11]==5);  
     assert(targetData[12]==1.3);  
     assert(targetData[13]==1.3);  
     assert(targetData[14]==6);  
     assert(targetData[15]==10);  
     assert(targetData[16]==1.3);  
     assert(targetData[17]==1.3);  
   
311    }    }
312      assert(targetData[0]==1.3);
313      assert(targetData[1]==1.3);
314      assert(targetData[2]==10);
315      assert(targetData[3]==1.3);
316      assert(targetData[4]==1.3);
317      assert(targetData[5]==1.3);
318      assert(targetData[6]==0);
319      assert(targetData[7]==1);
320      assert(targetData[8]==10);
321      assert(targetData[9]==3);
322      assert(targetData[10]==4);
323      assert(targetData[11]==5);
324      assert(targetData[12]==1.3);
325      assert(targetData[13]==1.3);
326      assert(targetData[14]==6);
327      assert(targetData[15]==1.3);
328      assert(targetData[16]==1.3);
329      assert(targetData[17]==1.3);
330    
   {  
   
     cout << "\tTest get-slicing DataExpanded" << endl;  
   
     DataTypes::ShapeType viewShape;  
     viewShape.push_back(2);  
     viewShape.push_back(3);  
     Data temp(1.3,viewShape,FunctionSpace(),true);  
   
     getRef(temp,0,0,0,0)=0.0;  
     getRef(temp,0,0,1,1)=1.0;  
   
     DataTypes::RegionType region;  
     region.push_back(DataTypes::RegionType::value_type(0,0));  
     region.push_back(DataTypes::RegionType::value_type(0,0));  
   
     Data slice(temp.getSlice(region));  
   
     assert(slice.getDataPointRank()==0);  
     assert(slice.getDataPoint(0,0)==0.0);  
   
     region.clear();  
     region.push_back(DataTypes::RegionType::value_type(0,1));  
     region.push_back(DataTypes::RegionType::value_type(0,1));  
   
     slice=temp.getSlice(region);  
   
     assert(slice.getDataPointRank()==2);  
     assert(getRef(slice,0,0,0,0)==0.0);  
   
     region.clear();  
     region.push_back(DataTypes::RegionType::value_type(0,2));  
     region.push_back(DataTypes::RegionType::value_type(0,2));  
   
     slice=temp.getSlice(region);  
   
     assert(getRef(slice,0,0,0,0)==0.0);  
     assert(getRef(slice,0,0,1,1)==1.0);  
   
   }  
331    
332      for (int k=0;k<NUMDATS;++k)
333    {    {
334        delete dats[k];
335      cout << "\tTest set-slicing DataExpanded" << endl;      delete src[k];
   
     DataTypes::ShapeType viewShape;  
     Data source(10.0,viewShape,FunctionSpace(),true);  
   
     viewShape.push_back(2);  
     viewShape.push_back(3);  
     Data target(1.3,viewShape,FunctionSpace(),true);  
   
     DataTypes::RegionType region;  
     region.push_back(DataTypes::RegionType::value_type(0,0));  
     region.push_back(DataTypes::RegionType::value_type(0,0));  
   
     target.setSlice(source,region);  
   
     assert(getRef(target,0,0,0,0)==source.getDataPoint(0,0));  
   
336    }    }
337    
338     }
339  }  }
340    
341  void DataTestCase::testAll() {  void DataTestCase::testAll() {

Legend:
Removed from v.1925  
changed lines
  Added in v.1926

  ViewVC Help
Powered by ViewVC 1.1.26