Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkMCThreadHandlerTest.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #include <mitkTestFixture.h>
14 #include <mitkTestingMacros.h>
15 
17 
18 // us
19 #include <usModule.h>
20 #include <usModuleResource.h>
21 #include <usGetModuleContext.h>
22 #include <usModuleContext.h>
23 #include <usModuleResourceStream.h>
24 
25 #include <random>
26 #include <chrono>
27 
28 class mitkMCThreadHandlerTestSuite : public mitk::TestFixture
29 {
30  CPPUNIT_TEST_SUITE(mitkMCThreadHandlerTestSuite);
31  MITK_TEST(testConstructorBehavior);
32  MITK_TEST(testCorrectNumberOfPhotons);
33  MITK_TEST(testCorrectNumberOfPhotonsWithUnevenPackageSize);
34  MITK_TEST(testCorrectNumberOfPhotonsWithTooLargePackageSize);
35  CPPUNIT_TEST_SUITE_END();
36 
37 private:
38 
39  mitk::pa::MonteCarloThreadHandler::Pointer m_MonteCarloThreadHandler;
40  long m_NumberOrTime = 500;
41 
42 public:
43 
44  void setUp() override
45  {
46  }
47 
48  void testConstructorBehavior()
49  {
50  auto threadHandler1 = mitk::pa::MonteCarloThreadHandler::New(m_NumberOrTime, true, true);
51  auto threadHandler2 = mitk::pa::MonteCarloThreadHandler::New(m_NumberOrTime, true);
52 
53  CPPUNIT_ASSERT(mitk::pa::Equal(threadHandler1, threadHandler2, 1e-6, true));
54  }
55 
56  void testCorrectNumberOfPhotons()
57  {
58  m_MonteCarloThreadHandler = mitk::pa::MonteCarloThreadHandler::New(m_NumberOrTime, false, false);
59  m_MonteCarloThreadHandler->SetPackageSize(100);
60  long numberOfPhotonsSimulated = 0;
61  long nextWorkPackage = 0;
62  while ((nextWorkPackage = m_MonteCarloThreadHandler->GetNextWorkPackage()) > 0)
63  {
64  numberOfPhotonsSimulated += nextWorkPackage;
65  }
66  CPPUNIT_ASSERT(numberOfPhotonsSimulated == m_NumberOrTime);
67  }
68 
69  void testCorrectNumberOfPhotonsWithUnevenPackageSize()
70  {
71  m_MonteCarloThreadHandler = mitk::pa::MonteCarloThreadHandler::New(m_NumberOrTime, false, false);
72  m_MonteCarloThreadHandler->SetPackageSize(77);
73  long numberOfPhotonsSimulated = 0;
74  long nextWorkPackage = 0;
75  while ((nextWorkPackage = m_MonteCarloThreadHandler->GetNextWorkPackage()) > 0)
76  {
77  numberOfPhotonsSimulated += nextWorkPackage;
78  }
79  CPPUNIT_ASSERT(numberOfPhotonsSimulated == m_NumberOrTime);
80  }
81 
82  void testCorrectNumberOfPhotonsWithTooLargePackageSize()
83  {
84  m_MonteCarloThreadHandler = mitk::pa::MonteCarloThreadHandler::New(m_NumberOrTime, false, false);
85  m_MonteCarloThreadHandler->SetPackageSize(10000);
86  long numberOfPhotonsSimulated = 0;
87  long nextWorkPackage = 0;
88  while ((nextWorkPackage = m_MonteCarloThreadHandler->GetNextWorkPackage()) > 0)
89  {
90  numberOfPhotonsSimulated += nextWorkPackage;
91  }
92  CPPUNIT_ASSERT(numberOfPhotonsSimulated == m_NumberOrTime);
93  }
94 
95  void tearDown() override
96  {
97  m_MonteCarloThreadHandler = nullptr;
98  }
99 };
100 
101 MITK_TEST_SUITE_REGISTRATION(mitkMCThreadHandler)
MITK_TEST_SUITE_REGISTRATION(mitkImageToItk)
#define MITK_TEST(TESTMETHOD)
Adds a test to the current test suite.
MITKPHOTOACOUSTICSLIB_EXPORT bool Equal(const MonteCarloThreadHandler::Pointer leftHandSide, const MonteCarloThreadHandler::Pointer rightHandSide, double eps, bool verbose)
Equal A function comparing two thread handlers for beeing equal.
Test fixture for parameterized tests.