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.
20 // Need to override adaptor classes for toolkit test harness, so include
21 // test harness headers before dali headers.
22 #include <dali-toolkit-test-suite-utils.h>
25 #include <dali-toolkit/dali-toolkit.h>
26 #include <dali/integration-api/events/touch-event-integ.h>
29 using namespace Toolkit;
32 void utc_dali_toolkit_button_startup(void)
34 test_return_value = TET_UNDEF;
37 void utc_dali_toolkit_button_cleanup(void)
39 test_return_value = TET_PASS;
44 static bool gButtonClicked = false;
46 static bool ButtonClicked( Button button )
48 gButtonClicked = true;
52 const Dali::TouchPoint pointDownInside( 0, TouchPoint::Down, 240, 400 );
53 const Dali::TouchPoint pointUpInside( 0, TouchPoint::Up, 240, 400 );
54 const Dali::TouchPoint pointLeave( 0, TouchPoint::Leave, 240, 400 );
55 const Dali::TouchPoint pointEnter( 0, TouchPoint::Motion, 240, 400 );
56 const Dali::TouchPoint pointDownOutside( 0, TouchPoint::Down, 10, 10 );
57 const Dali::TouchPoint pointUpOutside( 0, TouchPoint::Up, 10, 10 );
59 static float ANIMATION_TIME( 0.5f );
64 // Positive test case for a method
65 int UtcDaliButtonNew(void)
67 ToolkitTestApplication application;
68 tet_infoline(" UtcDaliButtonNew");
70 PushButton pushButton = PushButton::New();
72 DALI_TEST_CHECK( pushButton );
74 PushButton pushButton2( pushButton );
76 DALI_TEST_CHECK( pushButton2 );
82 handleButton = pushButton;
83 Button downCastPushButton = Button::DownCast( handleButton );
84 DALI_TEST_CHECK( downCastPushButton );
85 PushButton downCastPushButton2 = PushButton::DownCast( handleButton );
86 DALI_TEST_CHECK( downCastPushButton2 );
91 int UtcDaliButtonSetProperty(void)
93 tet_infoline("UtcDaliButtonSetProperty: ");
94 ToolkitTestApplication application;
96 PushButton pushButton = PushButton::New();
98 pushButton.SetProperty(pushButton.GetPropertyIndex("dimmed"), false);
99 DALI_TEST_CHECK( false == pushButton.IsDimmed() );
100 pushButton.SetProperty(pushButton.GetPropertyIndex("dimmed"), true);
101 DALI_TEST_CHECK( true == pushButton.IsDimmed() );
105 int UtcDaliButtonSetGetDimmed(void)
107 ToolkitTestApplication application;
108 tet_infoline(" UtcDaliButtonSetGetDimmed");
110 PushButton pushButton = PushButton::New();
112 pushButton.SetDimmed( true );
114 DALI_TEST_CHECK( pushButton.IsDimmed() );
116 pushButton.SetDimmed( false );
118 DALI_TEST_CHECK( !pushButton.IsDimmed() );
120 pushButton.SetDimmed( true );
122 DALI_TEST_CHECK( pushButton.IsDimmed() );
124 pushButton.SetDimmed( false );
126 DALI_TEST_CHECK( !pushButton.IsDimmed() );
130 int UtcDaliButtonSize(void)
132 ToolkitTestApplication application;
133 tet_infoline(" UtcDaliButtonSize");
135 ImageActor image01 = ImageActor::New(CreateBitmapImage());
136 image01.SetSize( 100, 50 );
138 PushButton pushButton;
142 // Test1 Size is set through Actor API
144 // First an image is set, then SetSize is called.
145 pushButton = PushButton::New();
147 pushButton.SetBackgroundImage( image01 );
148 pushButton.SetSize( 10.f, 10.f );
150 application.SendNotification();
151 application.Render();
153 size = pushButton.GetCurrentSize();
155 DALI_TEST_EQUALS( size.width, 10.f, TEST_LOCATION );
156 DALI_TEST_EQUALS( size.height, 10.f, TEST_LOCATION );
160 int UtcDaliButtonClicked(void)
162 ToolkitTestApplication application;
163 tet_infoline(" UtcDaliButtonClicked");
165 PushButton pushButton = PushButton::New();
166 pushButton.SetAnchorPoint( AnchorPoint::TOP_LEFT );
167 pushButton.SetParentOrigin( ParentOrigin::TOP_LEFT );
168 pushButton.SetPosition( 240, 400 );
169 pushButton.SetSize( 100, 100 );
171 Stage::GetCurrent().Add( pushButton );
173 application.SendNotification();
174 application.Render();
176 // connect to its touch signal
177 pushButton.ClickedSignal().Connect( &ButtonClicked );
179 Dali::Integration::TouchEvent event;
181 // Test1. Touch point down and up inside the button.
183 gButtonClicked = false;
184 event = Dali::Integration::TouchEvent();
185 event.AddPoint( pointDownInside );
186 application.ProcessEvent( event );
188 event = Dali::Integration::TouchEvent();
189 event.AddPoint( pointUpInside );
190 application.ProcessEvent( event );
192 DALI_TEST_CHECK( gButtonClicked );
194 // Test2. Touch point down and up outside the button.
196 gButtonClicked = false;
197 event = Dali::Integration::TouchEvent();
198 event.AddPoint( pointDownOutside );
199 application.ProcessEvent( event );
201 event = Dali::Integration::TouchEvent();
202 event.AddPoint( pointUpOutside );
203 application.ProcessEvent( event );
205 DALI_TEST_CHECK( !gButtonClicked );
207 // Test3. Touch point down inside and up outside the button.
209 gButtonClicked = false;
210 event = Dali::Integration::TouchEvent();
211 event.AddPoint( pointDownInside );
212 application.ProcessEvent( event );
214 event = Dali::Integration::TouchEvent();
215 event.AddPoint( pointLeave );
216 application.ProcessEvent( event );
218 event = Dali::Integration::TouchEvent();
219 event.AddPoint( pointUpOutside );
220 application.ProcessEvent( event );
222 DALI_TEST_CHECK( !gButtonClicked );
224 // Test4. Touch point down outside and up inside the button.
226 gButtonClicked = false;
227 event = Dali::Integration::TouchEvent();
228 event.AddPoint( pointDownOutside );
229 application.ProcessEvent( event );
231 event = Dali::Integration::TouchEvent();
232 event.AddPoint( pointEnter );
233 application.ProcessEvent( event );
235 event = Dali::Integration::TouchEvent();
236 event.AddPoint( pointUpInside );
237 application.ProcessEvent( event );
239 DALI_TEST_CHECK( !gButtonClicked );
246 static bool gClickedCallBackCalled;
248 static bool TestClickedCallback(Button button)
250 gClickedCallBackCalled = true;
256 int UtcDaliButtonConnectSignal(void)
258 ToolkitTestApplication application;
259 tet_infoline("UtcDaliButtonConnectSignal()");
261 gClickedCallBackCalled = false;
263 PushButton pushButton = PushButton::New();
264 pushButton.SetAnchorPoint( AnchorPoint::TOP_LEFT );
265 pushButton.SetParentOrigin( ParentOrigin::TOP_LEFT );
266 pushButton.SetPosition( 240, 400 );
267 pushButton.SetSize( 100, 100 );
269 Stage::GetCurrent().Add( pushButton );
271 application.SendNotification();
272 application.Render();
274 // connect to its clicked signal
275 pushButton.ClickedSignal().Connect(TestClickedCallback);
277 Dali::Integration::TouchEvent event;
279 // Touch point down and up inside the button.
281 event = Dali::Integration::TouchEvent();
282 event.AddPoint( pointDownInside );
283 application.ProcessEvent( event );
285 event = Dali::Integration::TouchEvent();
286 event.AddPoint( pointUpInside );
287 application.ProcessEvent( event );
289 DALI_TEST_CHECK( gClickedCallBackCalled == true );
291 gClickedCallBackCalled = false;
292 pushButton.ClickedSignal().Disconnect(TestClickedCallback);
294 // simulate another touch event
295 application.ProcessEvent( event );
297 DALI_TEST_CHECK( gClickedCallBackCalled == false );
301 int UtcDaliButtonSetGetAnimationTime(void)
303 ToolkitTestApplication application;
304 tet_infoline(" UtcDaliButtonSetGetAnimationTime");
306 PushButton pushButton = PushButton::New();
308 pushButton.SetAnimationTime( ANIMATION_TIME );
310 DALI_TEST_EQUALS( pushButton.GetAnimationTime(), ANIMATION_TIME, TEST_LOCATION );