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