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.
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>
26 using namespace Toolkit;
31 static bool gObjectCreatedCallBackCalled;
33 static void TestCallback(BaseHandle handle)
35 gObjectCreatedCallBackCalled = true;
38 static bool gSelectedSignalReceived = false;
39 static bool gSelected = false;
41 const Dali::TouchPoint pointDownInside( 0, TouchPoint::Down, 240, 400 );
42 const Dali::TouchPoint pointUpInside( 0, TouchPoint::Up, 240, 400 );
46 void rotating_selector_startup(void)
48 test_return_value = TET_UNDEF;
51 void rotating_selector_cleanup(void)
53 test_return_value = TET_PASS;
57 int UtcDaliRotatingSelectorNew(void)
59 ToolkitTestApplication application;
61 tet_infoline("UtcDaliRotatingSelectorNew");
62 RotatingSelector selector;
64 DALI_TEST_CHECK(!selector);
66 Actor unSelectedActor = Actor::New();
67 Actor selectedActor = Actor::New();
69 selector = RotatingSelector::New(unSelectedActor, selectedActor);
71 DALI_TEST_CHECK(selector);
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 );
77 gObjectCreatedCallBackCalled = false;
78 registry.ObjectCreatedSignal().Connect(&TestCallback);
80 RotatingSelector selector = RotatingSelector::New(unSelectedActor, selectedActor);
82 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
89 // Callback test function
90 void OnSelectedSignal(RotatingSelector actor, bool selected)
92 gSelectedSignalReceived = true;
99 int UtcDaliRotatingSelectorSetSelected(void)
101 ToolkitTestApplication application;
103 tet_infoline("UtcDaliRotatingSelectorSetSelected");
105 BitmapImage img = BitmapImage::New( 1,1 );
106 ImageActor unSelectedActor = ImageActor::New( img );
107 ImageActor selectedActor = ImageActor::New( img );
109 RotatingSelector selector = RotatingSelector::New(unSelectedActor, selectedActor);
111 selector.SetAnchorPoint( AnchorPoint::TOP_LEFT );
112 selector.SetParentOrigin( ParentOrigin::TOP_LEFT );
113 selector.SetPosition( 240, 400 );
114 selector.SetSize( 100, 100 );
116 // connect to its selected signal
117 selector.SelectedSignal().Connect( &OnSelectedSignal );
119 Stage::GetCurrent().Add( selector );
121 gSelectedSignalReceived = false;
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);
132 DALI_TEST_CHECK( selector.IsSelected() );
133 DALI_TEST_CHECK( gSelectedSignalReceived );
134 DALI_TEST_CHECK( gSelected );
136 gSelectedSignalReceived = false;
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);
147 DALI_TEST_CHECK( gSelectedSignalReceived );
148 DALI_TEST_CHECK( !gSelected );
149 DALI_TEST_CHECK( !selector.IsSelected() );
153 int UtcDaliRotatingSelectorSetSelectedAndUnSelectedActor(void)
155 ToolkitTestApplication application;
157 tet_infoline("UtcDaliRotatingSelectorSetSelectedAndUnSelectedActor");
159 BitmapImage img = BitmapImage::New( 1,1 );
160 ImageActor actor1 = ImageActor::New( img );
161 ImageActor actor2 = ImageActor::New( img );
163 RotatingSelector selector = RotatingSelector::New(actor1, actor2);
164 Stage::GetCurrent().Add( selector );
166 ImageActor unSelectedActor = ImageActor::New( img );
167 ImageActor selectedActor = ImageActor::New( img );
169 selector.SetSelectedActor(selectedActor);
171 Actor actor3 = selector.GetSelectedActor();
172 DALI_TEST_CHECK( selectedActor == actor3 );
174 selector.SetUnSelectedActor(unSelectedActor);
176 Actor actor4 = selector.GetUnSelectedActor();
177 DALI_TEST_CHECK( unSelectedActor == actor4 );
183 int UtcDaliRotatingSelectorSetSelectable(void)
185 ToolkitTestApplication application;
187 tet_infoline("UtcDaliRotatingSelectorSetSelectable");
189 BitmapImage img = BitmapImage::New( 1,1 );
190 ImageActor unSelectedActor = ImageActor::New( img );
191 ImageActor selectedActor = ImageActor::New( img );
193 RotatingSelector selector = RotatingSelector::New(unSelectedActor, selectedActor);
195 selector.SetSelectable(true);
196 DALI_TEST_CHECK( selector.IsSelectable() );
198 selector.SetSelectable(false);
199 DALI_TEST_CHECK( !selector.IsSelectable() );
203 int UtcDaliRotatingSelectorSignalSelected(void)
205 ToolkitTestApplication application;
207 tet_infoline("UtcDaliRotatingSelectorSignalSelected");
209 BitmapImage img = BitmapImage::New( 1,1 );
210 ImageActor unSelectedActor = ImageActor::New( img );
211 ImageActor selectedActor = ImageActor::New( img );
213 RotatingSelector selector = RotatingSelector::New(unSelectedActor, selectedActor);
215 selector.SetAnchorPoint( AnchorPoint::TOP_LEFT );
216 selector.SetParentOrigin( ParentOrigin::TOP_LEFT );
217 selector.SetPosition( 240, 400 );
218 selector.SetSize( 100, 100 );
220 // connect to its selected signal
221 selector.SelectedSignal().Connect( &OnSelectedSignal );
223 Stage::GetCurrent().Add( selector );
225 DALI_TEST_CHECK( !selector.IsSelected() );
227 gSelectedSignalReceived = false;
230 application.SendNotification();
231 application.Render(1000);
232 application.SendNotification();
233 application.Render(1000);
235 //Test using touch event simulation
236 Dali::Integration::TouchEvent event;
238 event = Dali::Integration::TouchEvent();
239 event.AddPoint( pointDownInside );
240 application.ProcessEvent( event );
242 event = Dali::Integration::TouchEvent();
243 event.AddPoint( pointUpInside );
244 application.ProcessEvent( event );
246 application.SendNotification();
247 application.Render(1000);
248 application.SendNotification();
249 application.Render(1000);
251 DALI_TEST_CHECK( selector.IsSelected() );
252 DALI_TEST_CHECK( gSelectedSignalReceived );
253 DALI_TEST_CHECK( gSelected );