Mercurial > hg > orthanc-stone
comparison UnitTestsSources/TestMessageBroker.cpp @ 624:573e35378999
fix
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 07 May 2019 14:28:10 +0200 |
parents | 8adc8cfb50c7 |
children | f0008c55e5f7 |
comparison
equal
deleted
inserted
replaced
623:42dadae61fa9 | 624:573e35378999 |
---|---|
158 | 158 |
159 // create a permanent connection between an observable and an observer | 159 // create a permanent connection between an observable and an observer |
160 observable.RegisterObserverCallback(new Callable<MyObserver, MyObservable::MyCustomMessage>(observer, &MyObserver::HandleCompletedMessage)); | 160 observable.RegisterObserverCallback(new Callable<MyObserver, MyObservable::MyCustomMessage>(observer, &MyObserver::HandleCompletedMessage)); |
161 | 161 |
162 testCounter = 0; | 162 testCounter = 0; |
163 observable.EmitMessage(MyObservable::MyCustomMessage(12)); | 163 observable.BroadcastMessage(MyObservable::MyCustomMessage(12)); |
164 ASSERT_EQ(12, testCounter); | 164 ASSERT_EQ(12, testCounter); |
165 | 165 |
166 // the connection is permanent; if we emit the same message again, the observer will be notified again | 166 // the connection is permanent; if we emit the same message again, the observer will be notified again |
167 testCounter = 0; | 167 testCounter = 0; |
168 observable.EmitMessage(MyObservable::MyCustomMessage(20)); | 168 observable.BroadcastMessage(MyObservable::MyCustomMessage(20)); |
169 ASSERT_EQ(20, testCounter); | 169 ASSERT_EQ(20, testCounter); |
170 | 170 |
171 // Unregister the observer; make sure it's not called anymore | 171 // Unregister the observer; make sure it's not called anymore |
172 observable.Unregister(&observer); | 172 observable.Unregister(&observer); |
173 testCounter = 0; | 173 testCounter = 0; |
174 observable.EmitMessage(MyObservable::MyCustomMessage(20)); | 174 observable.BroadcastMessage(MyObservable::MyCustomMessage(20)); |
175 ASSERT_EQ(0, testCounter); | 175 ASSERT_EQ(0, testCounter); |
176 } | 176 } |
177 | 177 |
178 TEST(MessageBroker, TestMessageForwarderSimpleUseCase) | 178 TEST(MessageBroker, TestMessageForwarderSimpleUseCase) |
179 { | 179 { |
184 | 184 |
185 // let the observer observers the intermediate that is actually forwarding the messages from the observable | 185 // let the observer observers the intermediate that is actually forwarding the messages from the observable |
186 intermediate.RegisterObserverCallback(new Callable<MyObserver, MyObservable::MyCustomMessage>(observer, &MyObserver::HandleCompletedMessage)); | 186 intermediate.RegisterObserverCallback(new Callable<MyObserver, MyObservable::MyCustomMessage>(observer, &MyObserver::HandleCompletedMessage)); |
187 | 187 |
188 testCounter = 0; | 188 testCounter = 0; |
189 observable.EmitMessage(MyObservable::MyCustomMessage(12)); | 189 observable.BroadcastMessage(MyObservable::MyCustomMessage(12)); |
190 ASSERT_EQ(12, testCounter); | 190 ASSERT_EQ(12, testCounter); |
191 | 191 |
192 // the connection is permanent; if we emit the same message again, the observer will be notified again | 192 // the connection is permanent; if we emit the same message again, the observer will be notified again |
193 testCounter = 0; | 193 testCounter = 0; |
194 observable.EmitMessage(MyObservable::MyCustomMessage(20)); | 194 observable.BroadcastMessage(MyObservable::MyCustomMessage(20)); |
195 ASSERT_EQ(20, testCounter); | 195 ASSERT_EQ(20, testCounter); |
196 } | 196 } |
197 | 197 |
198 TEST(MessageBroker, TestPermanentConnectionDeleteObserver) | 198 TEST(MessageBroker, TestPermanentConnectionDeleteObserver) |
199 { | 199 { |
203 | 203 |
204 // create a permanent connection between an observable and an observer | 204 // create a permanent connection between an observable and an observer |
205 observable.RegisterObserverCallback(new Callable<MyObserver, MyObservable::MyCustomMessage>(*observer, &MyObserver::HandleCompletedMessage)); | 205 observable.RegisterObserverCallback(new Callable<MyObserver, MyObservable::MyCustomMessage>(*observer, &MyObserver::HandleCompletedMessage)); |
206 | 206 |
207 testCounter = 0; | 207 testCounter = 0; |
208 observable.EmitMessage(MyObservable::MyCustomMessage(12)); | 208 observable.BroadcastMessage(MyObservable::MyCustomMessage(12)); |
209 ASSERT_EQ(12, testCounter); | 209 ASSERT_EQ(12, testCounter); |
210 | 210 |
211 // delete the observer and check that the callback is not called anymore | 211 // delete the observer and check that the callback is not called anymore |
212 delete observer; | 212 delete observer; |
213 | 213 |
214 // the connection is permanent; if we emit the same message again, the observer will be notified again | 214 // the connection is permanent; if we emit the same message again, the observer will be notified again |
215 testCounter = 0; | 215 testCounter = 0; |
216 observable.EmitMessage(MyObservable::MyCustomMessage(20)); | 216 observable.BroadcastMessage(MyObservable::MyCustomMessage(20)); |
217 ASSERT_EQ(0, testCounter); | 217 ASSERT_EQ(0, testCounter); |
218 } | 218 } |
219 | 219 |
220 TEST(MessageBroker, TestMessageForwarderDeleteIntermediate) | 220 TEST(MessageBroker, TestMessageForwarderDeleteIntermediate) |
221 { | 221 { |
226 | 226 |
227 // let the observer observers the intermediate that is actually forwarding the messages from the observable | 227 // let the observer observers the intermediate that is actually forwarding the messages from the observable |
228 intermediate->RegisterObserverCallback(new Callable<MyObserver, MyObservable::MyCustomMessage>(observer, &MyObserver::HandleCompletedMessage)); | 228 intermediate->RegisterObserverCallback(new Callable<MyObserver, MyObservable::MyCustomMessage>(observer, &MyObserver::HandleCompletedMessage)); |
229 | 229 |
230 testCounter = 0; | 230 testCounter = 0; |
231 observable.EmitMessage(MyObservable::MyCustomMessage(12)); | 231 observable.BroadcastMessage(MyObservable::MyCustomMessage(12)); |
232 ASSERT_EQ(12, testCounter); | 232 ASSERT_EQ(12, testCounter); |
233 | 233 |
234 delete intermediate; | 234 delete intermediate; |
235 | 235 |
236 observable.EmitMessage(MyObservable::MyCustomMessage(20)); | 236 observable.BroadcastMessage(MyObservable::MyCustomMessage(20)); |
237 ASSERT_EQ(12, testCounter); | 237 ASSERT_EQ(12, testCounter); |
238 } | 238 } |
239 | 239 |
240 TEST(MessageBroker, TestCustomMessage) | 240 TEST(MessageBroker, TestCustomMessage) |
241 { | 241 { |
246 | 246 |
247 // let the observer observers the intermediate that is actually forwarding the messages from the observable | 247 // let the observer observers the intermediate that is actually forwarding the messages from the observable |
248 intermediate.RegisterObserverCallback(new Callable<MyObserver, MyObservable::MyCustomMessage>(observer, &MyObserver::HandleCompletedMessage)); | 248 intermediate.RegisterObserverCallback(new Callable<MyObserver, MyObservable::MyCustomMessage>(observer, &MyObserver::HandleCompletedMessage)); |
249 | 249 |
250 testCounter = 0; | 250 testCounter = 0; |
251 observable.EmitMessage(MyObservable::MyCustomMessage(12)); | 251 observable.BroadcastMessage(MyObservable::MyCustomMessage(12)); |
252 ASSERT_EQ(12, testCounter); | 252 ASSERT_EQ(12, testCounter); |
253 | 253 |
254 // the connection is permanent; if we emit the same message again, the observer will be notified again | 254 // the connection is permanent; if we emit the same message again, the observer will be notified again |
255 testCounter = 0; | 255 testCounter = 0; |
256 observable.EmitMessage(MyObservable::MyCustomMessage(20)); | 256 observable.BroadcastMessage(MyObservable::MyCustomMessage(20)); |
257 ASSERT_EQ(20, testCounter); | 257 ASSERT_EQ(20, testCounter); |
258 } | 258 } |
259 | 259 |
260 | 260 |
261 TEST(MessageBroker, TestPromiseSuccessFailure) | 261 TEST(MessageBroker, TestPromiseSuccessFailure) |
322 | 322 |
323 // create a permanent connection between an observable and an observer | 323 // create a permanent connection between an observable and an observer |
324 observable.RegisterObserverCallback(new LambdaCallable<MyObservable::MyCustomMessage>(*observer, [&](const MyObservable::MyCustomMessage& message) {testCounter += 2 * message.payload_;})); | 324 observable.RegisterObserverCallback(new LambdaCallable<MyObservable::MyCustomMessage>(*observer, [&](const MyObservable::MyCustomMessage& message) {testCounter += 2 * message.payload_;})); |
325 | 325 |
326 testCounter = 0; | 326 testCounter = 0; |
327 observable.EmitMessage(MyObservable::MyCustomMessage(12)); | 327 observable.BroadcastMessage(MyObservable::MyCustomMessage(12)); |
328 ASSERT_EQ(24, testCounter); | 328 ASSERT_EQ(24, testCounter); |
329 | 329 |
330 // delete the observer and check that the callback is not called anymore | 330 // delete the observer and check that the callback is not called anymore |
331 delete observer; | 331 delete observer; |
332 | 332 |
333 // the connection is permanent; if we emit the same message again, the observer will be notified again | 333 // the connection is permanent; if we emit the same message again, the observer will be notified again |
334 testCounter = 0; | 334 testCounter = 0; |
335 observable.EmitMessage(MyObservable::MyCustomMessage(20)); | 335 observable.BroadcastMessage(MyObservable::MyCustomMessage(20)); |
336 ASSERT_EQ(0, testCounter); | 336 ASSERT_EQ(0, testCounter); |
337 } | 337 } |
338 | 338 |
339 namespace { | 339 namespace { |
340 class MyObserverWithLambda : public IObserver { | 340 class MyObserverWithLambda : public IObserver { |
360 MessageBroker broker; | 360 MessageBroker broker; |
361 MyObservable observable(broker); | 361 MyObservable observable(broker); |
362 MyObserverWithLambda* observer = new MyObserverWithLambda(broker, 3, observable); | 362 MyObserverWithLambda* observer = new MyObserverWithLambda(broker, 3, observable); |
363 | 363 |
364 testCounter = 0; | 364 testCounter = 0; |
365 observable.EmitMessage(MyObservable::MyCustomMessage(12)); | 365 observable.BroadcastMessage(MyObservable::MyCustomMessage(12)); |
366 ASSERT_EQ(36, testCounter); | 366 ASSERT_EQ(36, testCounter); |
367 | 367 |
368 // delete the observer and check that the callback is not called anymore | 368 // delete the observer and check that the callback is not called anymore |
369 delete observer; | 369 delete observer; |
370 | 370 |
371 // the connection is permanent; if we emit the same message again, the observer will be notified again | 371 // the connection is permanent; if we emit the same message again, the observer will be notified again |
372 testCounter = 0; | 372 testCounter = 0; |
373 observable.EmitMessage(MyObservable::MyCustomMessage(20)); | 373 observable.BroadcastMessage(MyObservable::MyCustomMessage(20)); |
374 ASSERT_EQ(0, testCounter); | 374 ASSERT_EQ(0, testCounter); |
375 } | 375 } |
376 | 376 |
377 #endif // C++ 11 | 377 #endif // C++ 11 |