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.
20 #include <dali-toolkit-test-suite-utils.h>
21 #include <dali-toolkit/dali-toolkit.h>
22 #include <dali/integration-api/events/touch-event-integ.h>
27 using namespace Toolkit;
32 static bool gObjectCreatedCallBackCalled;
34 static void TestCallback(BaseHandle handle)
36 gObjectCreatedCallBackCalled = true;
39 static bool gSelectedSignalReceived = false;
40 static bool gSelected = false;
42 const Dali::TouchPoint pointDownInside( 0, TouchPoint::Down, 240, 400 );
43 const Dali::TouchPoint pointUpInside( 0, TouchPoint::Up, 240, 400 );
47 void rotating_selector_startup(void)
49 test_return_value = TET_UNDEF;
52 void rotating_selector_cleanup(void)
54 test_return_value = TET_PASS;
58 int UtcDaliRotatingSelectorNew(void)
60 ToolkitTestApplication application;
62 tet_infoline("UtcDaliRotatingSelectorNew");
63 RotatingSelector selector;
65 DALI_TEST_CHECK(!selector);
67 Actor unSelectedActor = Actor::New();
68 Actor selectedActor = Actor::New();
70 selector = RotatingSelector::New(unSelectedActor, selectedActor);
72 DALI_TEST_CHECK(selector);
74 //Additional check to ensure object is created by checking if it's registered
75 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
76 DALI_TEST_CHECK( registry );
78 gObjectCreatedCallBackCalled = false;
79 registry.ObjectCreatedSignal().Connect(&TestCallback);
81 RotatingSelector selector = RotatingSelector::New(unSelectedActor, selectedActor);
83 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
90 // Callback test function
91 void OnSelectedSignal(RotatingSelector actor, bool selected)
93 gSelectedSignalReceived = true;
100 int UtcDaliRotatingSelectorSetSelected(void)
102 ToolkitTestApplication application;
104 tet_infoline("UtcDaliRotatingSelectorSetSelected");
106 BitmapImage img = BitmapImage::New( 1,1 );
107 ImageActor unSelectedActor = ImageActor::New( img );
108 ImageActor selectedActor = ImageActor::New( img );
110 RotatingSelector selector = RotatingSelector::New(unSelectedActor, selectedActor);
112 selector.SetAnchorPoint( AnchorPoint::TOP_LEFT );
113 selector.SetParentOrigin( ParentOrigin::TOP_LEFT );
114 selector.SetPosition( 240, 400 );
115 selector.SetSize( 100, 100 );
117 // connect to its selected signal
118 selector.SelectedSignal().Connect( &OnSelectedSignal );
120 Stage::GetCurrent().Add( selector );
122 gSelectedSignalReceived = false;
125 selector.SetSelected(true);
126 application.SendNotification();
127 application.Render(1000);
128 application.SendNotification();
129 application.Render(1000);
130 application.SendNotification();
131 application.Render(1000);
133 DALI_TEST_CHECK( selector.IsSelected() );
134 DALI_TEST_CHECK( gSelectedSignalReceived );
135 DALI_TEST_CHECK( gSelected );
137 gSelectedSignalReceived = false;
140 selector.SetSelected(false);
141 application.SendNotification();
142 application.Render(1000);
143 application.SendNotification();
144 application.Render(1000);
145 application.SendNotification();
146 application.Render(1000);
148 DALI_TEST_CHECK( gSelectedSignalReceived );
149 DALI_TEST_CHECK( !gSelected );
150 DALI_TEST_CHECK( !selector.IsSelected() );
154 int UtcDaliRotatingSelectorSetSelectedAndUnSelectedActor(void)
156 ToolkitTestApplication application;
158 tet_infoline("UtcDaliRotatingSelectorSetSelectedAndUnSelectedActor");
160 BitmapImage img = BitmapImage::New( 1,1 );
161 ImageActor actor1 = ImageActor::New( img );
162 ImageActor actor2 = ImageActor::New( img );
164 RotatingSelector selector = RotatingSelector::New(actor1, actor2);
165 Stage::GetCurrent().Add( selector );
167 ImageActor unSelectedActor = ImageActor::New( img );
168 ImageActor selectedActor = ImageActor::New( img );
170 selector.SetSelectedActor(selectedActor);
172 Actor actor3 = selector.GetSelectedActor();
173 DALI_TEST_CHECK( selectedActor == actor3 );
175 selector.SetUnSelectedActor(unSelectedActor);
177 Actor actor4 = selector.GetUnSelectedActor();
178 DALI_TEST_CHECK( unSelectedActor == actor4 );
184 int UtcDaliRotatingSelectorSetSelectable(void)
186 ToolkitTestApplication application;
188 tet_infoline("UtcDaliRotatingSelectorSetSelectable");
190 BitmapImage img = BitmapImage::New( 1,1 );
191 ImageActor unSelectedActor = ImageActor::New( img );
192 ImageActor selectedActor = ImageActor::New( img );
194 RotatingSelector selector = RotatingSelector::New(unSelectedActor, selectedActor);
196 selector.SetSelectable(true);
197 DALI_TEST_CHECK( selector.IsSelectable() );
199 selector.SetSelectable(false);
200 DALI_TEST_CHECK( !selector.IsSelectable() );
204 int UtcDaliRotatingSelectorSignalSelected(void)
206 ToolkitTestApplication application;
208 tet_infoline("UtcDaliRotatingSelectorSignalSelected");
210 BitmapImage img = BitmapImage::New( 1,1 );
211 ImageActor unSelectedActor = ImageActor::New( img );
212 ImageActor selectedActor = ImageActor::New( img );
214 RotatingSelector selector = RotatingSelector::New(unSelectedActor, selectedActor);
216 selector.SetAnchorPoint( AnchorPoint::TOP_LEFT );
217 selector.SetParentOrigin( ParentOrigin::TOP_LEFT );
218 selector.SetPosition( 240, 400 );
219 selector.SetSize( 100, 100 );
221 // connect to its selected signal
222 selector.SelectedSignal().Connect( &OnSelectedSignal );
224 Stage::GetCurrent().Add( selector );
226 DALI_TEST_CHECK( !selector.IsSelected() );
228 gSelectedSignalReceived = false;
231 application.SendNotification();
232 application.Render(1000);
233 application.SendNotification();
234 application.Render(1000);
236 //Test using touch event simulation
237 Dali::Integration::TouchEvent event;
239 event = Dali::Integration::TouchEvent();
240 event.AddPoint( pointDownInside );
241 application.ProcessEvent( event );
243 event = Dali::Integration::TouchEvent();
244 event.AddPoint( pointUpInside );
245 application.ProcessEvent( event );
247 application.SendNotification();
248 application.Render(1000);
249 application.SendNotification();
250 application.Render(1000);
252 DALI_TEST_CHECK( selector.IsSelected() );
253 DALI_TEST_CHECK( gSelectedSignalReceived );
254 DALI_TEST_CHECK( gSelected );