test_PointBlockMap.cpp

00001 /*--------------------------------------------------------------------*/
00002 /*    Copyright 2005 Sandia Corporation.                              */
00003 /*    Under the terms of Contract DE-AC04-94AL85000, there is a       */
00004 /*    non-exclusive license for use of this work by or on behalf      */
00005 /*    of the U.S. Government.  Export of this program may require     */
00006 /*    a license from the United States Government.                    */
00007 /*--------------------------------------------------------------------*/
00008 
00009 #include <fei_iostream.hpp>
00010 
00011 #include <test_utils/test_PointBlockMap.hpp>
00012 #include <snl_fei_PointBlockMap.hpp>
00013 
00014 #undef fei_file
00015 #define fei_file "test_PointBlockMap.cpp"
00016 #include <fei_ErrMacros.hpp>
00017 
00018 test_PointBlockMap::test_PointBlockMap(MPI_Comm comm)
00019  : tester(comm)
00020 {
00021 }
00022 
00023 test_PointBlockMap::~test_PointBlockMap()
00024 {
00025 }
00026 
00027 int test_PointBlockMap::runtests()
00028 {
00029   CHK_ERR( test1() );
00030   CHK_ERR( test2() );
00031   CHK_ERR( test3() );
00032   CHK_ERR( test4() );
00033   return(0);
00034 }
00035 
00036 int test_PointBlockMap::test1()
00037 {
00038   snl_fei::PointBlockMap pbMap;
00039 
00040   CHK_ERR( pbMap.setEqn(0, 0) );
00041   CHK_ERR( pbMap.setEqn(1, 0) );
00042   CHK_ERR( pbMap.setEqn(2, 0) );
00043   CHK_ERR( pbMap.setEqn(3, 1) );
00044   CHK_ERR( pbMap.setEqn(4, 1) );
00045   CHK_ERR( pbMap.setEqn(5, 2) );
00046 
00047   CHK_ERR( pbMap.setBlkEqnSize(0, 3) );
00048   CHK_ERR( pbMap.setBlkEqnSize(1, 2) );
00049   CHK_ERR( pbMap.setBlkEqnSize(2, 1) );
00050 
00051   int blkEqnOffset = pbMap.getBlkEqnOffset(1,3);
00052   if (blkEqnOffset != 0) {
00053     ERReturn(-1);
00054   }
00055 
00056   int size = pbMap.getBlkEqnSize(1);
00057   if (size != 2) {
00058     ERReturn(-1);
00059   }
00060 
00061   int blkSize, ptEqn;
00062   CHK_ERR( pbMap.getBlkEqnInfo(1, ptEqn, blkSize) );
00063   if (ptEqn != 3) {
00064     ERReturn(-1);
00065   }
00066   if (blkSize != 2) {
00067     ERReturn(-1);
00068   }
00069 
00070   int blkEqn = pbMap.eqnToBlkEqn(4);
00071   if (blkEqn != 1) {
00072     ERReturn(-1);
00073   }
00074 
00075   if (pbMap.isExactlyBlkEqn(4)) {
00076     ERReturn(-1);
00077   }
00078 
00079   int blkOffset;
00080   CHK_ERR( pbMap.getPtEqnInfo(4, blkEqn, blkOffset) );
00081   if (blkEqn != 1) {
00082     ERReturn(-1);
00083   }
00084 
00085   if (blkOffset != 1) {
00086     ERReturn(-1);
00087   }
00088 
00089   if (!pbMap.isExactlyBlkEqn(3)) {
00090     ERReturn(-1);
00091   }
00092 
00093   int maxBlkSize = pbMap.getMaxBlkEqnSize();
00094   if (maxBlkSize == 0) {
00095     ERReturn(-1);
00096   }
00097 
00098   return(0);
00099 }
00100 
00101 int test_PointBlockMap::test2()
00102 {
00103   snl_fei::PointBlockMap pbMap;
00104 
00105   CHK_ERR( pbMap.setEqn(0, 0) );
00106   CHK_ERR( pbMap.setEqn(1, 0) );
00107   CHK_ERR( pbMap.setEqn(2, 0) );
00108   CHK_ERR( pbMap.setEqn(3, 1) );
00109   CHK_ERR( pbMap.setEqn(4, 1) );
00110   CHK_ERR( pbMap.setEqn(5, 2) );
00111 
00112   CHK_ERR( pbMap.setBlkEqnSize(0, 3) );
00113   CHK_ERR( pbMap.setBlkEqnSize(1, 2) );
00114   CHK_ERR( pbMap.setBlkEqnSize(2, 1) );
00115 
00116   std::map<int,std::pair<int,int> >* blkEqns = pbMap.getBlkEqns();
00117 
00118   std::map<int,std::pair<int,int> >::const_iterator
00119     iter = blkEqns->begin(),
00120     iter_end = blkEqns->end();
00121 
00122   for(; iter != iter_end; ++iter) {
00123     if ((*iter).first < 0) {
00124       CHK_ERR( -1 );
00125     }
00126   }
00127 
00128   return(0);
00129 }
00130 
00131 int test_PointBlockMap::test3()
00132 {
00133   return(0);
00134 }
00135 
00136 int test_PointBlockMap::test4()
00137 {
00138   return(0);
00139 }

Generated on Tue Jul 13 09:27:46 2010 for FEI by  doxygen 1.4.7