[cig-commits] r6931 - short/3D/PyLith/trunk/unittests/libtests/bc

brad at geodynamics.org brad at geodynamics.org
Sat May 19 15:37:27 PDT 2007


Author: brad
Date: 2007-05-19 15:37:27 -0700 (Sat, 19 May 2007)
New Revision: 6931

Modified:
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichlet.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletMulti.cc
Log:
Made setConstraints() C++ unit test more rigorous.

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichlet.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichlet.cc	2007-05-19 19:39:35 UTC (rev 6930)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichlet.cc	2007-05-19 22:37:27 UTC (rev 6931)
@@ -131,11 +131,27 @@
   mesh->allocate(field);
   bc.setConstraints(field, mesh);
 
-  // ADD STUFF HERE
-  // use getConstraintDof()
+  CPPUNIT_ASSERT(0 != _data);
 
-  // No accessor in real_section_type to verify constraints are set
-  // correctly. For now, rely on testSetField test.
+  const int numCells = mesh->heightStratum(0)->size();
+  const int offset = numCells;
+  int iConstraint = 0;
+  for (Mesh::label_sequence::iterator v_iter = vertices->begin();
+       v_iter != vertices->end();
+       ++v_iter) {
+    const int* fixedDOF = field->getConstraintDof(*v_iter);
+    if (*v_iter != _data->constrainedPoints[iConstraint] + offset) {
+      CPPUNIT_ASSERT_EQUAL(0, field->getConstraintDimension(*v_iter));
+      //CPPUNIT_ASSERT(0 == fixedDOF);
+    } else {
+      CPPUNIT_ASSERT(0 != fixedDOF);
+      CPPUNIT_ASSERT_EQUAL(_data->numFixedDOF, 
+			   field->getConstraintDimension(*v_iter));
+      for (int iDOF=0; iDOF < _data->numFixedDOF; ++iDOF)
+	CPPUNIT_ASSERT_EQUAL(_data->fixedDOF[iDOF], fixedDOF[iDOF]);
+      ++iConstraint;
+    } // if/else
+  } // for
 } // testSetConstraints
 
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletMulti.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletMulti.cc	2007-05-19 19:39:35 UTC (rev 6930)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletMulti.cc	2007-05-19 22:37:27 UTC (rev 6931)
@@ -81,8 +81,34 @@
   bcA.setConstraints(field, mesh);
   bcB.setConstraints(field, mesh);
 
-  // No accessor in real_section_type to verify constraints are set
-  // correctly. For now, rely on testSetField test.
+  CPPUNIT_ASSERT(0 != _data);
+
+  const int numCells = mesh->heightStratum(0)->size();
+  const int offset = numCells;
+  for (Mesh::label_sequence::iterator v_iter = vertices->begin();
+       v_iter != vertices->end();
+       ++v_iter) {
+    const int* fixedDOF = field->getConstraintDof(*v_iter);
+    
+    const int flag = _data->bcFlags[*v_iter-offset];
+    if (-1 == flag) {
+      // no constraints
+      CPPUNIT_ASSERT_EQUAL(0, field->getConstraintDimension(*v_iter));
+      //CPPUNIT_ASSERT(0 == fixedDOF);
+    } else if (0 == flag) {
+      CPPUNIT_ASSERT(0 != fixedDOF);
+      CPPUNIT_ASSERT_EQUAL(_data->numFixedDOFA, 
+			   field->getConstraintDimension(*v_iter));
+      for (int iDOF=0; iDOF < _data->numFixedDOFA; ++iDOF)
+	CPPUNIT_ASSERT_EQUAL(_data->fixedDOFA[iDOF], fixedDOF[iDOF]);
+    } else if (1 == flag) {
+      CPPUNIT_ASSERT(0 != fixedDOF);
+      CPPUNIT_ASSERT_EQUAL(_data->numFixedDOFB, 
+			   field->getConstraintDimension(*v_iter));
+      for (int iDOF=0; iDOF < _data->numFixedDOFB; ++iDOF)
+	CPPUNIT_ASSERT_EQUAL(_data->fixedDOFB[iDOF], fixedDOF[iDOF]);
+    } // if/else
+  } // for
 } // testSetConstraints
 
 // ----------------------------------------------------------------------



More information about the cig-commits mailing list