#include "mitkSurface.h"
#include "mitkCommon.h"
#include "mitkVector.h"
#include "mitkTimeSlicedGeometry.h"
#include "vtkPolyData.h"
#include "vtkSphereSource.h"
#include <fstream>
Go to the source code of this file.
Functions | |
int | mitkSurfaceTest (int, char *[]) |
int mitkSurfaceTest | ( | int | , |
char * | [] | ||
) |
Definition at line 29 of file mitkSurfaceTest.cpp.
References EXIT_FAILURE, EXIT_SUCCESS, mitk::TimeSlicedGeometry::MSToTimeStep(), and mitk::Surface::New().
{ mitk::Surface::Pointer surface; std::cout << "Testing mitk::Surface::New(): "; surface = mitk::Surface::New(); if (surface.IsNull()) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else { std::cout<<"[PASSED]"<<std::endl; } std::cout << "Testing mitk::Surface::PrintSelf() for empty surface: "; surface->PrintSelf(std::cout, 0); std::cout<<"[PASSED]"<<std::endl; vtkSphereSource* sphereSource = vtkSphereSource::New(); sphereSource->SetCenter(0,0,0); sphereSource->SetRadius(5.0); sphereSource->SetThetaResolution(10); sphereSource->SetPhiResolution(10); sphereSource->Update(); vtkPolyData* polys = sphereSource->GetOutput(); surface->SetVtkPolyData( polys ); sphereSource->Delete(); std::cout << "Testing mitk::Surface::SetVtkPolyData(): "; if (surface->GetVtkPolyData() == NULL ) { 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}; polys->ComputeBounds(); polys->GetBounds( bounds ); std::cout << "Testing GetBoundingBox() "; surface->UpdateOutputInformation(); surface->SetRequestedRegionToLargestPossibleRegion(); // mitk::BoundingBox bb = const_cast<mitk::BoundingBox*>( mitk::BoundingBox* bb = const_cast<mitk::BoundingBox*>(surface->GetGeometry()->GetBoundingBox()); mitk::BoundingBox::BoundsArrayType surfBounds = bb->GetBounds(); if ( bounds[0] != surfBounds[0] || bounds[1] != surfBounds[1] || bounds[2] != surfBounds[2] || bounds[3] != surfBounds[3] || bounds[4] != surfBounds[4] || bounds[5] != surfBounds[5] ) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else { std::cout<<"[PASSED]"<<std::endl; } } std::cout << "Testing mitk::Surface::Expand( timesteps ): "; surface->Expand(5); surface->Update(); surface->SetRequestedRegionToLargestPossibleRegion(); mitk::Surface::RegionType requestedRegion = surface->GetRequestedRegion(); if ( requestedRegion.GetSize(3) != 5 ) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else { std::cout<<"[PASSED]"<<std::endl; } std::cout << "Testing mitk::Surface::Testing 4D surface data creation: "; // surface = mitk::Surface::New(); //mitk::Geometry3D::Pointer geometry = surface->GetTimeSlicedGeometry()->GetGeometry3D(0); //geometry->GetVtkTransform()->Identity(); //geometry->GetVtkTransform()->Translate(10,10,10); //geometry->TransferVtkToItkTransform(); //mitk::TimeSlicedGeometry* timeSlicedGeometry = surface->GetTimeSlicedGeometry(); //timeSlicedGeometry->InitializeEvenlyTimed(geometry, 5); vtkFloatingPointType bounds[5][6]; for (int i=0;i<5;i++) { vtkSphereSource* sphereSource = vtkSphereSource::New(); sphereSource->SetCenter(0,0,0); sphereSource->SetRadius(1.0 * (i+1.0)); sphereSource->SetThetaResolution(10); sphereSource->SetPhiResolution(10); sphereSource->Update(); sphereSource->GetOutput()->ComputeBounds(); sphereSource->GetOutput()->GetBounds( bounds[i] ); surface->SetVtkPolyData( sphereSource->GetOutput(),i ); sphereSource->Delete(); } surface->UpdateOutputInformation(); surface->SetRequestedRegionToLargestPossibleRegion(); bool passed = true; for (int i=0;i<5;i++) { mitk::BoundingBox::BoundsArrayType surfBounds = (const_cast<mitk::BoundingBox*>(surface->GetTimeSlicedGeometry()->GetGeometry3D(i)->GetBoundingBox()))->GetBounds(); if ( bounds[i][0] != surfBounds[0] || bounds[i][1] != surfBounds[1] || bounds[i][2] != surfBounds[2] || bounds[i][3] != surfBounds[3] || bounds[i][4] != surfBounds[4] || bounds[i][5] != surfBounds[5] ) { passed = false; break; } } if (!passed) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else { std::cout<<"[PASSED]"<<std::endl; } std::cout << "Testing correctness of geometry for surface->GetUpdatedTimeSlicedGeometry(): \n"; const mitk::TimeSlicedGeometry* inputTimeGeometry = surface->GetUpdatedTimeSlicedGeometry(); int time = 3; int timestep=0; timestep = inputTimeGeometry->MSToTimeStep( time ); std::cout << "time: "<< time << std::endl; std::cout << "timestep: "<<timestep << std::endl; if (time != timestep) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else { std::cout<<"[PASSED]"<<std::endl; } std::cout << "Explicitly changing the data of timestep 3 and checking for timebounds correctness of surface's geometry again:\n"; sphereSource = vtkSphereSource::New(); sphereSource->SetCenter(0,0,0); sphereSource->SetRadius( 100.0 ); sphereSource->SetThetaResolution(10); sphereSource->SetPhiResolution(10); sphereSource->Update(); surface->SetVtkPolyData( sphereSource->GetOutput(), 3 ); sphereSource->Delete(); inputTimeGeometry = surface->GetUpdatedTimeSlicedGeometry(); time = 3; timestep=0; timestep = inputTimeGeometry->MSToTimeStep( time ); std::cout << "time: "<< time << std::endl; std::cout << "timestep: "<<timestep << std::endl; if (time != timestep) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else { std::cout<<"[PASSED]"<<std::endl; } std::cout << "Testing copying a Surface with Graft()" << std::endl; unsigned int numberoftimesteps = surface->GetTimeSteps(); mitk::Surface::Pointer dummy = mitk::Surface::New(); dummy->Graft(surface); std::cout << "polyData != NULL ??" << std::endl; if (dummy->GetVtkPolyData() == NULL) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } std::cout << "orig-numberofTimeSteps:" << numberoftimesteps << " copy-numberofTimeSteps:" << dummy->GetTimeSteps() << std::endl; if (dummy->GetTimeSteps() != numberoftimesteps) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } std::cout<<"[TEST DONE]"<<std::endl; return EXIT_SUCCESS; }