Mercurial > hg > orthanc-stone
comparison UnitTestsSources/TestMessageBroker.cpp @ 456:b70fcc134ba4
moved LambdaCallable (currently still disable because it does not work in WASM)
author | Alain Mazy <alain@mazy.be> |
---|---|
date | Wed, 23 Jan 2019 13:58:51 +0100 |
parents | a750f11892ec |
children | 22b80f5c3a1c aaeec7be8fb7 |
comparison
equal
deleted
inserted
replaced
455:e3a6e3bf5c7c | 456:b70fcc134ba4 |
---|---|
312 ASSERT_EQ(0, testCounter); | 312 ASSERT_EQ(0, testCounter); |
313 } | 313 } |
314 | 314 |
315 #if __cplusplus >= 201103L | 315 #if __cplusplus >= 201103L |
316 | 316 |
317 #include <functional> | |
318 | |
319 namespace OrthancStone { | |
320 | |
321 template <typename TMessage> | |
322 class LambdaCallable : public MessageHandler<TMessage> | |
323 { | |
324 private: | |
325 | |
326 IObserver& observer_; | |
327 std::function<void (const TMessage&)> lambda_; | |
328 | |
329 public: | |
330 LambdaCallable(IObserver& observer, | |
331 std::function<void (const TMessage&)> lambdaFunction) : | |
332 observer_(observer), | |
333 lambda_(lambdaFunction) | |
334 { | |
335 } | |
336 | |
337 virtual void Apply(const IMessage& message) | |
338 { | |
339 lambda_(dynamic_cast<const TMessage&>(message)); | |
340 } | |
341 | |
342 virtual MessageType GetMessageType() const | |
343 { | |
344 return static_cast<MessageType>(TMessage::Type); | |
345 } | |
346 | |
347 virtual IObserver* GetObserver() const | |
348 { | |
349 return &observer_; | |
350 } | |
351 }; | |
352 | |
353 | |
354 } | |
355 | |
356 TEST(MessageBroker, TestLambdaSimpleUseCase) | 317 TEST(MessageBroker, TestLambdaSimpleUseCase) |
357 { | 318 { |
358 MessageBroker broker; | 319 MessageBroker broker; |
359 MyObservable observable(broker); | 320 MyObservable observable(broker); |
360 MyObserver* observer = new MyObserver(broker); | 321 MyObserver* observer = new MyObserver(broker); |