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