#include "mitkSurfaceToImageFilter.h"
#include "mitkGeometryClipImageFilter.h"
#include "mitkImageSliceSelector.h"
#include <fstream>
#include "mitkReferenceCountWatcher.h"
Go to the source code of this file.
Classes | |
class | TwoOutputsFilter |
Functions | |
template<class FilterType , class InputType > | |
int | runPipelineSmartPointerCorrectnessTestForFilterType (typename InputType::Pointer input) |
int | mitkPipelineSmartPointerCorrectnessTest (int, char *[]) |
int mitkPipelineSmartPointerCorrectnessTest | ( | int | , |
char * | [] | ||
) |
Definition at line 328 of file mitkPipelineSmartPointerCorrectnessTest.cpp.
References EXIT_SUCCESS, mitk::Image::New(), and mitk::Surface::New().
{ int result; result = runPipelineSmartPointerCorrectnessTestForFilterType<mitk::SurfaceToImageFilter, mitk::Surface>(mitk::Surface::New()); if( result != EXIT_SUCCESS ) return result; std::cout << std::endl; result = runPipelineSmartPointerCorrectnessTestForFilterType<mitk::GeometryClipImageFilter, mitk::Image>(mitk::Image::New()); if( result != EXIT_SUCCESS ) return result; std::cout << std::endl; result = runPipelineSmartPointerCorrectnessTestForFilterType<TwoOutputsFilter, mitk::Surface>(mitk::Surface::New()); if( result != EXIT_SUCCESS ) return result; result = runPipelineSmartPointerCorrectnessTestForFilterType<mitk::ImageSliceSelector, mitk::Image>(mitk::Image::New()); if( result != EXIT_SUCCESS ) return result; std::cout<<"[TEST DONE]"<<std::endl; return EXIT_SUCCESS; }
int runPipelineSmartPointerCorrectnessTestForFilterType | ( | typename InputType::Pointer | input ) |
Definition at line 47 of file mitkPipelineSmartPointerCorrectnessTest.cpp.
References EXIT_FAILURE, and EXIT_SUCCESS.
{ typename FilterType::Pointer filter; std::cout << "Testing " << typeid(FilterType).name() << "::New(): "; filter = FilterType::New(); if (filter.IsNull()) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else { std::cout<<"[PASSED]"<<std::endl; } std::cout << "Testing SetInput(" << typeid(FilterType).name() << "): "; filter->SetInput(input); std::cout<<"[PASSED]"<<std::endl; //std::cout << "Testing mitk::SurfaceToImageFilter::*TESTED_METHOD_DESCRIPTION: "; //if (filter.IsNull()) { // std::cout<<"[FAILED]"<<std::endl; // // return EXIT_FAILURE; //} //else { //std::cout<<"[PASSED]"<<std::endl; //} //#ifdef MITK_WEAKPOINTER_PROBLEM_WORKAROUND_ENABLED //MITK_WEAKPOINTER_PROBLEM_WORKAROUND_ENABLED test std::cout << "Initializing mitk::ReferenceCountWatcher: "; mitk::ReferenceCountWatcher::Pointer filterWatcher, filterOutputWatcher; filterWatcher = new mitk::ReferenceCountWatcher(filter, "filter1"); filterOutputWatcher = new mitk::ReferenceCountWatcher(filter->GetOutput(), "filter1Output"); std::cout<<"[PASSED]"<<std::endl; std::cout << "Testing MITK_WEAKPOINTER_PROBLEM_WORKAROUND_ENABLED part1: "<<std::endl; try { mitk::Image::Pointer output = filter->GetOutput(); std::cout << "Testing to set filter to NULL, keeping reference to output:"; filter = NULL; std::cout<<"[PASSED]"<<std::endl; std::cout << "Testing reference count of output: "; if(output->GetReferenceCount()!=2) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else std::cout<<"[PASSED]"<<std::endl; std::cout << "Testing external reference count of output: "; if(output->GetExternalReferenceCount()!=1) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else std::cout<<"[PASSED]"<<std::endl; std::cout << "Testing to set output to NULL:"; //output->GetSource()->DebugOn(); //output->DebugOn(); output = NULL; std::cout<<"[PASSED]"<<std::endl; std::cout << "Testing reference count of filter:"; if(filterWatcher->GetReferenceCount()!=0) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else std::cout<<"[PASSED]"<<std::endl; std::cout << "Testing reference count of filter output:"; if(filterOutputWatcher->GetReferenceCount()!=0) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else std::cout<<"[PASSED]"<<std::endl; } catch(...) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } std::cout << "Testing MITK_WEAKPOINTER_PROBLEM_WORKAROUND_ENABLED part2: "<<std::endl; filter = FilterType::New(); filterWatcher = new mitk::ReferenceCountWatcher(filter, "filter2"); filterOutputWatcher = new mitk::ReferenceCountWatcher(filter->GetOutput(), "filter2Output"); try { std::cout << "Testing to set filter to NULL, keeping NO reference to output:"; filter = NULL; std::cout<<"[PASSED]"<<std::endl; std::cout << "Testing reference count of filter:"; if(filterWatcher->GetReferenceCount()!=0) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else std::cout<<"[PASSED]"<<std::endl; std::cout << "Testing reference count of filter output:"; if(filterOutputWatcher->GetReferenceCount()!=0) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else std::cout<<"[PASSED]"<<std::endl; } catch(...) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } std::cout << "Testing MITK_WEAKPOINTER_PROBLEM_WORKAROUND_ENABLED part3: "<<std::endl; try { mitk::Image::Pointer output; { typename FilterType::Pointer localFilter = FilterType::New(); filterWatcher = new mitk::ReferenceCountWatcher(localFilter, "filter3"); filterOutputWatcher = new mitk::ReferenceCountWatcher(localFilter->GetOutput(), "filter3Output"); output = localFilter->GetOutput(); std::cout << "Testing running out of scope of filter, keeping reference to output:"; } std::cout<<"[PASSED]"<<std::endl; std::cout << "Testing reference count of output: "; if(output->GetReferenceCount()!=2) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else std::cout<<"[PASSED]"<<std::endl; std::cout << "Testing external reference count of output: "; if(output->GetExternalReferenceCount()!=1) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else std::cout<<"[PASSED]"<<std::endl; std::cout << "Testing to set output to NULL:"; output = NULL; std::cout<<"[PASSED]"<<std::endl; std::cout << "Testing reference count of filter:"; if(filterWatcher->GetReferenceCount()!=0) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else std::cout<<"[PASSED]"<<std::endl; std::cout << "Testing reference count of filter output:"; if(filterOutputWatcher->GetReferenceCount()!=0) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else std::cout<<"[PASSED]"<<std::endl; } catch(...) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } std::cout << "Testing MITK_WEAKPOINTER_PROBLEM_WORKAROUND_ENABLED part4: "<<std::endl; try { mitk::Image::Pointer output; { typename FilterType::Pointer localFilter = FilterType::New(); filterWatcher = new mitk::ReferenceCountWatcher(localFilter, "filter4"); filterOutputWatcher = new mitk::ReferenceCountWatcher(localFilter->GetOutput(), "filter4Output"); output = localFilter->GetOutput(); std::cout << "Testing running out of scope of filter, keeping reference to output (as in part 3):"; } std::cout<<"[PASSED]"<<std::endl; std::cout << "Testing output->DisconnectPipeline(): "; output->DisconnectPipeline(); std::cout<<"[PASSED]"<<std::endl; std::cout << "Testing reference count of output: "; if(output->GetReferenceCount()!=1) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else std::cout<<"[PASSED]"<<std::endl; std::cout << "Testing external reference count of output: "; if(output->GetExternalReferenceCount()!=1) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else std::cout<<"[PASSED]"<<std::endl; std::cout << "Testing reference count of filter:"; if(filterWatcher->GetReferenceCount()!=0) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else std::cout<<"[PASSED]"<<std::endl; std::cout << "Testing to set output to NULL:"; output = NULL; std::cout<<"[PASSED]"<<std::endl; std::cout << "Testing reference count of filter output:"; if(filterOutputWatcher->GetReferenceCount()!=0) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else std::cout<<"[PASSED]"<<std::endl; } catch(...) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } std::cout << "Testing MITK_WEAKPOINTER_PROBLEM_WORKAROUND_ENABLED part5: "<<std::endl; try { { typename FilterType::Pointer localFilter = FilterType::New(); filterWatcher = new mitk::ReferenceCountWatcher(localFilter, "filter5"); filterOutputWatcher = new mitk::ReferenceCountWatcher(localFilter->GetOutput(), "filter5Output"); std::cout << "Testing running out of scope of filter, keeping NO reference to output:"; } std::cout<<"[PASSED]"<<std::endl; std::cout << "Testing reference count of filter:"; if(filterWatcher->GetReferenceCount()!=0) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else std::cout<<"[PASSED]"<<std::endl; std::cout << "Testing reference count of filter output:"; if(filterOutputWatcher->GetReferenceCount()!=0) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } else std::cout<<"[PASSED]"<<std::endl; } catch(...) { std::cout<<"[FAILED]"<<std::endl; return EXIT_FAILURE; } return EXIT_SUCCESS; //#endif }