2 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
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
8 // http://floralicense.org/license/
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.
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>
26 #include <dali-toolkit/public-api/controls/selectors/rotating-selector.h>
29 using namespace Toolkit;
31 static void Startup();
32 static void Cleanup();
36 static bool gObjectCreatedCallBackCalled;
38 static void TestCallback(BaseHandle handle)
40 gObjectCreatedCallBackCalled = true;
45 void (*tet_startup)() = Startup;
46 void (*tet_cleanup)() = Cleanup;
49 static void UtcDaliRotatingSelectorNew();
50 static void UtcDaliRotatingSelectorSetSelected();
51 static void UtcDaliRotatingSelectorSetSelectedAndUnSelectedActor();
52 static void UtcDaliRotatingSelectorSetSelectable();
53 static void UtcDaliRotatingSelectorSignalSelected();
55 static bool gSelectedSignalReceived = false;
56 static bool gSelected = false;
58 const Dali::TouchPoint pointDownInside( 0, TouchPoint::Down, 240, 400 );
59 const Dali::TouchPoint pointUpInside( 0, TouchPoint::Up, 240, 400 );
62 POSITIVE_TC_IDX = 0x01,
66 // Add test functionality for all APIs in the class (Positive and Negative)
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 },
78 // Called only once before first test is run.
83 // Called only once after last test is run
89 static void UtcDaliRotatingSelectorNew()
91 ToolkitTestApplication application;
93 tet_infoline("UtcDaliRotatingSelectorNew");
94 RotatingSelector selector;
96 DALI_TEST_CHECK(!selector);
98 Actor unSelectedActor = Actor::New();
99 Actor selectedActor = Actor::New();
101 selector = RotatingSelector::New(unSelectedActor, selectedActor);
103 DALI_TEST_CHECK(selector);
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 );
109 gObjectCreatedCallBackCalled = false;
110 registry.ObjectCreatedSignal().Connect(&TestCallback);
112 RotatingSelector selector = RotatingSelector::New(unSelectedActor, selectedActor);
114 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
117 // Callback test function
118 void OnSelectedSignal(RotatingSelector actor, bool selected)
120 gSelectedSignalReceived = true;
121 gSelected = selected;
124 static void UtcDaliRotatingSelectorSetSelected()
126 ToolkitTestApplication application;
128 tet_infoline("UtcDaliRotatingSelectorSetSelected");
130 BitmapImage img = BitmapImage::New( 1,1 );
131 ImageActor unSelectedActor = ImageActor::New( img );
132 ImageActor selectedActor = ImageActor::New( img );
134 RotatingSelector selector = RotatingSelector::New(unSelectedActor, selectedActor);
136 selector.SetAnchorPoint( AnchorPoint::TOP_LEFT );
137 selector.SetParentOrigin( ParentOrigin::TOP_LEFT );
138 selector.SetPosition( 240, 400 );
139 selector.SetSize( 100, 100 );
141 // connect to its selected signal
142 selector.SelectedSignal().Connect( &OnSelectedSignal );
144 Stage::GetCurrent().Add( selector );
146 gSelectedSignalReceived = false;
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);
157 DALI_TEST_CHECK( selector.IsSelected() );
158 DALI_TEST_CHECK( gSelectedSignalReceived );
159 DALI_TEST_CHECK( gSelected );
161 gSelectedSignalReceived = false;
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);
172 DALI_TEST_CHECK( gSelectedSignalReceived );
173 DALI_TEST_CHECK( !gSelected );
174 DALI_TEST_CHECK( !selector.IsSelected() );
177 static void UtcDaliRotatingSelectorSetSelectedAndUnSelectedActor()
179 ToolkitTestApplication application;
181 tet_infoline("UtcDaliRotatingSelectorSetSelectedAndUnSelectedActor");
183 BitmapImage img = BitmapImage::New( 1,1 );
184 ImageActor actor1 = ImageActor::New( img );
185 ImageActor actor2 = ImageActor::New( img );
187 RotatingSelector selector = RotatingSelector::New(actor1, actor2);
188 Stage::GetCurrent().Add( selector );
190 ImageActor unSelectedActor = ImageActor::New( img );
191 ImageActor selectedActor = ImageActor::New( img );
193 selector.SetSelectedActor(selectedActor);
195 Actor actor3 = selector.GetSelectedActor();
196 DALI_TEST_CHECK( selectedActor == actor3 );
198 selector.SetUnSelectedActor(unSelectedActor);
200 Actor actor4 = selector.GetUnSelectedActor();
201 DALI_TEST_CHECK( unSelectedActor == actor4 );
206 static void UtcDaliRotatingSelectorSetSelectable()
208 ToolkitTestApplication application;
210 tet_infoline("UtcDaliRotatingSelectorSetSelectable");
212 BitmapImage img = BitmapImage::New( 1,1 );
213 ImageActor unSelectedActor = ImageActor::New( img );
214 ImageActor selectedActor = ImageActor::New( img );
216 RotatingSelector selector = RotatingSelector::New(unSelectedActor, selectedActor);
218 selector.SetSelectable(true);
219 DALI_TEST_CHECK( selector.IsSelectable() );
221 selector.SetSelectable(false);
222 DALI_TEST_CHECK( !selector.IsSelectable() );
225 static void UtcDaliRotatingSelectorSignalSelected()
227 ToolkitTestApplication application;
229 tet_infoline("UtcDaliRotatingSelectorSignalSelected");
231 BitmapImage img = BitmapImage::New( 1,1 );
232 ImageActor unSelectedActor = ImageActor::New( img );
233 ImageActor selectedActor = ImageActor::New( img );
235 RotatingSelector selector = RotatingSelector::New(unSelectedActor, selectedActor);
237 selector.SetAnchorPoint( AnchorPoint::TOP_LEFT );
238 selector.SetParentOrigin( ParentOrigin::TOP_LEFT );
239 selector.SetPosition( 240, 400 );
240 selector.SetSize( 100, 100 );
242 // connect to its selected signal
243 selector.SelectedSignal().Connect( &OnSelectedSignal );
245 Stage::GetCurrent().Add( selector );
247 DALI_TEST_CHECK( !selector.IsSelected() );
249 gSelectedSignalReceived = false;
252 application.SendNotification();
253 application.Render(1000);
254 application.SendNotification();
255 application.Render(1000);
257 //Test using touch event simulation
258 Dali::Integration::TouchEvent event;
260 event = Dali::Integration::TouchEvent();
261 event.AddPoint( pointDownInside );
262 application.GetCore().SendEvent( event );
264 event = Dali::Integration::TouchEvent();
265 event.AddPoint( pointUpInside );
266 application.GetCore().SendEvent( event );
268 application.SendNotification();
269 application.Render(1000);
270 application.SendNotification();
271 application.Render(1000);
273 DALI_TEST_CHECK( selector.IsSelected() );
274 DALI_TEST_CHECK( gSelectedSignalReceived );
275 DALI_TEST_CHECK( gSelected );