30 CPPUNIT_TEST_SUITE(mitkMcxyzXmlTestSuite);
33 MITK_TEST(TestCreateRectangleSourceProbe);
34 MITK_TEST(TestCreateTwoPointSourcesProbe);
36 MITK_TEST(TestValuesAreInBoundsUniformRectangle);
37 MITK_TEST(TestValuesAreInBoundsGaussianRectangle);
38 CPPUNIT_TEST_SUITE_END();
42 mitk::pa::LightSource::Pointer m_LightSource;
43 mitk::pa::Probe::Pointer m_Probe;
44 std::string m_XmlProbePointSource;
45 std::string m_XmlProbeCircleSource;
46 std::string m_XmlProbeRectangleSource;
47 std::string m_XmlProbeTwoPointSources;
48 std::string m_XmlProbeAllSources;
55 LoadXmlFile(
"pointsource.xml", &m_XmlProbePointSource);
56 LoadXmlFile(
"circlesource.xml", &m_XmlProbeCircleSource);
57 LoadXmlFile(
"rectanglesource.xml", &m_XmlProbeRectangleSource);
58 LoadXmlFile(
"twopointsources.xml", &m_XmlProbeTwoPointSources);
59 LoadXmlFile(
"allsources.xml", &m_XmlProbeAllSources);
62 void LoadXmlFile(std::string filename, std::string* lines)
69 stream.std::istream::imbue(std::locale(
"C"));
70 while (std::getline(stream, line))
72 *lines = *lines + line +
" ";
81 void TestCreatePointSourceProbe()
83 m_Probe = mitk::pa::Probe::New(m_XmlProbePointSource.c_str(),
true);
84 CPPUNIT_ASSERT(
true == m_Probe->IsValid());
87 void TestCreateCircleSourceProbe()
89 m_Probe = mitk::pa::Probe::New(m_XmlProbeCircleSource.c_str(),
true);
90 CPPUNIT_ASSERT(
true == m_Probe->IsValid());
93 void TestCreateRectangleSourceProbe()
95 m_Probe = mitk::pa::Probe::New(m_XmlProbeRectangleSource.c_str(),
true);
96 CPPUNIT_ASSERT(
true == m_Probe->IsValid());
99 void TestCreateTwoPointSourcesProbe()
101 m_Probe = mitk::pa::Probe::New(m_XmlProbeTwoPointSources.c_str(),
true);
102 CPPUNIT_ASSERT(
true == m_Probe->IsValid());
105 void TestCreateAllSourcesProbe()
107 m_Probe = mitk::pa::Probe::New(m_XmlProbeAllSources.c_str(),
true);
108 CPPUNIT_ASSERT(
true == m_Probe->IsValid());
111 void TestValuesAreInBoundsUniformRectangle()
116 int ANGLE_MAXIMUM = 1;
117 int ANGLE_MINIMUM = -1;
119 m_LightSource->SetAngleXMode(mitk::pa::LightSource::DistributionMode::UNIFORM);
120 m_LightSource->SetAngleYMode(mitk::pa::LightSource::DistributionMode::UNIFORM);
122 m_LightSource->SetAngleXMaximum(ANGLE_MAXIMUM);
123 m_LightSource->SetAngleXMinimum(ANGLE_MINIMUM);
125 m_LightSource->SetAngleYMaximum(ANGLE_MAXIMUM);
126 m_LightSource->SetAngleYMinimum(ANGLE_MINIMUM);
128 m_LightSource->SetSpawnLocationX(MINIMUM);
129 m_LightSource->SetSpawnLocationXLength(2 * MAXIMUM);
131 m_LightSource->SetSpawnLocationY(MINIMUM);
132 m_LightSource->SetSpawnLocationYLength(2 * MAXIMUM);
134 m_LightSource->SetSpawnLocationZ(MINIMUM);
135 m_LightSource->SetSpawnLocationZLength(2 * MAXIMUM);
137 m_LightSource->SetSpawnLocationRadius(MAXIMUM);
139 m_LightSource->SetVerbose(
false);
141 m_LightSource->SetSpawnType(mitk::pa::LightSource::SpawnType::RECTANGLE);
144 rng.seed(std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::
145 now().time_since_epoch()).count());
146 std::uniform_real_distribution<> realDist(0, 1);
148 for (
int i = 0, length = 10000; i < length; i++)
151 m_LightSource->GetNextPhoton(realDist(rng), realDist(rng), realDist(rng), realDist(rng),
152 realDist(rng), realDist(rng), realDist(rng));
154 CPPUNIT_ASSERT(result.xAngle >= ANGLE_MINIMUM);
155 CPPUNIT_ASSERT(result.xAngle <= ANGLE_MAXIMUM);
156 CPPUNIT_ASSERT(result.yAngle >= ANGLE_MINIMUM);
157 CPPUNIT_ASSERT(result.yAngle <= ANGLE_MAXIMUM);
158 CPPUNIT_ASSERT(result.zAngle >= 0);
159 CPPUNIT_ASSERT(result.zAngle <= ANGLE_MAXIMUM);
160 CPPUNIT_ASSERT(result.xPosition >= MINIMUM);
161 CPPUNIT_ASSERT(result.xPosition <= MAXIMUM);
162 CPPUNIT_ASSERT(result.yPosition >= MINIMUM);
163 CPPUNIT_ASSERT(result.yPosition <= MAXIMUM);
164 CPPUNIT_ASSERT(result.zPosition >= MINIMUM);
165 CPPUNIT_ASSERT(result.zPosition <= MAXIMUM);
169 void TestValuesAreInBoundsGaussianRectangle()
174 int ANGLE_MAXIMUM = 1;
175 int ANGLE_MINIMUM = -1;
177 m_LightSource->SetAngleXMode(mitk::pa::LightSource::DistributionMode::GAUSSIAN);
178 m_LightSource->SetAngleYMode(mitk::pa::LightSource::DistributionMode::GAUSSIAN);
180 m_LightSource->SetAngleXMaximum(ANGLE_MAXIMUM);
181 m_LightSource->SetAngleXMinimum(ANGLE_MINIMUM);
183 m_LightSource->SetAngleYMaximum(ANGLE_MAXIMUM);
184 m_LightSource->SetAngleYMinimum(ANGLE_MINIMUM);
186 m_LightSource->SetSpawnLocationX(MINIMUM);
187 m_LightSource->SetSpawnLocationXLength(2 * MAXIMUM);
189 m_LightSource->SetSpawnLocationY(MINIMUM);
190 m_LightSource->SetSpawnLocationYLength(2 * MAXIMUM);
192 m_LightSource->SetSpawnLocationZ(MINIMUM);
193 m_LightSource->SetSpawnLocationZLength(2 * MAXIMUM);
195 m_LightSource->SetSpawnLocationRadius(MAXIMUM);
197 m_LightSource->SetVerbose(
false);
199 m_LightSource->SetSpawnType(mitk::pa::LightSource::SpawnType::RECTANGLE);
202 rng.seed(std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::
203 now().time_since_epoch()).count());
204 std::uniform_real_distribution<> realDist(0, 1);
206 for (
int i = 0, length = 10000; i < length; i++)
209 m_LightSource->GetNextPhoton(realDist(rng), realDist(rng), realDist(rng), realDist(rng),
210 realDist(rng), realDist(rng), realDist(rng));
212 CPPUNIT_ASSERT(result.xAngle >= ANGLE_MINIMUM);
213 CPPUNIT_ASSERT(result.xAngle <= ANGLE_MAXIMUM);
214 CPPUNIT_ASSERT(result.yAngle >= ANGLE_MINIMUM);
215 CPPUNIT_ASSERT(result.yAngle <= ANGLE_MAXIMUM);
216 CPPUNIT_ASSERT(result.zAngle >= 0);
217 CPPUNIT_ASSERT(result.zAngle <= ANGLE_MAXIMUM);
218 CPPUNIT_ASSERT(result.xPosition >= MINIMUM);
219 CPPUNIT_ASSERT(result.xPosition <= MAXIMUM);
220 CPPUNIT_ASSERT(result.yPosition >= MINIMUM);
221 CPPUNIT_ASSERT(result.yPosition <= MAXIMUM);
222 CPPUNIT_ASSERT(result.zPosition >= MINIMUM);
223 CPPUNIT_ASSERT(result.zPosition <= MAXIMUM);
227 void tearDown()
override 229 m_XmlProbePointSource =
"";
230 m_XmlProbeCircleSource =
"";
231 m_XmlProbeRectangleSource =
"";
232 m_XmlProbeTwoPointSources =
"";
233 m_XmlProbeAllSources =
"";
MITK_TEST_SUITE_REGISTRATION(mitkImageToItk)
#define MITK_TEST(TESTMETHOD)
Adds a test to the current test suite.
Module * GetModule() const
Test fixture for parameterized tests.
static ModuleContext * GetModuleContext()
Returns the module context of the calling module.