21 class mitkMessageTestTestClass
28 Package(
int content = 43) : m_Content(content) {}
29 void Clear() { m_Content = 0; }
30 bool operator==(
const Package &other) {
return m_Content == other.m_Content; }
35 class MessageSenderClass
45 Message1<const std::string &> Say;
48 Message1<double> WalkMeters;
51 Message1<const Package &> GivePackage;
54 Message2<int, float> ShoutAgeAndFootSize;
68 void DoSay(
const std::string &words) { Say(words); }
69 void DoWalk(
double meters) { WalkMeters(meters); }
70 void DoGivePackage(
const Package &package) { GivePackage.Send(package); }
71 void DoShoutAgeAndFootSize(
int age,
float size) { ShoutAgeAndFootSize(age, size); }
76 class MessageReceiverClass
79 MessageReceiverClass() { Amnesia(); }
80 void OnWaveHand() { m_HandWaved =
true; }
81 bool HandWaved() {
return m_HandWaved; }
82 void OnSay(
const std::string &words) { m_WordsSaid = words; }
83 const std::string WordsSaid() {
return m_WordsSaid; }
84 void OnWalk(
double meters) { m_MetersWalked = meters; }
85 double MetersWalked() {
return m_MetersWalked; }
86 void OnGivePackage(
const Package &p) { m_PackageReceived = p; }
87 Package PackageReceived() {
return m_PackageReceived; }
88 void OnShoutAgeAndFootSize(
int age,
float footSize)
91 m_FootSize = footSize;
94 int Age() {
return m_Age; }
95 float FootSize() {
return m_FootSize; }
100 m_MetersWalked = 0.0;
101 m_PackageReceived.Clear();
106 void RegisterObservers(MessageSenderClass &sender)
108 sender.WaveHand += MessageDelegate<MessageReceiverClass>(
this, &MessageReceiverClass::OnWaveHand);
109 sender.ShowFinger += MessageDelegate<MessageReceiverClass>(
110 this, &MessageReceiverClass::OnWaveHand);
112 sender.Say += MessageDelegate1<MessageReceiverClass, const std::string &>(
this, &MessageReceiverClass::OnSay);
113 sender.WalkMeters += MessageDelegate1<MessageReceiverClass, double>(
this, &MessageReceiverClass::OnWalk);
114 sender.GivePackage +=
115 MessageDelegate1<MessageReceiverClass, const Package &>(
this, &MessageReceiverClass::OnGivePackage);
116 sender.ShoutAgeAndFootSize +=
117 MessageDelegate2<MessageReceiverClass, int, float>(
this, &MessageReceiverClass::OnShoutAgeAndFootSize);
122 std::string m_WordsSaid;
123 double m_MetersWalked;
124 Package m_PackageReceived;
133 std::string m_Description;
136 Law(
const std::string &law) : m_Description(law) {}
137 std::string GetDescription()
const {
return m_Description; }
152 m_AnalysisStartedMessage();
155 Law massLaw(
"Unit tests are mandatory!");
156 m_LawDiscoveredMessage(massLaw);
163 m_AnalysisStoppedMessage(
true);
177 NewtonMachine *m_Machine;
180 Observer(NewtonMachine *machine)
181 : m_Machine(machine), m_MachineStarted(false), m_MachineStopped(false), m_Error(false), m_Law(
"NONE")
185 m_Machine->AddAnalysisStoppedListener(
187 m_Machine->AddLawDiscoveredListener(
197 m_Machine->RemoveAnalysisStoppedListener(
199 m_Machine->RemoveLawDiscoveredListener(
205 void MachineStarted() { m_MachineStarted =
true; }
206 void MachineStopped(
bool error)
208 m_MachineStopped =
true;
212 void LawDiscovered(
const Law &law) { m_Law = law; }
215 m_PatentReviewed =
true;
218 bool m_MachineStarted;
219 bool m_MachineStopped;
222 bool m_PatentReviewed;
233 mitk::mitkMessageTestTestClass::MessageSenderClass sender;
234 mitk::mitkMessageTestTestClass::MessageReceiverClass receiver;
238 receiver.RegisterObservers(sender);
243 receiver.HandWaved()),
244 "Message without parameters");
251 "Message with std::string parameter");
255 "Message with double parameter");
258 mitk::mitkMessageTestTestClass::Package package(8);
260 "Message with class parameter");
264 (sender.DoShoutAgeAndFootSize(46, 30.5), (receiver.Age() == 46 && (receiver.FootSize() - 30.5 < 0.0001))),
265 "Message with int AND float parameter");
268 mitk::mitkMessageTestTestClass::NewtonMachine newtonMachine;
269 mitk::mitkMessageTestTestClass::Observer observer1(&newtonMachine);
270 mitk::mitkMessageTestTestClass::Observer observer2(&newtonMachine);
273 newtonMachine.StartAnalysis();
274 MITK_TEST_CONDITION(observer1.m_MachineStarted ==
true,
"Message from Message Macro send to receiver 1");
275 MITK_TEST_CONDITION(observer2.m_MachineStarted ==
true,
"Message from Message Macro send to receiver 2");
277 MITK_TEST_CONDITION(observer1.m_Law.GetDescription() == std::string(
"Unit tests are mandatory!"),
278 "Message1 from Message Macro send to receiver 1");
279 MITK_TEST_CONDITION(observer2.m_Law.GetDescription() == std::string(
"Unit tests are mandatory!"),
280 "Message1 from Message Macro send to receiver 2");
283 newtonMachine.StopAnalysis();
284 MITK_TEST_CONDITION(observer1.m_MachineStopped ==
true,
"Message1 from Message Macro send to receiver 1");
285 MITK_TEST_CONDITION(observer1.m_Error ==
true,
"Message1 parameter from Message Macro send to receiver 1");
287 MITK_TEST_CONDITION(observer2.m_MachineStopped ==
true,
"Message1 from Message Macro send to receiver 2");
288 MITK_TEST_CONDITION(observer2.m_Error ==
true,
"Message1 parameter from Message Macro send to receiver 2");
#define mitkNewMessage1Macro(msgHandleObject, type1)
#define MITK_TEST_CONDITION_REQUIRED(COND, MSG)
DataCollection - Class to facilitate loading/accessing structured data.
section GeneralTestsDeprecatedOldTestingStyle Deprecated macros All tests with MITK_TEST_BEGIN()
MITKCORE_EXPORT bool operator==(const InteractionEvent &a, const InteractionEvent &b)
#define mitkNewMessageMacro(msgHandleObject)
#define MITK_TEST_CONDITION(COND, MSG)
int mitkMessageTest(int, char *[])