NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
niftkAtomicStateTransitionTester.h
Go to the documentation of this file.
1 /*=============================================================================
2 
3  NifTK: A software platform for medical image computing.
4 
5  Copyright (c) University College London (UCL). All rights reserved.
6 
7  This software is distributed WITHOUT ANY WARRANTY; without even
8  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
9  PURPOSE.
10 
11  See LICENSE.txt in the top level directory for details.
12 
13 =============================================================================*/
14 
15 #ifndef niftkAtomicStateTransitionTester_h
16 #define niftkAtomicStateTransitionTester_h
17 
19 #include <niftkQtSignalCollector.h>
20 
21 #include <QObject>
22 #include <QByteArray>
23 #include <QMetaObject>
24 
25 #include <mitkCommon.h>
26 
27 #include <map>
28 
29 namespace niftk
30 {
31 
58 template <class TestObject, class TestObjectState>
59 class AtomicStateTransitionTester : public itk::Object, private ItkSignalListener, private QtSignalListener
60 {
61 public:
62 
64  mitkNewMacro1Param(AtomicStateTransitionTester, TestObject)
65 
66  typedef ItkSignalCollector::Signal ItkSignal;
67  typedef ItkSignalCollector::Signals ItkSignals;
68 
69  typedef QtSignalCollector::Signal QtSignal;
70  typedef QtSignalCollector::Signals QtSignals;
71 
73  itkGetConstMacro(TestObject, TestObject);
74 
76  itkGetConstMacro(InitialState, typename TestObjectState::Pointer);
77 
79  itkGetConstMacro(NextState, typename TestObjectState::Pointer);
80 
82  itkGetConstMacro(ExpectedState, typename TestObjectState::Pointer);
83 
85  itkSetMacro(ExpectedState, typename TestObjectState::Pointer);
86 
88  virtual void Clear();
89 
92  void Connect(itk::Object* itkObject, const itk::EventObject& event);
93 
97  void Connect(const itk::EventObject& event);
98 
102  void Connect(const QObject* qObject, const char* signal = 0);
103 
107  void Connect(const char* signal);
108 
110  const ItkSignals& GetItkSignals() const
111  {
112  return m_ItkSignalCollector->GetSignals();
113  }
114 
117  ItkSignals GetItkSignals(const itk::Object* itkObject, const itk::EventObject& event = itk::AnyEvent()) const
118  {
119  return m_ItkSignalCollector->GetSignals(itkObject, event);
120  }
121 
123  ItkSignals GetItkSignals(const itk::EventObject& event) const
124  {
125  return m_ItkSignalCollector->GetSignals(event);
126  }
127 
129  const QtSignals& GetQtSignals() const
130  {
131  return m_QtSignalCollector->GetSignals();
132  }
133 
135  QtSignals GetQtSignals(const QObject* object, const char* signal = 0)
136  {
137  return m_QtSignalCollector->GetSignals(object, signal);
138  }
139 
142  QtSignals GetQtSignals(const char* signal)
143  {
144  return m_QtSignalCollector->GetSignals(signal);
145  }
146 
147 protected:
148 
150  AtomicStateTransitionTester(TestObject testObject);
151 
154 
156  virtual void OnItkSignalReceived(const itk::Object* object, const itk::EventObject& event)
157  {
158  this->CheckState();
159  }
160 
162  virtual void OnQtSignalReceived(const QObject* object, const char* signal)
163  {
164  this->CheckState();
165  }
166 
168  virtual void PrintSelf(std::ostream & os, itk::Indent indent) const;
169 
170 private:
171 
180  void CheckState();
181 
183  TestObject m_TestObject;
184 
186  typename TestObjectState::Pointer m_InitialState;
187 
189  typename TestObjectState::Pointer m_NextState;
190 
192  typename TestObjectState::Pointer m_ExpectedState;
193 
195  ItkSignalCollector::Pointer m_ItkSignalCollector;
196 
198  QtSignalCollector::Pointer m_QtSignalCollector;
199 
200 };
201 
202 }
203 
204 #endif
Class for collecting ITK signals and sending notifications of them to registered listeners.
Definition: niftkItkSignalCollector.h:41
ItkSignals GetItkSignals(const itk::Object *itkObject, const itk::EventObject &event=itk::AnyEvent()) const
Returns a set of the collected ITK signals that are sent from the given object, and are of the given ...
Definition: niftkAtomicStateTransitionTester.h:117
virtual ~AtomicStateTransitionTester()
Destructs an AtomicStateTransitionTester object.
Definition: niftkAtomicStateTransitionTester.cxx:88
virtual void OnItkSignalReceived(const itk::Object *object, const itk::EventObject &event)
Handler for the ITK signals. Checks the consistency of the test object.
Definition: niftkAtomicStateTransitionTester.h:156
TestObject typedef ItkSignalCollector::Signal ItkSignal
Definition: niftkAtomicStateTransitionTester.h:66
Abstract class to be implemented by Qt signal listeners.
Definition: niftkQtSignalCollector.h:32
virtual void OnQtSignalReceived(const QObject *object, const char *signal)
Handler for the Qt signals. Checks the consistency of the test object.
Definition: niftkAtomicStateTransitionTester.h:162
Test class to ensure the atomic transition from one object state to another.
Definition: niftkAtomicStateTransitionTester.h:59
Definition: niftkITKAffineResampleImage.cxx:74
void Connect(itk::Object *itkObject, const itk::EventObject &event)
Connects this object to the specified events of itkObject. The consistency of the test object will be...
Definition: niftkAtomicStateTransitionTester.cxx:183
QtSignalCollector::Signal QtSignal
Definition: niftkAtomicStateTransitionTester.h:69
mitkClassMacroItkParent(AtomicStateTransitionTester, itk::Object) mitkNewMacro1Param(AtomicStateTransitionTester
const ItkSignals & GetItkSignals() const
Returns the collected ITK signals.
Definition: niftkAtomicStateTransitionTester.h:110
virtual void PrintSelf(std::ostream &os, itk::Indent indent) const
Prints the collected signals to the given stream or to the standard output if no stream is given...
Definition: niftkAtomicStateTransitionTester.cxx:158
ItkSignals GetItkSignals(const itk::EventObject &event) const
Returns a set of the collected ITK signals that are of the given type or its subtype.
Definition: niftkAtomicStateTransitionTester.h:123
Class for collecting Qt signals and sending notifications of them to registered listeners.
Definition: niftkQtSignalCollector.h:67
Abstract class to be implemented by ITK signal listeners.
Definition: niftkItkSignalCollector.h:31
QtSignals GetQtSignals(const QObject *object, const char *signal=0)
Returns a set of the collected Qt signals that are of the given type.
Definition: niftkAtomicStateTransitionTester.h:135
AtomicStateTransitionTester(TestObject testObject)
Constructs an AtomicStateTransitionTester object.
Definition: niftkAtomicStateTransitionTester.cxx:41
QtSignals GetQtSignals(const char *signal)
Returns a set of the collected Qt signals that are sent from the given object, and are of the given t...
Definition: niftkAtomicStateTransitionTester.h:142
cl_event event
Definition: glew.h:3231
const QtSignals & GetQtSignals() const
Gets the Qt signals collected by this object.
Definition: niftkAtomicStateTransitionTester.h:129
ItkSignalCollector::Signals ItkSignals
Definition: niftkAtomicStateTransitionTester.h:67
virtual void Clear()
Clears the collected signals and resets the states.
Definition: niftkAtomicStateTransitionTester.cxx:97
QtSignalCollector::Signals QtSignals
Definition: niftkAtomicStateTransitionTester.h:70
Definition: niftkExceptionObject.h:21