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