Functions

mitkGeometryDataToSurfaceFilterTest.cpp File Reference

#include "mitkGeometry2DDataToSurfaceFilter.h"
#include "mitkSurface.h"
#include "mitkPlaneGeometry.h"
#include "mitkGeometry2DData.h"
#include "vtkPolyData.h"
#include <fstream>

Go to the source code of this file.

Functions

template<typename TScalarType >
int testExpectedIndexBoundingBox (mitk::Geometry3D *geometry, TScalarType expectedIndexBounds[6])
template<typename TScalarType >
int testExpectedAxisParallelBoundingBox (mitk::Geometry3D *geometry, TScalarType expectedAxisParallelBounds[6])
int testSurfaceBoundingBoxConsistency (mitk::Surface *surface, bool expectIdentityTransform)
int testGeometryDataToSurfaceFilter (mitk::Geometry2DDataToSurfaceFilter *geometryToSurfaceFilter, mitk::ScalarType expectedIndexBounds[6], mitk::ScalarType expectedAxisParallelBounds[6], bool expectIdentityTransform)
int mitkGeometryDataToSurfaceFilterTest (int, char *[])

Function Documentation

int mitkGeometryDataToSurfaceFilterTest ( int  ,
char *  [] 
)

Definition at line 156 of file mitkGeometryDataToSurfaceFilterTest.cpp.

References EXIT_FAILURE, EXIT_SUCCESS, mitk::Geometry2DData::New(), mitk::PlaneGeometry::New(), mitk::Geometry2DDataToSurfaceFilter::New(), and testGeometryDataToSurfaceFilter().

{
  int result;

  std::cout << "Testing mitk::Geometry2DDataToSurfaceFilter: " << std::endl;

  mitk::Geometry2DDataToSurfaceFilter::Pointer geometryToSurfaceFilter;
  std::cout << "Testing Geometry2DDataToSurfaceFilter::New(): ";
  geometryToSurfaceFilter = mitk::Geometry2DDataToSurfaceFilter::New();
  if (geometryToSurfaceFilter.IsNull()) {
    std::cout<<"[FAILED]"<<std::endl;
    return EXIT_FAILURE;
  }
  else {
    std::cout<<"[PASSED]"<<std::endl;
  } 

  mitk::Point3D origin;
  mitk::PlaneGeometry::Pointer plane = mitk::PlaneGeometry::New();
  plane->InitializeStandardPlane(50, 100);
  mitk::FillVector3D(origin, 1.0, 2.0, 3.0);
  plane->SetOrigin(origin);

  mitk::Geometry2DData::Pointer geometryData = mitk::Geometry2DData::New();
  geometryData->SetGeometry2D(plane);

  std::cout << "Testing SetInput(): ";
  geometryToSurfaceFilter->SetInput(geometryData);
  std::cout<<"[PASSED]"<<std::endl;

  std::cout << "Testing GetInput(): ";
  if (geometryToSurfaceFilter->GetInput() !=  geometryData ) {
    std::cout<<"[FAILED]"<<std::endl;
    return EXIT_FAILURE;
  }
  else {
    std::cout<<"[PASSED]"<<std::endl;
  }


  std::cout << "Testing default of Geometry2DDataToSurfaceFilter::m_PlaceByGeometry (expected is false): ";
  if (geometryToSurfaceFilter->GetPlaceByGeometry() !=  false ) {
    std::cout<<"[FAILED]"<<std::endl;
    return EXIT_FAILURE;
  }
  else {
    std::cout<<"[PASSED]"<<std::endl;
  }

  // test with m_PlaceByGeometry==false
  mitk::ScalarType expectedBoundsFinal[6] = {1.0, 51.0, 2.0, 102.0, 3.0, 3.0};
  if((result=testGeometryDataToSurfaceFilter(geometryToSurfaceFilter, expectedBoundsFinal, expectedBoundsFinal, true)) != EXIT_SUCCESS) {
    return result;
  }

  std::cout << "Testing Geometry2DDataToSurfaceFilter::SetPlaceByGeometry(true): ";
  geometryToSurfaceFilter->SetPlaceByGeometry(true);
  if (geometryToSurfaceFilter->GetPlaceByGeometry() !=  true ) {
    std::cout<<"[FAILED]"<<std::endl;
    return EXIT_FAILURE;
  }
  else {
    std::cout<<"[PASSED]"<<std::endl;
  }

  // test with m_PlaceByGeometry==true
  mitk::ScalarType expectedIndexBounds[6] = {0.0, 50.0, 0.0, 100.0, 0.0, 0.0};
  mitk::ScalarType expectedAxisParallelBounds[6] = {1.0, 51.0, 2.0, 102.0, 3.0, 3.0};
  if((result=testGeometryDataToSurfaceFilter(geometryToSurfaceFilter, expectedIndexBounds, expectedAxisParallelBounds, true)) != EXIT_SUCCESS) {
    return result;
  }



  // test with specified BoundingBox (m_PlaceByGeometry is irrelevant for this test)
  mitk::BoundingBox::Pointer boundingBox = mitk::BoundingBox::New();
  mitk::Point3D bbMin, bbMax;
  mitk::FillVector3D( bbMin, 10.0, 10.0, -6.0 );
  mitk::FillVector3D( bbMax, 40.0, 90.0, 6.0 );

  mitk::BoundingBox::PointsContainer::Pointer pointsContainer = mitk::BoundingBox::PointsContainer::New();
  pointsContainer->InsertElement( 0, bbMin );
  pointsContainer->InsertElement( 1, bbMax );
  boundingBox->SetPoints( pointsContainer );
  boundingBox->ComputeBoundingBox();


  geometryToSurfaceFilter->SetPlaceByGeometry( true );
  geometryToSurfaceFilter->SetBoundingBox( boundingBox );
  mitk::ScalarType expectedIndexBoundsWithBB[6] = {9.0, 39.0, 8.0, 88.0, 0.0, 0.0};
  mitk::ScalarType expectedAxisParallelBoundsWithBB[6] = {10.0, 40.0, 10.0, 90.0, 3.0, 3.0};
  if((result=testGeometryDataToSurfaceFilter(geometryToSurfaceFilter, expectedIndexBoundsWithBB, expectedAxisParallelBoundsWithBB, true)) != EXIT_SUCCESS) {
    return result;
  }


  std::cout<<"[TEST DONE]"<<std::endl;
  return EXIT_SUCCESS;
}
template<typename TScalarType >
int testExpectedAxisParallelBoundingBox ( mitk::Geometry3D geometry,
TScalarType  expectedAxisParallelBounds[6] 
)

Definition at line 48 of file mitkGeometryDataToSurfaceFilterTest.cpp.

References mitk::Geometry3D::CalculateBoundingBoxRelativeToTransform(), EXIT_FAILURE, and EXIT_SUCCESS.

Referenced by testGeometryDataToSurfaceFilter().

{
  mitk::BoundingBox::Pointer bb = geometry->CalculateBoundingBoxRelativeToTransform(NULL);
  mitk::BoundingBox::BoundsArrayType bounds = bb->GetBounds();

  int i;
  for(i=0;i<6;++i)
  {
    if( mitk::Equal(bounds[i], expectedAxisParallelBounds[i]) == false)
    {
      std::cout<<"[FAILED]"<<std::endl;
      return EXIT_FAILURE;
    }
  }
  std::cout<<"[PASSED]"<<std::endl;
  return EXIT_SUCCESS;
}
template<typename TScalarType >
int testExpectedIndexBoundingBox ( mitk::Geometry3D geometry,
TScalarType  expectedIndexBounds[6] 
)

Definition at line 29 of file mitkGeometryDataToSurfaceFilterTest.cpp.

References EXIT_FAILURE, EXIT_SUCCESS, and mitk::Geometry3D::GetBoundingBox().

Referenced by testGeometryDataToSurfaceFilter(), and testSurfaceBoundingBoxConsistency().

{
  mitk::BoundingBox* bb = const_cast<mitk::BoundingBox*>(geometry->GetBoundingBox());
  mitk::BoundingBox::BoundsArrayType bounds = bb->GetBounds();

  int i;
  for(i=0;i<6;++i)
  {
    if( mitk::Equal(bounds[i], expectedIndexBounds[i]) == false)
    {
      std::cout<<"[FAILED]"<<std::endl;
      return EXIT_FAILURE;
    }
  }
  std::cout<<"[PASSED]"<<std::endl;
  return EXIT_SUCCESS;
}
int testGeometryDataToSurfaceFilter ( mitk::Geometry2DDataToSurfaceFilter geometryToSurfaceFilter,
mitk::ScalarType  expectedIndexBounds[6],
mitk::ScalarType  expectedAxisParallelBounds[6],
bool  expectIdentityTransform 
)

Definition at line 108 of file mitkGeometryDataToSurfaceFilterTest.cpp.

References EXIT_SUCCESS, mitk::BaseData::GetGeometry(), mitk::SurfaceSource::GetOutput(), mitk::Surface::SetRequestedRegionToLargestPossibleRegion(), testExpectedAxisParallelBoundingBox(), testExpectedIndexBoundingBox(), and testSurfaceBoundingBoxConsistency().

Referenced by mitkGeometryDataToSurfaceFilterTest().

{
  int result;

  std::cout << "Testing SetRequestedRegionToLargestPossibleRegion(): ";
  geometryToSurfaceFilter->GetOutput()->SetRequestedRegionToLargestPossibleRegion();
  std::cout<<"[PASSED]"<<std::endl;

  std::cout << "Testing UpdateOutputInformation(): ";
  geometryToSurfaceFilter->UpdateOutputInformation();
  std::cout<<"[PASSED]"<<std::endl;

  std::cout << "Testing correctness of bounding-box after UpdateOutputInformation(): ";
  if((result=testExpectedIndexBoundingBox(geometryToSurfaceFilter->GetOutput()->GetGeometry(), expectedIndexBounds)) != EXIT_SUCCESS) {
    return result;
  }

  std::cout << "Testing correctness of axis-parallel bounding-box after UpdateOutputInformation(): ";
  if((result=testExpectedAxisParallelBoundingBox(geometryToSurfaceFilter->GetOutput()->GetGeometry(), expectedAxisParallelBounds)) != EXIT_SUCCESS) {
    return result;
  }


  std::cout << "Testing Update(): ";
  geometryToSurfaceFilter->Update();
  std::cout<<"[PASSED]"<<std::endl;

  std::cout << "Testing correctness of bounding-box after Update(): ";
  if((result=testExpectedIndexBoundingBox(geometryToSurfaceFilter->GetOutput()->GetGeometry(), expectedIndexBounds)) != EXIT_SUCCESS) {
    return result;
  }

  std::cout << "Testing correctness of axis-parallel bounding-box after UpdateOutputInformation(): ";
  if((result=testExpectedAxisParallelBoundingBox(geometryToSurfaceFilter->GetOutput()->GetGeometry(), expectedAxisParallelBounds)) != EXIT_SUCCESS) {
    return result;
  }

  std::cout << "Testing bounding-box consistency: "<<std::endl;
  if((result=testSurfaceBoundingBoxConsistency(geometryToSurfaceFilter->GetOutput(), expectIdentityTransform)) != EXIT_SUCCESS) {
    std::cout<<"[FAILED]"<<std::endl;
    return result;
  }
  else {
    std::cout<<"[PASSED]"<<std::endl;
  }
  return EXIT_SUCCESS;
}
int testSurfaceBoundingBoxConsistency ( mitk::Surface surface,
bool  expectIdentityTransform 
)

Definition at line 66 of file mitkGeometryDataToSurfaceFilterTest.cpp.

References EXIT_FAILURE, EXIT_SUCCESS, mitk::BaseData::GetGeometry(), mitk::Geometry3D::GetIndexToWorldTransform(), mitk::Surface::GetVtkPolyData(), mitk::Geometry2D::New(), and testExpectedIndexBoundingBox().

Referenced by testGeometryDataToSurfaceFilter().

{
  int result;
  std::cout << "  Testing surface contents: ";
  if ((surface ==  NULL ) 
    || (surface->GetVtkPolyData() == NULL)
    || (surface->GetVtkPolyData()->GetNumberOfPoints() == 0 )) {
    std::cout<<"[FAILED]"<<std::endl;
    return EXIT_FAILURE;
  }
  else {
    std::cout<<"[PASSED]"<<std::endl;
  }

  vtkFloatingPointType bounds[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};

  vtkPolyData* polys = surface->GetVtkPolyData();
  polys->ComputeBounds();
  polys->GetBounds( bounds );

  int i;
  if(expectIdentityTransform == false)
  {
    mitk::Geometry2D::Pointer geometry = mitk::Geometry2D::New();
    geometry->SetFloatBounds(bounds);
    geometry->SetIndexToWorldTransform(surface->GetGeometry()->GetIndexToWorldTransform());
    mitk::BoundingBox::BoundsArrayType bb = const_cast<mitk::BoundingBox*>(geometry->GetBoundingBox())->GetBounds();
    for(i=0;i<6;++i)
      bounds[i]=bb[i];
  }

  std::cout << "  Testing GetBoundingBox() ";
  if((result=testExpectedIndexBoundingBox(surface->GetGeometry(), bounds)) != EXIT_SUCCESS)
  {
    std::cout<<"[FAILED]"<<std::endl;
    return EXIT_FAILURE;
  }
  std::cout<<"[PASSED]"<<std::endl;

  return EXIT_SUCCESS;
}
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines