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/fast_delegate.h>
31 #include <dpl/log/log.h>
33 DECLARE_GENERIC_EVENT_0(TestEvent)
35 class TestListener: public DPL::Event::EventListener<TestEvent>
38 explicit TestListener() : m_dummyVar(0) { }
39 void OnEventReceived(const TestEvent &) { m_dummyVar = 1; }
40 int GetDummyVar() const { return m_dummyVar; }
41 void ZeroDummyVar() { m_dummyVar = 0; }
47 class TestEventSupport
48 : public DPL::Event::EventSupport<TestEvent>
51 void TestEmitEvent() { EmitEvent(TestEvent()); }
54 DECLARE_GENERIC_EVENT_0(QuitEvent)
57 : public DPL::Event::Controller<DPL::TypeListDecl<QuitEvent>::Type>,
58 public DPL::ApplicationExt
61 QuitController() : DPL::ApplicationExt(1, NULL, "test-app") { Touch(); }
64 virtual void OnEventReceived(const QuitEvent &) { Quit(); }
67 RUNNER_TEST(EventSupport_DestroyBeforeProcessing)
69 QuitController quitter;
70 quitter.PostTimedEvent(QuitEvent(), 1.0);
72 TestListener eventListener;
74 TestEventSupport eventSupport;
75 eventSupport.AddListener(&eventListener);
76 eventSupport.TestEmitEvent();
77 eventSupport.RemoveListener(&eventListener);
79 eventListener.ZeroDummyVar();
82 RUNNER_ASSERT(eventListener.GetDummyVar() == 0);
87 void OnDelegateTest(const int &k);
89 void OnDelegateTest(const int &k)
91 LogInfo("Got delegate call");
95 class DelegateTestSupport
96 : public DPL::Event::EventSupport<int>
105 RUNNER_TEST(EventSupport_BindDelegate)
109 DelegateTestSupport support;
110 support.AddListener(&OnDelegateTest);
112 QuitController quitter;
113 quitter.PostTimedEvent(QuitEvent(), 1.0);
119 support.RemoveListener(&OnDelegateTest);
121 RUNNER_ASSERT(g_delegateTest == 7);