diff --git a/Core/Code/Testing/mitkSurfaceToSurfaceFilterTest.cpp b/Core/Code/Testing/mitkSurfaceToSurfaceFilterTest.cpp index 7f26be3e42..0fe7ca5980 100644 --- a/Core/Code/Testing/mitkSurfaceToSurfaceFilterTest.cpp +++ b/Core/Code/Testing/mitkSurfaceToSurfaceFilterTest.cpp @@ -1,121 +1,117 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #include "mitkSurface.h" #include "mitkSurfaceToSurfaceFilter.h" #include "mitkCommon.h" #include "mitkNumericTypes.h" +#include "mitkTestingMacros.h" #include "vtkPolyData.h" #include "vtkSphereSource.h" -#include int mitkSurfaceToSurfaceFilterTest(int /*argc*/, char* /*argv*/[]) { mitk::Surface::Pointer surface; surface = mitk::Surface::New(); 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(); mitk::SurfaceToSurfaceFilter::Pointer filter = mitk::SurfaceToSurfaceFilter::New(); - std::cout << "Testing mitk::SurfaceToSurfaceFilter::SetInput() and ::GetNumberOfInputs() : " ; + MITK_TEST_OUTPUT(<<"Testing mitk::SurfaceToSurfaceFilter::SetInput() and ::GetNumberOfInputs() : "); filter->SetInput( surface ); - if ( filter->GetNumberOfInputs() < 1 ) - { - std::cout<<"[FAILED] : zero inputs set "<GetNumberOfInputs() == 1, "Number of inputs must be 1" ); + MITK_TEST_OUTPUT(<<"Testing if GetInput returns the right Input : "); + mitk::Surface::Pointer input = const_cast(filter->GetInput()); + MITK_ASSERT_EQUAL(input, surface, "GetInput() should return correct input. "); - std::cout << "Testing if GetInput returns the right Input : " << std::endl; - if ( filter->GetInput() != surface ) - { - std::cout<<"[FAILED] : GetInput does not return correct input. "<GetInput(5) == NULL, "GetInput(5) should return NULL. "); + MITK_TEST_OUTPUT(<<"Testing whether Output is created correctly : "); + MITK_TEST_CONDITION(filter->GetNumberOfOutputs() == filter->GetNumberOfInputs(), "Test if number of outputs == number of inputs"); - if ( filter->GetInput(5) != NULL ) - { - std::cout<<"[FAILED] : GetInput returns inputs that were not set. "< is NULL" << std::endl; + mitk::Surface::Pointer outputSurface = filter->GetOutput(); + MITK_ASSERT_EQUAL(outputSurface, surface, "Test if output == input"); + + filter->Update(); + outputSurface = filter->GetOutput(); + MITK_TEST_CONDITION(outputSurface->GetSizeOfPolyDataSeries() == surface->GetSizeOfPolyDataSeries(), "Test if number of PolyDatas in PolyDataSeries of output == number of PolyDatas of input"); + mitk::SurfaceToSurfaceFilter::Pointer s2sFilter = mitk::SurfaceToSurfaceFilter::New(); + MITK_TEST_FOR_EXCEPTION(mitk::Exception, s2sFilter->CreateOutputForInput(500)); - std::cout << "Testing whether Output is created correctly : " << std::endl; - if ( filter->GetNumberOfOutputs() != filter->GetNumberOfInputs() ) + std::vector polydatas; + for (unsigned int i = 0; i < 5; ++i) { - std::cout <<"[FAILED] : number of outputs != number of inputs" << std::endl; - return EXIT_FAILURE; + sphereSource = vtkSphereSource::New(); + sphereSource->SetCenter(0,i,0); + sphereSource->SetRadius(5.0 + i); + sphereSource->SetThetaResolution(10); + sphereSource->SetPhiResolution(10); + sphereSource->Update(); + + vtkPolyData* poly = sphereSource->GetOutput(); + mitk::Surface::Pointer s = mitk::Surface::New(); + s->SetVtkPolyData( poly ); + s2sFilter->SetInput(i, s); + polydatas.push_back(s2sFilter->GetOutput(i)->GetVtkPolyData()); + sphereSource->Delete(); } - std::cout << "[SUCCESS] : number of inputs == number of outputs." << std::endl; - - mitk::Surface::Pointer outputSurface = filter->GetOutput(); - if ( outputSurface->GetVtkPolyData()->GetNumberOfPolys() != surface->GetVtkPolyData()->GetNumberOfPolys() ) + // Test if the outputs are not recreated each time another input is added + for (unsigned int i = 0; i < 5; ++i) { - std::cout << "[FAILED] : number of Polys in PolyData of output != number of Polys in PolyData of input" << std::endl; - return EXIT_FAILURE; + MITK_TEST_CONDITION(s2sFilter->GetOutput(i)->GetVtkPolyData() == polydatas.at(i), "Test if pointers are still equal"); } - std::cout << "[SUCCESS] : number of Polys in PolyData of input and output are identical." << std::endl; - - - filter->Update(); - outputSurface = filter->GetOutput(); - if ( outputSurface->GetSizeOfPolyDataSeries() != surface->GetSizeOfPolyDataSeries() ) + // Test if the outputs are recreated after calling CreateOutputsForAllInputs() + s2sFilter->CreateOutputsForAllInputs(); + for (unsigned int i = 0; i < 5; ++i) { - std::cout << "[FAILED] : number of PolyDatas in PolyDataSeries of output != number of PolyDatas of input" << std::endl; - return EXIT_FAILURE; + MITK_TEST_CONDITION(s2sFilter->GetOutput(i)->GetVtkPolyData() != polydatas.at(i), "Test if pointers are not equal"); } - std::cout << "[SUCCESS] : Size of PolyDataSeries of input and output are identical." << std::endl; - //std::cout << "Testing RemoveInputs() : " << std::endl; //unsigned int numOfInputs = filter->GetNumberOfInputs(); //filter->RemoveInputs( mitk::Surface::New() ); //if ( filter->GetNumberOfInputs() != numOfInputs ) //{ // std::cout << "[FAILED] : input was removed that was not set." << std::endl; // return EXIT_FAILURE; //} //std::cout << "[SUCCESS] : no input was removed that was not set." << std::endl; //filter->RemoveInputs( surface ); //if ( filter->GetNumberOfInputs() != 0 ) //{ // std::cout << "[FAILED] : existing input was not removed correctly." << std::endl; // return EXIT_FAILURE; //} //std::cout << "[SUCCESS] : existing input was removed correctly." << std::endl; - - - std::cout<<"[TEST DONE]"<