00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00021 #include "Gral/Iterators/closure-iterator.h"
00022
00023 #include "Gral/Grids/Cartesian2D/all.h"
00024
00025 #include "Gral/Test/test-vertex-iterator.h"
00026 #include "Gral/Test/test-facet-iterator.h"
00027 #include "Gral/Base/extend-grid-types.h"
00028
00029
00030 using namespace GrAL;
00031
00032 typedef grid_types<cartesian2d::CartesianGrid2D> gt;
00033 template class closure_iterator<gt::CellIterator, gt::FacetOnCellIterator>;
00034 template class closure_iterator<gt::CellIterator, gt::VertexOnCellIterator>;
00035 template class closure_iterator<gt::FacetOnCellIterator, gt::VertexOnFacetIterator>;
00036
00037
00038 int main() {
00039
00040
00041 gt::grid_type R(3,3);
00042
00043 {
00044 typedef closure_iterator<gt::CellIterator, gt::FacetOnCellIterator> markedFacetIterator;
00045
00046 grid_function<gt::Facet, gt::facet_handle> fh(R);
00047 int nf = 0;
00048 for(markedFacetIterator f(R.FirstCell()); !f.IsDone(); ++f, ++nf)
00049 fh[*f] = f.handle();
00050
00051 for(gt::FacetIterator f(R); !f.IsDone(); ++f)
00052 REQUIRE_ALWAYS(fh(*f) == f.handle(), "", 1);
00053
00054 REQUIRE_ALWAYS( nf == R.NumOfFacets(),
00055 "R.NumOfFacets()=" << R.NumOfFacets() << " nf=" << nf, 1);
00056
00057 typedef xgt<gt, override_FacetIterator<markedFacetIterator> > mygt;
00058 test_facet_iterator(R,std::cout, mygt());
00059 }
00060
00061 {
00062 typedef closure_iterator<gt::CellIterator, gt::VertexOnCellIterator> markedVertexIterator;
00063
00064 grid_function<gt::Vertex, gt::vertex_handle> vh(R);
00065 int n = 0;
00066 for(markedVertexIterator v(R.FirstCell()); !v.IsDone(); ++v, ++n)
00067 vh[*v] = v.handle();
00068
00069 for(gt::VertexIterator v(R); !v.IsDone(); ++v)
00070 REQUIRE_ALWAYS(vh(*v) == v.handle(), "", 1);
00071
00072 REQUIRE_ALWAYS( n == R.NumOfVertices(),
00073 "R.NumOfVertices()=" << R.NumOfVertices() << " n=" << n, 1);
00074
00075 typedef xgt<gt, override_VertexIterator<markedVertexIterator> > mygt;
00076 test_vertex_iterator(R,std::cout, mygt());
00077 }
00078
00079
00080
00081 }
00082