2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 * @file test_event_support.cpp
18 * @author Piotr Marcinkiewicz (p.marcinkiew@samsung.com)
19 * @author Pawel Sikorski (p.sikorski@samsung.com)
21 * @brief This file contains test for event support
24 #include <dpl/test/test_runner.h>
25 #include <dpl/generic_event.h>
26 #include <dpl/event/event_listener.h>
27 #include <dpl/event/event_support.h>
28 #include <dpl/application.h>
29 #include <dpl/event/controller.h>
30 #include <dpl/log/log.h>
32 DECLARE_GENERIC_EVENT_0(TestEvent)
34 class TestListener : public DPL::Event::EventListener<TestEvent>
37 explicit TestListener() : m_dummyVar(0) { }
38 void OnEventReceived(const TestEvent &)
42 int GetDummyVar() const
55 class TestEventSupport :
56 public DPL::Event::EventSupport<TestEvent>
61 EmitEvent(TestEvent());
65 DECLARE_GENERIC_EVENT_0(QuitEvent)
67 class QuitController :
68 public DPL::Event::Controller<DPL::TypeListDecl<QuitEvent>::Type>,
69 public DPL::ApplicationExt
72 QuitController() : DPL::ApplicationExt(1, NULL, "test-app")
78 virtual void OnEventReceived(const QuitEvent &)
85 Name: EventSupport_DestroyBeforeProcessing
86 Description: tests if remoign listener is full successfull
87 Expected: dummy var should be affected by explicit call of ZeroDummyVar(),
88 but no by emitting event after removing listener
90 RUNNER_TEST(EventSupport_DestroyBeforeProcessing)
92 QuitController quitter;
93 quitter.PostTimedEvent(QuitEvent(), 1.0);
95 TestListener eventListener;
97 TestEventSupport eventSupport;
98 eventSupport.AddListener(&eventListener);
99 eventSupport.TestEmitEvent();
100 eventSupport.RemoveListener(&eventListener);
102 eventListener.ZeroDummyVar();
105 RUNNER_ASSERT(eventListener.GetDummyVar() == 0);
110 void OnDelegateTest(const int &k);
112 void OnDelegateTest(const int &k)
114 LogDebug("Got delegate call");
118 class DelegateTestSupport :
119 public DPL::Event::EventSupport<int>
129 Name: EventSupport_BindDelegate
130 Description: tests if event support derived class successfully propagates
131 event to registered listener
132 Expected: value of event should be passed to listener
134 RUNNER_TEST(EventSupport_BindDelegate)
138 DelegateTestSupport support;
139 support.AddListener(&OnDelegateTest);
141 QuitController quitter;
142 quitter.PostTimedEvent(QuitEvent(), 1.0);
148 support.RemoveListener(&OnDelegateTest);
150 RUNNER_ASSERT(g_delegateTest == 7);