1 #include <libmesh/bounding_box.h> 
   15   CPPUNIT_TEST( test_one_degenerate );
 
   16   CPPUNIT_TEST( test_two_degenerate );
 
   17   CPPUNIT_TEST( test_no_degenerate );
 
   18   CPPUNIT_TEST( test_signed_distance );
 
   20   CPPUNIT_TEST_SUITE_END();
 
   41     const Real eps = std::numeric_limits<Real>::epsilon();
 
   50     typedef std::tuple<Real, bool, bool> TestTuple;
 
   51     std::vector<TestTuple> tests =
 
   53         std::make_tuple(0.5,       
true,  
true),  
 
   54         std::make_tuple(1.0 - eps, 
true,  
true),  
 
   55         std::make_tuple(1.0,       
true,  
true),  
 
   56         std::make_tuple(1.0 + eps, 
false, 
true),  
 
   57         std::make_tuple(1.5,       
false, 
false)  
 
   60     for (
unsigned int dir = 0; dir < 3; ++dir)
 
   61       for (
const auto & t : tests)
 
   64           Point dmin = min, dmax = max;
 
   65           dmin(dir) = dmax(dir) = std::get<0>(t);
 
   72           CPPUNIT_ASSERT(non_degenerate.
intersects(degenerate) == std::get<1>(t));
 
   73           CPPUNIT_ASSERT(degenerate.
intersects(non_degenerate) == std::get<1>(t));
 
   92     const Real eps = std::numeric_limits<Real>::epsilon();
 
  101     typedef std::tuple<Real, bool, bool> TestTuple;
 
  102     std::vector<TestTuple> tests =
 
  104         std::make_tuple(0.5,       
true,  
true),  
 
  105         std::make_tuple(0.5 - eps, 
false, 
true),  
 
  106         std::make_tuple(0.5 + eps, 
false, 
true),  
 
  107         std::make_tuple(1.0,       
false, 
false)  
 
  110     for (
unsigned int dir = 0; dir < 3; ++dir)
 
  119           min(
Point(mins[0], mins[1], mins[2])),
 
  120           max(
Point(maxs[0], maxs[1], maxs[2]));
 
  125         for (
const auto & t : tests)
 
  128             Point cmin = min, cmax = max;
 
  129             cmin(dir) = cmax(dir) = std::get<0>(t);
 
  133             CPPUNIT_ASSERT(initial.
intersects(comparison) == std::get<1>(t));
 
  134             CPPUNIT_ASSERT(comparison.
intersects(initial) == std::get<1>(t));
 
  144         std::rotate(mins.rbegin(), mins.rbegin()+1, mins.rend());
 
  145         std::rotate(maxs.rbegin(), maxs.rbegin()+1, maxs.rend());
 
  152     const Real eps = std::numeric_limits<Real>::epsilon();
 
  166     typedef std::tuple<Real, bool, bool> TestTuple;
 
  167     std::vector<TestTuple> tests =
 
  169         std::make_tuple(1.,       
true,  
true),  
 
  170         std::make_tuple(1. + eps, 
false, 
true),  
 
  171         std::make_tuple(1. - eps, 
true,  
true),  
 
  172         std::make_tuple(1.5,      
false, 
false), 
 
  173         std::make_tuple(0.5,      
true,  
true)   
 
  176     for (
unsigned int dir = 0; dir < 3; ++dir)
 
  185           min(
Point(mins[0], mins[1], mins[2])),
 
  186           max(
Point(maxs[0], maxs[1], maxs[2]));
 
  190         for (
const auto & t : tests)
 
  193             Point cmin = min, cmax = max;
 
  194             cmin(dir) = std::get<0>(t);
 
  200             CPPUNIT_ASSERT(initial.
intersects(comparison) == std::get<1>(t));
 
  201             CPPUNIT_ASSERT(comparison.
intersects(initial) == std::get<1>(t));
 
  211         std::rotate(mins.rbegin(), mins.rbegin()+1, mins.rend());
 
  212         std::rotate(maxs.rbegin(), maxs.rbegin()+1, maxs.rend());