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

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

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

revision 82 by jgs, Tue Oct 26 06:53:54 2004 UTC revision 117 by jgs, Fri Apr 1 05:48:57 2005 UTC
# Line 12  Line 12 
12   *                                                                           *   *                                                                           *
13   *****************************************************************************   *****************************************************************************
14  */  */
15    
16  #include "escript/Data/DataBlocks2D.h"  #include "escript/Data/DataBlocks2D.h"
17  #include "esysUtils/EsysException.h"  #include "esysUtils/EsysException.h"
18    
# Line 40  void DataBlocks2DTestCase::testAll() { Line 41  void DataBlocks2DTestCase::testAll() {
41    
42    cout << endl;    cout << endl;
43    
44    {    cout << "\tTest DataBlocks2D constructor for various dimension values:" << endl;
     cout << "\tTest DOASSERT exception." << endl;  
     DataBlocks2D myData;  
     try {  
       myData.index(1,2);  
       assert(false);  
     }  
     catch (EsysException& e) {  
       //std::cout << e.what() << std::endl;  
       assert(true);  
     }  
   }  
   
   cout << "\tTest DataBlocks2D constructor for various size arrays:" << endl;  
45    
46    {    {
47      cout << "\t\tnumRows = 1, numCols = 1, blockSize = 20." << endl;      cout << "\t\tnumRows = 1, numCols = 1, blockSize = 20." << endl;
# Line 61  void DataBlocks2DTestCase::testAll() { Line 49  void DataBlocks2DTestCase::testAll() {
49      int numCols=1;      int numCols=1;
50      int blockSize=20;      int blockSize=20;
51      DataBlocks2D myData(numRows,numCols,blockSize);      DataBlocks2D myData(numRows,numCols,blockSize);
52      assert(myData.index(numRows-1,numCols-1) == ((numRows-1)*(numCols-1)*blockSize));      int i = numRows-1;
53      assert(myData.getData().size() == numRows*numCols*blockSize);      int j = numCols-1;
54        assert(myData.index(i,j) == (i*numCols+j)*blockSize);
55        assert(myData.size() == numRows*numCols*blockSize);
56    }    }
57    
58    {    {
# Line 71  void DataBlocks2DTestCase::testAll() { Line 61  void DataBlocks2DTestCase::testAll() {
61      int numCols=5;      int numCols=5;
62      int blockSize=20;      int blockSize=20;
63      DataBlocks2D myData(numRows,numCols,blockSize);      DataBlocks2D myData(numRows,numCols,blockSize);
64      assert(myData.index(numRows-1,numCols-1) == ((numRows*numCols-1)*blockSize));      int i = numRows-1;
65      assert(myData.getData().size() == numRows*numCols*blockSize);      int j = numCols-1;
66        assert(myData.index(i,j) == (i*numCols+j)*blockSize);
67        assert(myData.size() == numRows*numCols*blockSize);
68    }    }
69    
70    {    {
# Line 81  void DataBlocks2DTestCase::testAll() { Line 73  void DataBlocks2DTestCase::testAll() {
73      int numCols=5;      int numCols=5;
74      int blockSize=1;      int blockSize=1;
75      DataBlocks2D myData(numRows,numCols,blockSize);      DataBlocks2D myData(numRows,numCols,blockSize);
76      assert(myData.index(numRows-1,numCols-1) == ((numRows*numCols-1)*blockSize));      int i = numRows-1;
77      assert(myData.getData().size() == numRows*numCols*blockSize);      int j = numCols-1;
78        assert(myData.index(i,j) == (i*numCols+j)*blockSize);
79        assert(myData.size() == numRows*numCols*blockSize);
80    }    }
81    
82    {    {
# Line 91  void DataBlocks2DTestCase::testAll() { Line 85  void DataBlocks2DTestCase::testAll() {
85      int numCols=1;      int numCols=1;
86      int blockSize=1;      int blockSize=1;
87      DataBlocks2D myData(numRows,numCols,blockSize);      DataBlocks2D myData(numRows,numCols,blockSize);
88      assert(myData.index(numRows-1,numCols-1) == ((numRows*numCols-1)*blockSize));      int i = numRows-1;
89      assert(myData.getData().size() == numRows*numCols*blockSize);      int j = numCols-1;
90        assert(myData.index(i,j) == (i*numCols+j)*blockSize);
91        assert(myData.size() == numRows*numCols*blockSize);
92    }    }
93    
94    {    {
95      cout << "\tTest DataBlocks2D.index and DataBlocks2D.getData for blockSize = 3." << endl;      cout << "\tTest DataBlocks2D.index and DataBlocks2D operator[] for blockSize = 3." << endl;
96      int numRows=10;      int numRows=10;
97      int numCols=8;      int numCols=8;
98      int blockSize=3;      int blockSize=3;
99      DataBlocks2D myData(numRows,numCols,blockSize);      DataBlocks2D myData(numRows,numCols,blockSize);
100      for (int iR=0;iR<numRows;++iR) {      int val=0;
101        for (int iC=0;iC<numCols;++iC) {      for (int i=0; i<numRows; i++) {
102          //cout << "i=" << iR << " j=" << iC << " index=" << myData.index(iR,iC) << endl;        for (int j=0; j<numCols; j++) {
103      assert(myData.getData()[myData.index(iR,iC)] == 0);          for (int k=0; k<blockSize; k++) {
104          myData[myData.index(i,j)+k] = val;
105              val++;
106            }
107          }
108        }
109        val=0;
110        for (int i=0; i<numRows; i++) {
111          for (int j=0; j<numCols; j++) {
112            for (int k=0; k<blockSize; k++) {
113          assert(myData[myData.index(i,j)+k] == val);
114              val++;
115            }
116        }        }
117      }      }
118    }    }
119    
120    {    {
121      cout << "\tTest DataBlocks2D.getData for blockSize = 0 - will generate exceptions." << endl;      cout << "\tTest DataBlocks2D for blockSize = 0." << endl;
122      //      //
123      // every attempted access for a 0 size block should cause an exception      // every attempted access for a 0 size block should cause an exception
124      int numRows=10;      int numRows=10;
# Line 118  void DataBlocks2DTestCase::testAll() { Line 126  void DataBlocks2DTestCase::testAll() {
126      int blockSize=0;      int blockSize=0;
127      int exceptionCount=0;      int exceptionCount=0;
128      DataBlocks2D myData(numRows,numCols,blockSize);      DataBlocks2D myData(numRows,numCols,blockSize);
129      for (int iR=0;iR<numRows;++iR) {      for (int i=0;i<numRows;i++) {
130        for (int iC=0;iC<numCols;++iC) {        for (int j=0;j<numCols;j++) {
131      try {      try {
132        myData.getData()[myData.index(iR,iC)];        myData[myData.index(i,j)];
133            assert(false);            assert(false);
134      }      }
135      catch(EsysException& e) {      catch(EsysException& e) {
           //cout << e.toString() << endl;  
136        ++exceptionCount;        ++exceptionCount;
137            assert(true);            assert(true);
138      }      }
# Line 135  void DataBlocks2DTestCase::testAll() { Line 142  void DataBlocks2DTestCase::testAll() {
142    }    }
143    
144    {    {
145      cout << "\tTest getNumRows and getNumCols." << endl;      cout << "\tTest getNumRows, getNumCols and getBlockSize." << endl;
146      int numRows=1;      int numRows=1;
147      int numCols=1;      int numCols=1;
148      int blockSize=1;      int blockSize=1;
149      DataBlocks2D myData(numRows,numCols,blockSize);      DataBlocks2D myData(numRows,numCols,blockSize);
150      assert(myData.getNumRows() == numRows);      assert(myData.getNumRows() == numRows);
151      assert(myData.getNumCols() == numCols);      assert(myData.getNumCols() == numCols);
152        assert(myData.getBlockSize() == blockSize);
153    }    }
154    
155    {    {
# Line 153  void DataBlocks2DTestCase::testAll() { Line 161  void DataBlocks2DTestCase::testAll() {
161      myData.resize(numRows,numCols,blockSize);      myData.resize(numRows,numCols,blockSize);
162      assert(myData.getNumRows() == numRows);      assert(myData.getNumRows() == numRows);
163      assert(myData.getNumCols() == numCols);      assert(myData.getNumCols() == numCols);
164        assert(myData.getBlockSize() == blockSize);
165    }    }
166    
167    {    {
168      cout << "\tTest = operator, swap, and copy constructor." << endl;      cout << "\tTest = operator, swap, and copy constructor." << endl;
169      DataBlocks2D myData1;      DataBlocks2D myData1;
170      DataBlocks2D myData2(1, 1, 1);      DataBlocks2D myData2(1, 1, 1);
171        int val=0;
172        for (int i=0; i<1; i++) {
173          for (int j=0; j<1; j++) {
174            for (int k=0; k<1; k++) {
175          myData2[myData2.index(i,j)+k] = val;
176              val++;
177            }
178          }
179        }
180      myData1 = myData2;      myData1 = myData2;
181        for (int i=0; i<myData1.getNumRows(); i++) {
182          for (int j=0; j<myData1.getNumCols(); j++) {
183        assert(myData1(i,j) == myData2(i,j));
184          }
185        }
186      }
187    
188      {
189        cout << "\tTest DOASSERT exception." << endl;
190        DataBlocks2D myData;
191        try {
192          myData.index(1,2);
193          assert(false);
194        }
195        catch (EsysException& e) {
196          assert(true);
197        }
198    }    }
199    
200  }  }

Legend:
Removed from v.82  
changed lines
  Added in v.117

  ViewVC Help
Powered by ViewVC 1.1.26