24 CPPUNIT_TEST_SUITE(mitkPhotoacousticVesselTestSuite);
25 MITK_TEST(testEmptyInitializationProperties);
28 CPPUNIT_TEST_SUITE_END();
31 mitk::pa::Vessel::Pointer m_TestVessel;
34 mitk::pa::InSilicoTissueVolume::Pointer m_TestInSilicoVolume;
35 mitk::pa::TissueGeneratorParameters::Pointer m_TestVolumeParameters;
42 m_TestVessel = mitk::pa::Vessel::New(params);
45 m_TestVolumeParameters = createTestVolumeParameters();
46 auto rng = std::mt19937();
50 mitk::pa::TissueGeneratorParameters::Pointer createTestVolumeParameters()
52 auto returnParameters =
55 returnParameters->SetXDim(10);
56 returnParameters->SetYDim(10);
57 returnParameters->SetZDim(10);
58 returnParameters->SetMinBackgroundAbsorption(0);
59 returnParameters->SetMaxBackgroundAbsorption(0);
60 returnParameters->SetBackgroundScattering(0);
61 returnParameters->SetBackgroundAnisotropy(0);
62 return returnParameters;
65 void testEmptyInitializationProperties()
67 CPPUNIT_ASSERT(m_TestVessel->CanBifurcate() ==
false);
68 CPPUNIT_ASSERT(m_TestVessel->IsFinished() ==
true);
71 void testWalkInStraightLine()
74 testPosition->SetElement(0, 0);
75 testPosition->SetElement(1, 4);
76 testPosition->SetElement(2, 4);
78 testDirection->SetElement(0, 1);
79 testDirection->SetElement(1, 0);
80 testDirection->SetElement(2, 0);
82 params->SetDoPartialVolume(
false);
83 params->SetRadiusInVoxel(1);
84 params->SetBifurcationFrequency(100);
85 params->SetAbsorptionCoefficient(10);
86 params->SetScatteringCoefficient(10);
87 params->SetAnisotopyCoefficient(10);
88 params->SetPositionVector(testPosition);
89 params->SetDirectionVector(testDirection);
90 m_TestVessel = mitk::pa::Vessel::New(params);
92 CPPUNIT_ASSERT(m_TestVessel->CanBifurcate() ==
false);
93 CPPUNIT_ASSERT(m_TestVessel->IsFinished() ==
false);
95 CPPUNIT_ASSERT_MESSAGE(std::to_string(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(0, 4, 4)),
96 std::abs(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(0, 4, 4)) <=
mitk::eps);
98 m_TestVessel->ExpandVessel(m_TestInSilicoVolume, m_StraightLine, 0,
nullptr);
100 CPPUNIT_ASSERT_MESSAGE(std::to_string(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(0, 4, 4)),
101 std::abs(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(0, 4, 4) - 10) <=
mitk::eps);
102 CPPUNIT_ASSERT_MESSAGE(std::to_string(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(0, 5, 4)),
103 std::abs(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(0, 5, 4)) <=
mitk::eps);
104 CPPUNIT_ASSERT_MESSAGE(std::to_string(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(0, 6, 4)),
105 std::abs(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(0, 6, 4)) <=
mitk::eps);
106 CPPUNIT_ASSERT_MESSAGE(std::to_string(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(0, 4, 5)),
107 std::abs(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(0, 4, 5)) <=
mitk::eps);
108 CPPUNIT_ASSERT_MESSAGE(std::to_string(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(0, 4, 6)),
109 std::abs(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(0, 4, 6)) <=
mitk::eps);
111 CPPUNIT_ASSERT_MESSAGE(std::to_string(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(1, 4, 4)),
112 std::abs(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(1, 4, 4)) <=
mitk::eps);
113 CPPUNIT_ASSERT_MESSAGE(std::to_string(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(2, 4, 4)),
114 std::abs(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(2, 4, 4)) <=
mitk::eps);
116 m_TestVessel->ExpandVessel(m_TestInSilicoVolume, m_StraightLine, 0,
nullptr);
118 CPPUNIT_ASSERT_MESSAGE(std::to_string(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(1, 4, 4)),
119 std::abs(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(1, 4, 4) - 10) <=
mitk::eps);
120 CPPUNIT_ASSERT_MESSAGE(std::to_string(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(1, 5, 4)),
121 std::abs(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(1, 5, 4)) <=
mitk::eps);
122 CPPUNIT_ASSERT_MESSAGE(std::to_string(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(1, 6, 4)),
123 std::abs(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(1, 6, 4)) <=
mitk::eps);
124 CPPUNIT_ASSERT_MESSAGE(std::to_string(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(1, 4, 5)),
125 std::abs(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(1, 4, 5)) <=
mitk::eps);
126 CPPUNIT_ASSERT_MESSAGE(std::to_string(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(1, 4, 6)),
127 std::abs(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(1, 4, 6)) <=
mitk::eps);
129 CPPUNIT_ASSERT_MESSAGE(std::to_string(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(1, 4, 4)),
130 std::abs(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(0, 4, 4) - 10) <=
mitk::eps);
131 CPPUNIT_ASSERT_MESSAGE(std::to_string(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(1, 4, 4)),
132 std::abs(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(1, 4, 4) - 10) <=
mitk::eps);
133 CPPUNIT_ASSERT_MESSAGE(std::to_string(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(2, 4, 4)),
134 std::abs(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(2, 4, 4)) <=
mitk::eps);
135 CPPUNIT_ASSERT_MESSAGE(std::to_string(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(3, 4, 4)),
136 std::abs(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(3, 4, 4)) <=
mitk::eps);
142 testPosition->SetElement(0, 0);
143 testPosition->SetElement(1, 4);
144 testPosition->SetElement(2, 4);
146 testDirection->SetElement(0, 1);
147 testDirection->SetElement(1, 0);
148 testDirection->SetElement(2, 0);
150 params->SetRadiusInVoxel(1);
151 params->SetBifurcationFrequency(1);
152 params->SetAbsorptionCoefficient(10);
153 params->SetScatteringCoefficient(10);
154 params->SetAnisotopyCoefficient(10);
155 params->SetPositionVector(testPosition);
156 params->SetDirectionVector(testDirection);
157 m_TestVessel = mitk::pa::Vessel::New(params);
159 CPPUNIT_ASSERT(m_TestVessel->CanBifurcate() ==
false);
160 CPPUNIT_ASSERT(m_TestVessel->IsFinished() ==
false);
162 CPPUNIT_ASSERT(std::abs(m_TestInSilicoVolume->GetAbsorptionVolume()->GetData(0, 4, 4)) <=
mitk::eps);
164 m_TestVessel->ExpandVessel(m_TestInSilicoVolume, m_StraightLine, 0,
nullptr);
165 m_TestVessel->ExpandVessel(m_TestInSilicoVolume, m_StraightLine, 0,
nullptr);
167 CPPUNIT_ASSERT(m_TestVessel->CanBifurcate() ==
true);
169 auto bifurcationVessel = m_TestVessel->Bifurcate(&rng);
171 CPPUNIT_ASSERT(m_TestVessel->CanBifurcate() ==
false);
172 CPPUNIT_ASSERT(bifurcationVessel->CanBifurcate() ==
false);
175 void tearDown()
override void CalculateNewRandomlyDivergingDirectionVector(Vector::Pointer direction, double bendingFactor, std::mt19937 *rng)
CalculateRandomlyDivergingPosition calculates the new position by modifying the direction vector rand...
MITK_TEST_SUITE_REGISTRATION(mitkImageToItk)
#define MITK_TEST(TESTMETHOD)
Adds a test to the current test suite.
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)
Test fixture for parameterized tests.
void CalculateNewDirectionVectorInStraightLine(Vector::Pointer direction, double bendingFactor, std::mt19937 *rng)
CalculateNewPositionInStraightLine calculates the new position by just following the direction vector...
MITKCORE_EXPORT const ScalarType eps
void(VesselMeanderStrategy::* CalculateNewVesselPositionCallback)(Vector::Pointer, double, std::mt19937 *)