Пример #1
0
static bool check_range_set( EntityTopology type, NodeSet set, unsigned dim, bool value = true )
{
  const unsigned max_count[] = { NodeSet::NUM_CORNER_BITS, NodeSet::NUM_EDGE_BITS,
                                 NodeSet::NUM_FACE_BITS, NodeSet::NUM_REGION_BITS };
  
    // test that any bits corresponding to some other dimension are not set.
  for (unsigned d = 0; d <= 3; ++d) {
    if (d == dim)
      continue;
    
    for (unsigned i = 0; i < max_count[d]; ++i)
      if (!set.node( Sample(d,i) ) != value)
        return false;
  }
  
    // test that any bits for this dimension beyond the number for this
    // type are not set
  for (unsigned i = TopologyInfo::adjacent( type, dim ); i < max_count[dim]; ++i)
    if (!set.node( Sample(dim,i) ) != value)
      return false;
  
    // test that any bits for the type and dimension are set
  for (unsigned i = 0; i < TopologyInfo::adjacent( type, dim ); ++i)
    if (set.node( Sample(dim,i) ) == value)
      return false;

  return true;
}
Пример #2
0
static bool check_all( EntityTopology type, NodeSet set, unsigned dim, bool value )
{
  unsigned count = TopologyInfo::adjacent( type, dim );
  for (unsigned i = 0; i < count; ++i)
    if (set.node( Sample(dim, i) ) != value )
      return false;
  return true;
}
Пример #3
0
void NodeSetTest::test_set_get_clear_dim()
{
  NodeSet set;
  for (unsigned i = 0; i < NodeSet::NUM_CORNER_BITS; ++i) {
    CPPUNIT_ASSERT( !set.node(Sample(0,i)) );
    set.set_node( Sample(0, i) );
    CPPUNIT_ASSERT( set.node(Sample(0,i)) );
    set.clear_node( Sample(0, i) );
    CPPUNIT_ASSERT( !set.node(Sample(0,i)) );
  }
  for (unsigned i = 0; i < NodeSet::NUM_EDGE_BITS; ++i) {
    CPPUNIT_ASSERT( !set.node(Sample(1,i)) );
    set.set_node( Sample(1, i) );
    CPPUNIT_ASSERT( set.node(Sample(1,i)) );
    set.clear_node( Sample(1, i) );
    CPPUNIT_ASSERT( !set.node(Sample(1,i)) );
  }
  for (unsigned i = 0; i < NodeSet::NUM_FACE_BITS; ++i) {
    CPPUNIT_ASSERT( !set.node(Sample(2,i)) );
    set.set_node( Sample(2, i) );
    CPPUNIT_ASSERT( set.node(Sample(2,i)) );
    set.clear_node( Sample(2, i) );
    CPPUNIT_ASSERT( !set.node(Sample(2,i)) );
  }
  for (unsigned i = 0; i < NodeSet::NUM_REGION_BITS; ++i) {
    CPPUNIT_ASSERT( !set.node(Sample(3,i)) );
    set.set_node( Sample(3, i) );
    CPPUNIT_ASSERT( set.node(Sample(3,i)) );
    set.clear_node( Sample(3, i) );
    CPPUNIT_ASSERT( !set.node(Sample(3,i)) );
  }
}