48a3af8637cbcde9437f18b1cd9f5ddedc9e52db
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-unmanaged / utc-Dali-RotatingSelector.cpp
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16  */
17
18 #include <iostream>
19 #include <stdlib.h>
20 #include <dali-toolkit-test-suite-utils.h>
21 #include <dali-toolkit/dali-toolkit.h>
22 #include <dali/integration-api/events/touch-event-integ.h>
23
24
25
26 using namespace Dali;
27 using namespace Toolkit;
28
29
30 namespace
31 {
32 static bool gObjectCreatedCallBackCalled;
33
34 static void TestCallback(BaseHandle handle)
35 {
36   gObjectCreatedCallBackCalled = true;
37 }
38
39 static bool gSelectedSignalReceived = false;
40 static bool gSelected = false;
41
42 const Dali::TouchPoint pointDownInside( 0, TouchPoint::Down, 240, 400 );
43 const Dali::TouchPoint pointUpInside( 0, TouchPoint::Up, 240, 400 );
44 } // namespace
45
46
47 void rotating_selector_startup(void)
48 {
49   test_return_value = TET_UNDEF;
50 }
51
52 void rotating_selector_cleanup(void)
53 {
54   test_return_value = TET_PASS;
55 }
56
57
58 int UtcDaliRotatingSelectorNew(void)
59 {
60   ToolkitTestApplication application;
61
62   tet_infoline("UtcDaliRotatingSelectorNew");
63   RotatingSelector selector;
64
65   DALI_TEST_CHECK(!selector);
66
67   Actor unSelectedActor = Actor::New();
68   Actor selectedActor = Actor::New();
69
70   selector = RotatingSelector::New(unSelectedActor, selectedActor);
71
72   DALI_TEST_CHECK(selector);
73
74   //Additional check to ensure object is created by checking if it's registered
75   ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
76   DALI_TEST_CHECK( registry );
77
78   gObjectCreatedCallBackCalled = false;
79   registry.ObjectCreatedSignal().Connect(&TestCallback);
80   {
81     RotatingSelector selector = RotatingSelector::New(unSelectedActor, selectedActor);
82   }
83   DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
84   END_TEST;
85 }
86
87 namespace
88 {
89
90 // Callback test function
91 void OnSelectedSignal(RotatingSelector actor, bool selected)
92 {
93   gSelectedSignalReceived = true;
94   gSelected = selected;
95 }
96
97 }
98
99
100 int UtcDaliRotatingSelectorSetSelected(void)
101 {
102   ToolkitTestApplication application;
103
104   tet_infoline("UtcDaliRotatingSelectorSetSelected");
105
106   BitmapImage img = BitmapImage::New( 1,1 );
107   ImageActor unSelectedActor = ImageActor::New( img );
108   ImageActor selectedActor = ImageActor::New( img );
109
110   RotatingSelector selector = RotatingSelector::New(unSelectedActor, selectedActor);
111
112   selector.SetAnchorPoint( AnchorPoint::TOP_LEFT );
113   selector.SetParentOrigin( ParentOrigin::TOP_LEFT );
114   selector.SetPosition( 240, 400 );
115   selector.SetSize( 100, 100 );
116
117   // connect to its selected signal
118   selector.SelectedSignal().Connect( &OnSelectedSignal );
119
120   Stage::GetCurrent().Add( selector );
121
122   gSelectedSignalReceived = false;
123   gSelected = false;
124
125   selector.SetSelected(true);
126   application.SendNotification();
127   application.Render(1000);
128   application.SendNotification();
129   application.Render(1000);
130   application.SendNotification();
131   application.Render(1000);
132
133   DALI_TEST_CHECK( selector.IsSelected() );
134   DALI_TEST_CHECK( gSelectedSignalReceived );
135   DALI_TEST_CHECK( gSelected );
136
137   gSelectedSignalReceived = false;
138   gSelected = false;
139
140   selector.SetSelected(false);
141   application.SendNotification();
142   application.Render(1000);
143   application.SendNotification();
144   application.Render(1000);
145   application.SendNotification();
146   application.Render(1000);
147
148   DALI_TEST_CHECK( gSelectedSignalReceived );
149   DALI_TEST_CHECK( !gSelected );
150   DALI_TEST_CHECK( !selector.IsSelected() );
151   END_TEST;
152 }
153
154 int UtcDaliRotatingSelectorSetSelectedAndUnSelectedActor(void)
155 {
156   ToolkitTestApplication application;
157
158   tet_infoline("UtcDaliRotatingSelectorSetSelectedAndUnSelectedActor");
159
160   BitmapImage img = BitmapImage::New( 1,1 );
161   ImageActor actor1 = ImageActor::New( img );
162   ImageActor actor2 = ImageActor::New( img );
163
164   RotatingSelector selector = RotatingSelector::New(actor1, actor2);
165   Stage::GetCurrent().Add( selector );
166
167   ImageActor unSelectedActor = ImageActor::New( img );
168   ImageActor selectedActor = ImageActor::New( img );
169
170   selector.SetSelectedActor(selectedActor);
171
172   Actor actor3 = selector.GetSelectedActor();
173   DALI_TEST_CHECK( selectedActor == actor3 );
174
175   selector.SetUnSelectedActor(unSelectedActor);
176
177   Actor actor4 = selector.GetUnSelectedActor();
178   DALI_TEST_CHECK( unSelectedActor == actor4 );
179
180   END_TEST;
181 }
182
183
184 int UtcDaliRotatingSelectorSetSelectable(void)
185 {
186   ToolkitTestApplication application;
187
188   tet_infoline("UtcDaliRotatingSelectorSetSelectable");
189
190   BitmapImage img = BitmapImage::New( 1,1 );
191   ImageActor unSelectedActor = ImageActor::New( img );
192   ImageActor selectedActor = ImageActor::New( img );
193
194   RotatingSelector selector = RotatingSelector::New(unSelectedActor, selectedActor);
195
196   selector.SetSelectable(true);
197   DALI_TEST_CHECK( selector.IsSelectable() );
198
199   selector.SetSelectable(false);
200   DALI_TEST_CHECK( !selector.IsSelectable() );
201   END_TEST;
202 }
203
204 int UtcDaliRotatingSelectorSignalSelected(void)
205 {
206   ToolkitTestApplication application;
207
208   tet_infoline("UtcDaliRotatingSelectorSignalSelected");
209
210   BitmapImage img = BitmapImage::New( 1,1 );
211   ImageActor unSelectedActor = ImageActor::New( img );
212   ImageActor selectedActor = ImageActor::New( img );
213
214   RotatingSelector selector = RotatingSelector::New(unSelectedActor, selectedActor);
215
216   selector.SetAnchorPoint( AnchorPoint::TOP_LEFT );
217   selector.SetParentOrigin( ParentOrigin::TOP_LEFT );
218   selector.SetPosition( 240, 400 );
219   selector.SetSize( 100, 100 );
220
221   // connect to its selected signal
222   selector.SelectedSignal().Connect( &OnSelectedSignal );
223
224   Stage::GetCurrent().Add( selector );
225
226   DALI_TEST_CHECK( !selector.IsSelected() );
227
228   gSelectedSignalReceived = false;
229   gSelected = false;
230
231   application.SendNotification();
232   application.Render(1000);
233   application.SendNotification();
234   application.Render(1000);
235
236   //Test using touch event simulation
237   Dali::Integration::TouchEvent event;
238
239   event = Dali::Integration::TouchEvent();
240   event.AddPoint( pointDownInside );
241   application.ProcessEvent( event );
242
243   event = Dali::Integration::TouchEvent();
244   event.AddPoint( pointUpInside );
245   application.ProcessEvent( event );
246
247   application.SendNotification();
248   application.Render(1000);
249   application.SendNotification();
250   application.Render(1000);
251
252   DALI_TEST_CHECK( selector.IsSelected() );
253   DALI_TEST_CHECK( gSelectedSignalReceived );
254   DALI_TEST_CHECK( gSelected );
255
256   END_TEST;
257 }