Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "mitkImageWriter.h"
00019 #include "mitkDataNodeFactory.h"
00020 #include "mitkTestingMacros.h"
00021
00022 #include <iostream>
00023 #include <fstream>
00024
00033 int mitkImageWriterTest(int argc , char* argv[])
00034 {
00035
00036 MITK_TEST_BEGIN("ImageWriter")
00037
00038
00039 mitk::ImageWriter::Pointer myImageWriter = mitk::ImageWriter::New();
00040
00041
00042
00043
00044 MITK_TEST_CONDITION_REQUIRED(myImageWriter.IsNotNull(),"Testing instantiation")
00045
00046
00047
00048
00049
00050
00051 MITK_TEST_CONDITION_REQUIRED(argc != 0, "File to load has been specified");
00052
00053
00054 mitk::Image::Pointer image = NULL;
00055 mitk::DataNodeFactory::Pointer factory = mitk::DataNodeFactory::New();
00056
00057 try
00058 {
00059 MITK_TEST_OUTPUT(<< "Loading file: " << argv[1]);
00060 factory->SetFileName( argv[1] );
00061 factory->Update();
00062 MITK_TEST_CONDITION_REQUIRED(factory->GetNumberOfOutputs() > 0, "file loaded");
00063
00064 mitk::DataNode::Pointer node = factory->GetOutput( 0 );
00065 image = dynamic_cast<mitk::Image*>(node->GetData());
00066 if(image.IsNull())
00067 {
00068 std::cout<<"file "<< argv[1]<< "is not an image - test will not be applied."<<std::endl;
00069 std::cout<<"[TEST DONE]"<<std::endl;
00070 return EXIT_SUCCESS;
00071 }
00072 }
00073 catch (itk::ExceptionObject & ex)
00074 {
00075 MITK_TEST_FAILED_MSG(<< "Exception during file loading: " << ex.GetDescription());
00076 }
00077
00078
00079 MITK_TEST_CONDITION_REQUIRED(image.IsNotNull(),"loaded image not NULL")
00080
00081
00082 myImageWriter->SetInput(image);
00083 MITK_TEST_CONDITION_REQUIRED(myImageWriter->GetInput()==image,"test Set/GetInput()");
00084 myImageWriter->SetFileName("test");
00085 MITK_TEST_CONDITION_REQUIRED(!strcmp(myImageWriter->GetFileName(),"test"),"test Set/GetFileName()");
00086 myImageWriter->SetExtension(".pic");
00087 MITK_TEST_CONDITION_REQUIRED(!strcmp(myImageWriter->GetExtension(),".pic"),"test Set/GetExtension()");
00088 myImageWriter->SetFilePrefix("pref");
00089 MITK_TEST_CONDITION_REQUIRED(!strcmp(myImageWriter->GetFilePrefix(),"pref"),"test Set/GetFilePrefix()");
00090 myImageWriter->SetFilePattern("pattern");
00091 MITK_TEST_CONDITION_REQUIRED(!strcmp(myImageWriter->GetFilePattern(),"pattern"),"test Set/GetFilePattern()");
00092
00093
00094 if( image->GetDimension() <= 3 )
00095 {
00096 try
00097 {
00098 myImageWriter->SetExtension(".mhd");
00099 myImageWriter->Update();
00100 std::fstream fin, fin2;
00101 fin.open("test.mhd",std::ios::in);
00102 fin2.open("test.raw",std::ios::in);
00103 MITK_TEST_CONDITION_REQUIRED(fin.is_open(),"Write .mhd file");
00104 MITK_TEST_CONDITION_REQUIRED(fin2.is_open(),"Write .raw file");
00105 fin.close();
00106 fin2.close();
00107 remove("test.mhd");
00108 remove("test.raw");
00109 }
00110 catch (...)
00111 {
00112 MITK_TEST_FAILED_MSG(<< "Exception during .mhd file writing");
00113 }
00114 }
00115
00116
00117 try
00118 {
00119 myImageWriter->SetExtension(".pic");
00120 myImageWriter->Update();
00121 std::fstream fin;
00122 fin.open("test.pic",std::ios::in);
00123 MITK_TEST_CONDITION_REQUIRED(fin.is_open(),"Write .pic file");
00124 fin.close();
00125 remove("test.pic");
00126 }
00127 catch (...)
00128 {
00129 MITK_TEST_FAILED_MSG(<< "Exception during .pic file writing");
00130 }
00131
00132
00133 try
00134 {
00135 MITK_TEST_FOR_EXCEPTION_BEGIN(itk::ExceptionObject)
00136 myImageWriter->SetInput(image);
00137 myImageWriter->SetFileName("/usr/bin");
00138 myImageWriter->Update();
00139 MITK_TEST_FOR_EXCEPTION_END(itk::ExceptionObject)
00140 }
00141 catch(...) {
00142
00143 MITK_TEST_FAILED_MSG(<< "Wrong exception (i.e. no itk:Exception) caught during write");
00144 }
00145
00146
00147 MITK_TEST_END();
00148 }