22 #include <itkFileTools.h> 26 CPPUNIT_TEST_SUITE(mitkPhotoacousticIOTestSuite);
27 MITK_TEST(testLoadInSilicoTissueNrrdFile);
29 MITK_TEST(testLoad3DVolumeNrrdFileWithBlur);
30 MITK_TEST(testGetNumberOfNrrdFilesInTestDir);
33 CPPUNIT_TEST_SUITE_END();
37 const std::string TEST_FOLDER_PATH =
"testFiles/";
38 const std::string TEST_IN_SILICO_VOLUME_PATH =
"testInSilicoVolume";
39 const std::string TEST_3D_Volume_PATH =
"test3DVolume";
40 const std::string TEST_FILE_ENDING =
".nrrd";
41 const std::string TEST_QUALIFIED_FOLDER_PATH = TEST_FOLDER_PATH + TEST_IN_SILICO_VOLUME_PATH +
"/";
42 const std::string FOLDER_FOLDER =
"folder/";
43 const std::string FCM_PATH = TEST_FOLDER_PATH +
"fcms/";
44 const int NUMBER_OF_NRRD_FILES_IN_TEST_DIR = 2;
45 mitk::pa::TissueGeneratorParameters::Pointer m_VolumeProperties;
46 mitk::pa::InSilicoTissueVolume::Pointer m_TestInSilicoVolume;
47 mitk::pa::Volume::Pointer m_Test3DVolume;
53 m_VolumeProperties = createTestVolumeParameters();
54 auto rng = std::mt19937();
56 m_Test3DVolume = createTest3DVolume(5);
57 itk::FileTools::CreateDirectory(TEST_FOLDER_PATH);
58 itk::FileTools::CreateDirectory(TEST_QUALIFIED_FOLDER_PATH);
59 itk::FileTools::CreateDirectory(TEST_FOLDER_PATH + FOLDER_FOLDER + FOLDER_FOLDER);
60 itk::FileTools::CreateDirectory(FCM_PATH);
61 CPPUNIT_ASSERT(itksys::SystemTools::FileIsDirectory(TEST_FOLDER_PATH));
62 CPPUNIT_ASSERT(itksys::SystemTools::FileIsDirectory(TEST_QUALIFIED_FOLDER_PATH));
63 CPPUNIT_ASSERT(itksys::SystemTools::FileIsDirectory(TEST_FOLDER_PATH + FOLDER_FOLDER + FOLDER_FOLDER));
64 CPPUNIT_ASSERT(itksys::SystemTools::FileIsDirectory(FCM_PATH));
67 TEST_FOLDER_PATH + TEST_IN_SILICO_VOLUME_PATH + TEST_FILE_ENDING);
69 TEST_FOLDER_PATH + TEST_3D_Volume_PATH + TEST_FILE_ENDING);
70 auto yo0 = createTest3DVolume(1)->AsMitkImage();
71 auto yo1 = createTest3DVolume(2)->AsMitkImage();
73 yo0->GetPropertyList()->SetStringProperty(
"y-offset",
"0");
74 yo1->GetPropertyList()->SetStringProperty(
"y-offset",
"1");
77 mitk::IOUtil::Save(yo0, TEST_QUALIFIED_FOLDER_PATH + TEST_IN_SILICO_VOLUME_PATH +
"_yo0" + TEST_FILE_ENDING);
78 mitk::IOUtil::Save(yo1, TEST_QUALIFIED_FOLDER_PATH + TEST_IN_SILICO_VOLUME_PATH +
"_yo1" + TEST_FILE_ENDING);
81 mitk::pa::Volume::Pointer createTest3DVolume(
double value)
83 unsigned int xDim = 10;
84 unsigned int yDim = 10;
85 unsigned int zDim = 10;
86 unsigned int length = xDim * yDim * zDim;
87 auto* data =
new double[length];
88 for (
unsigned int i = 0; i < length; i++)
94 mitk::pa::TissueGeneratorParameters::Pointer createTestVolumeParameters()
97 returnParameters->SetXDim(10);
98 returnParameters->SetYDim(10);
99 returnParameters->SetZDim(10);
100 returnParameters->SetMinBackgroundAbsorption(0);
101 returnParameters->SetMaxBackgroundAbsorption(0);
102 returnParameters->SetBackgroundScattering(0);
103 returnParameters->SetBackgroundAnisotropy(0);
104 return returnParameters;
107 void assertEqual(mitk::pa::Volume::Pointer first, mitk::pa::Volume::Pointer second)
109 CPPUNIT_ASSERT(first->GetXDim() == second->GetXDim());
110 CPPUNIT_ASSERT(first->GetYDim() == second->GetYDim());
111 CPPUNIT_ASSERT(first->GetZDim() == second->GetZDim());
112 for (
unsigned int x = 0; x < first->GetXDim(); ++x)
113 for (
unsigned int y = 0; y < first->GetYDim(); ++y)
114 for (
unsigned int z = 0; z < first->GetZDim(); ++z)
116 std::string message =
"Expected " + std::to_string(first->GetData(x, y, z)) +
" but was " + std::to_string(second->GetData(x, y, z));
117 CPPUNIT_ASSERT_MESSAGE(message, std::abs(first->GetData(x, y, z) - second->GetData(x, y, z)) < 1e-6);
121 void testLoadInSilicoTissueNrrdFile()
124 CPPUNIT_ASSERT(loadedVolume->GetTDim() == m_TestInSilicoVolume->GetTDim());
125 assertEqual(m_TestInSilicoVolume->GetAbsorptionVolume(), loadedVolume->GetAbsorptionVolume());
126 assertEqual(m_TestInSilicoVolume->GetScatteringVolume(), loadedVolume->GetScatteringVolume());
127 assertEqual(m_TestInSilicoVolume->GetAnisotropyVolume(), loadedVolume->GetAnisotropyVolume());
130 void testLoad3DVolumeNrrdFile()
133 assertEqual(loadedVolume, m_Test3DVolume);
136 void testLoad3DVolumeNrrdFileWithBlur()
139 assertEqual(loadedVolume, m_Test3DVolume);
142 void testGetNumberOfNrrdFilesInTestDir()
145 CPPUNIT_ASSERT(numberOfFiles == NUMBER_OF_NRRD_FILES_IN_TEST_DIR);
148 void testGetChildFoldersFromFolder()
151 CPPUNIT_ASSERT(childFolders.size() == 1);
152 CPPUNIT_ASSERT(childFolders[0] == TEST_FOLDER_PATH);
154 MITK_INFO <<
"ChildFolders: " << childFolders.size();
155 CPPUNIT_ASSERT(childFolders.size() == 1);
156 CPPUNIT_ASSERT(childFolders[0] == TEST_FOLDER_PATH + FOLDER_FOLDER +
"/folder");
161 auto fcm1 = createTest3DVolume(1);
162 auto fcm2 = createTest3DVolume(2);
163 auto fcm3 = createTest3DVolume(3);
164 auto fcm4 = createTest3DVolume(4);
165 mitk::IOUtil::Save(fcm1->AsMitkImage(), FCM_PATH +
"fcm1_p0,0,0FluenceContributionMap.nrrd");
166 mitk::IOUtil::Save(fcm2->AsMitkImage(), FCM_PATH +
"fcm1_p0,0,1FluenceContributionMap.nrrd");
167 mitk::IOUtil::Save(fcm3->AsMitkImage(), FCM_PATH +
"fcm1_p1,0,0FluenceContributionMap.nrrd");
168 mitk::IOUtil::Save(fcm4->AsMitkImage(), FCM_PATH +
"fcm1_p1,0,1FluenceContributionMap.nrrd");
179 void tearDown()
override MITK_TEST_SUITE_REGISTRATION(mitkImageToItk)
static int GetNumberOfNrrdFilesInDirectory(std::string directory)
returns the number of .nrrd files in a given directory
#define MITK_TEST(TESTMETHOD)
Adds a test to the current test suite.
static std::map< Position, Volume::Pointer > LoadFluenceContributionMaps(std::string foldername, double blur, int *progress, bool log10=false)
LoadFluenceContributionMaps loads multiple nrrd files from a given folder and sorts them into a posit...
static InSilicoTissueVolume::Pointer New(mitk::pa::Volume::Pointer absorptionVolume, Volume::Pointer scatteringVolume, Volume::Pointer anisotropyVolume, Volume::Pointer segmentationVolume, TissueGeneratorParameters::Pointer tissueParameters, mitk::PropertyList::Pointer propertyList)
static Volume::Pointer LoadNrrd(std::string filename, double sigma=0)
loads a nrrd file from a given filename.
static IPropertyPersistence * GetPropertyPersistence(us::ModuleContext *context=us::GetModuleContext())
Get an IPropertyPersistence instance.
Test fixture for parameterized tests.
static std::vector< std::string > GetAllChildfoldersFromFolder(std::string folderPath)
returns all child folders from a folder if there is no .nrrd file in the folder If there IS a ...
static void Save(const mitk::BaseData *data, const std::string &path, bool setPathProperty=false)
Save a mitk::BaseData instance.
virtual bool AddInfo(const PropertyPersistenceInfo *info, bool overwrite=false)=0
Add persistence info for a specific base data property. If there is already a property info instance ...
static InSilicoTissueVolume::Pointer LoadInSilicoTissueVolumeFromNrrdFile(std::string filePath)
loads an in silico tissue volume from a saved nrrd file.
static Volume::Pointer New(double *data, unsigned int xDim, unsigned int yDim, unsigned int zDim, double spacing)
returns smartpointer reference to a new instance of this objects. The given data array will be freed ...