2 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
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.
23 #include <dali/public-api/dali-core.h>
24 #include <dali/integration-api/events/touch-event-integ.h>
25 #include <dali-toolkit-test-suite-utils.h>
27 #include <dali-toolkit/public-api/controls/selectors/rotating-selector.h>
30 using namespace Toolkit;
32 static void Startup();
33 static void Cleanup();
37 static bool gObjectCreatedCallBackCalled;
39 static void TestCallback(BaseHandle handle)
41 gObjectCreatedCallBackCalled = true;
46 void (*tet_startup)() = Startup;
47 void (*tet_cleanup)() = Cleanup;
50 static void UtcDaliRotatingSelectorNew();
51 static void UtcDaliRotatingSelectorSetSelected();
52 static void UtcDaliRotatingSelectorSetSelectedAndUnSelectedActor();
53 static void UtcDaliRotatingSelectorSetSelectable();
54 static void UtcDaliRotatingSelectorSignalSelected();
56 static bool gSelectedSignalReceived = false;
57 static bool gSelected = false;
59 const Dali::TouchPoint pointDownInside( 0, TouchPoint::Down, 240, 400 );
60 const Dali::TouchPoint pointUpInside( 0, TouchPoint::Up, 240, 400 );
63 POSITIVE_TC_IDX = 0x01,
67 // Add test functionality for all APIs in the class (Positive and Negative)
69 struct tet_testlist tet_testlist[] = {
70 { UtcDaliRotatingSelectorNew, POSITIVE_TC_IDX },
71 { UtcDaliRotatingSelectorSetSelected, POSITIVE_TC_IDX },
72 { UtcDaliRotatingSelectorSetSelectedAndUnSelectedActor, POSITIVE_TC_IDX },
73 { UtcDaliRotatingSelectorSetSelectable, POSITIVE_TC_IDX },
74 { UtcDaliRotatingSelectorSignalSelected, POSITIVE_TC_IDX },
79 // Called only once before first test is run.
84 // Called only once after last test is run
90 static void UtcDaliRotatingSelectorNew()
92 ToolkitTestApplication application;
94 tet_infoline("UtcDaliRotatingSelectorNew");
95 RotatingSelector selector;
97 DALI_TEST_CHECK(!selector);
99 Actor unSelectedActor = Actor::New();
100 Actor selectedActor = Actor::New();
102 selector = RotatingSelector::New(unSelectedActor, selectedActor);
104 DALI_TEST_CHECK(selector);
106 //Additional check to ensure object is created by checking if it's registered
107 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
108 DALI_TEST_CHECK( registry );
110 gObjectCreatedCallBackCalled = false;
111 registry.ObjectCreatedSignal().Connect(&TestCallback);
113 RotatingSelector selector = RotatingSelector::New(unSelectedActor, selectedActor);
115 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
118 // Callback test function
119 void OnSelectedSignal(RotatingSelector actor, bool selected)
121 gSelectedSignalReceived = true;
122 gSelected = selected;
125 static void UtcDaliRotatingSelectorSetSelected()
127 ToolkitTestApplication application;
129 tet_infoline("UtcDaliRotatingSelectorSetSelected");
131 BitmapImage img = BitmapImage::New( 1,1 );
132 ImageActor unSelectedActor = ImageActor::New( img );
133 ImageActor selectedActor = ImageActor::New( img );
135 RotatingSelector selector = RotatingSelector::New(unSelectedActor, selectedActor);
137 selector.SetAnchorPoint( AnchorPoint::TOP_LEFT );
138 selector.SetParentOrigin( ParentOrigin::TOP_LEFT );
139 selector.SetPosition( 240, 400 );
140 selector.SetSize( 100, 100 );
142 // connect to its selected signal
143 selector.SelectedSignal().Connect( &OnSelectedSignal );
145 Stage::GetCurrent().Add( selector );
147 gSelectedSignalReceived = false;
150 selector.SetSelected(true);
151 application.SendNotification();
152 application.Render(1000);
153 application.SendNotification();
154 application.Render(1000);
155 application.SendNotification();
156 application.Render(1000);
158 DALI_TEST_CHECK( selector.IsSelected() );
159 DALI_TEST_CHECK( gSelectedSignalReceived );
160 DALI_TEST_CHECK( gSelected );
162 gSelectedSignalReceived = false;
165 selector.SetSelected(false);
166 application.SendNotification();
167 application.Render(1000);
168 application.SendNotification();
169 application.Render(1000);
170 application.SendNotification();
171 application.Render(1000);
173 DALI_TEST_CHECK( gSelectedSignalReceived );
174 DALI_TEST_CHECK( !gSelected );
175 DALI_TEST_CHECK( !selector.IsSelected() );
178 static void UtcDaliRotatingSelectorSetSelectedAndUnSelectedActor()
180 ToolkitTestApplication application;
182 tet_infoline("UtcDaliRotatingSelectorSetSelectedAndUnSelectedActor");
184 BitmapImage img = BitmapImage::New( 1,1 );
185 ImageActor actor1 = ImageActor::New( img );
186 ImageActor actor2 = ImageActor::New( img );
188 RotatingSelector selector = RotatingSelector::New(actor1, actor2);
189 Stage::GetCurrent().Add( selector );
191 ImageActor unSelectedActor = ImageActor::New( img );
192 ImageActor selectedActor = ImageActor::New( img );
194 selector.SetSelectedActor(selectedActor);
196 Actor actor3 = selector.GetSelectedActor();
197 DALI_TEST_CHECK( selectedActor == actor3 );
199 selector.SetUnSelectedActor(unSelectedActor);
201 Actor actor4 = selector.GetUnSelectedActor();
202 DALI_TEST_CHECK( unSelectedActor == actor4 );
207 static void UtcDaliRotatingSelectorSetSelectable()
209 ToolkitTestApplication application;
211 tet_infoline("UtcDaliRotatingSelectorSetSelectable");
213 BitmapImage img = BitmapImage::New( 1,1 );
214 ImageActor unSelectedActor = ImageActor::New( img );
215 ImageActor selectedActor = ImageActor::New( img );
217 RotatingSelector selector = RotatingSelector::New(unSelectedActor, selectedActor);
219 selector.SetSelectable(true);
220 DALI_TEST_CHECK( selector.IsSelectable() );
222 selector.SetSelectable(false);
223 DALI_TEST_CHECK( !selector.IsSelectable() );
226 static void UtcDaliRotatingSelectorSignalSelected()
228 ToolkitTestApplication application;
230 tet_infoline("UtcDaliRotatingSelectorSignalSelected");
232 BitmapImage img = BitmapImage::New( 1,1 );
233 ImageActor unSelectedActor = ImageActor::New( img );
234 ImageActor selectedActor = ImageActor::New( img );
236 RotatingSelector selector = RotatingSelector::New(unSelectedActor, selectedActor);
238 selector.SetAnchorPoint( AnchorPoint::TOP_LEFT );
239 selector.SetParentOrigin( ParentOrigin::TOP_LEFT );
240 selector.SetPosition( 240, 400 );
241 selector.SetSize( 100, 100 );
243 // connect to its selected signal
244 selector.SelectedSignal().Connect( &OnSelectedSignal );
246 Stage::GetCurrent().Add( selector );
248 DALI_TEST_CHECK( !selector.IsSelected() );
250 gSelectedSignalReceived = false;
253 application.SendNotification();
254 application.Render(1000);
255 application.SendNotification();
256 application.Render(1000);
258 //Test using touch event simulation
259 Dali::Integration::TouchEvent event;
261 event = Dali::Integration::TouchEvent();
262 event.AddPoint( pointDownInside );
263 application.ProcessEvent( event );
265 event = Dali::Integration::TouchEvent();
266 event.AddPoint( pointUpInside );
267 application.ProcessEvent( event );
269 application.SendNotification();
270 application.Render(1000);
271 application.SendNotification();
272 application.Render(1000);
274 DALI_TEST_CHECK( selector.IsSelected() );
275 DALI_TEST_CHECK( gSelectedSignalReceived );
276 DALI_TEST_CHECK( gSelected );