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 "dummy-control.h"
29 using namespace Dali::Toolkit;
31 void utc_dali_toolkit_control_startup(void)
33 test_return_value = TET_UNDEF;
36 void utc_dali_toolkit_control_cleanup(void)
38 test_return_value = TET_PASS;
41 ///////////////////////////////////////////////////////////////////////////////////////////////////
46 static bool gObjectCreatedCallBackCalled;
48 static void TestCallback(BaseHandle handle)
50 gObjectCreatedCallBackCalled = true;
55 ///////////////////////////////////////////////////////////////////////////////////////////////////
58 int UtcDaliControlConstructor(void)
60 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
64 DALI_TEST_CHECK( !Control::DownCast(dummy) );
66 dummy = DummyControl::New();
68 DALI_TEST_CHECK( Control::DownCast(dummy) );
72 int UtcDaliControlNew(void)
74 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
78 DALI_TEST_CHECK( !Control::DownCast(control) );
80 control = Control::New();
82 DALI_TEST_CHECK( Control::DownCast(control) );
87 int UtcDaliControlRegister(void)
89 ToolkitTestApplication application;
91 // Ensure the object is registered after creation
92 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
93 DALI_TEST_CHECK( registry );
95 gObjectCreatedCallBackCalled = false;
96 registry.ObjectCreatedSignal().Connect( &TestCallback );
98 Alignment alignment = Alignment::New();
100 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
104 int UtcDaliControlCopyAndAssignment(void)
106 ToolkitTestApplication application;
108 DummyControl control = DummyControl::New();
109 Control emptyControl;
111 Control controlCopy( control );
112 DALI_TEST_CHECK( control == controlCopy );
114 Control emptyControlCopy( emptyControl );
115 DALI_TEST_CHECK( emptyControl == emptyControlCopy );
117 Control controlEquals;
118 controlEquals = control;
119 DALI_TEST_CHECK( control == controlEquals );
121 Control emptyControlEquals;
122 emptyControlEquals = emptyControl;
123 DALI_TEST_CHECK( emptyControl == emptyControlEquals );
127 DALI_TEST_CHECK( control == controlCopy );
131 int UtcDaliControlDownCast(void)
133 ToolkitTestApplication application;
135 DummyControl control;
137 DALI_TEST_CHECK( !Control::DownCast( control ) );
139 control = DummyControl::New();
141 DALI_TEST_CHECK( Control::DownCast( control ) );
145 DALI_TEST_CHECK( !Control::DownCast( actor ) );
147 actor = Actor::New();
149 DALI_TEST_CHECK( !Control::DownCast( actor ) );
153 int UtcDaliControlDownCastTemplate(void)
155 ToolkitTestApplication application;
157 DummyControl control;
159 DALI_TEST_CHECK( !DummyControl::DownCast( control ));
161 control = DummyControl::New();
163 DALI_TEST_CHECK( DummyControl::DownCast( control ) );
167 DALI_TEST_CHECK( !DummyControl::DownCast( actor ) );
169 actor = Actor::New();
171 DALI_TEST_CHECK( !DummyControl::DownCast( actor ) );
175 int UtcDaliControlKeyInputFocus(void)
177 ToolkitTestApplication application;
178 Stage stage = Stage::GetCurrent();
180 DummyControl control;
182 PushButton pushButton1 = PushButton::New();
183 stage.Add( pushButton1 );
185 pushButton1.SetKeyInputFocus();
186 DALI_TEST_CHECK( pushButton1.HasKeyInputFocus() );
188 pushButton1.ClearKeyInputFocus();
189 DALI_TEST_CHECK( !pushButton1.HasKeyInputFocus() );
193 int UtcDaliControlGetImplementation(void)
195 ToolkitTestApplication application;
197 DummyControl control;
203 ControlImpl& controlImpl = control.GetImplementation();
204 (void)controlImpl; // Avoid unused warning
205 tet_result(TET_FAIL);
207 catch (DaliException &exception)
209 tet_result(TET_PASS);
217 const DummyControl constControl(control);
218 const ControlImpl& controlImpl = constControl.GetImplementation();
219 (void)controlImpl; // Avoid unused warning
220 tet_result(TET_FAIL);
222 catch (DaliException &exception)
224 tet_result(TET_PASS);
228 control = DummyControl::New();
234 ControlImpl& controlImpl = control.GetImplementation();
235 (void)controlImpl; // Avoid unused warning
236 tet_result(TET_PASS);
238 catch (DaliException &exception)
240 tet_result(TET_FAIL);
248 const DummyControl constControl(control);
249 const ControlImpl& controlImpl = constControl.GetImplementation();
250 (void)controlImpl; // Avoid unused warning
251 tet_result(TET_PASS);
253 catch (DaliException &exception)
255 tet_result(TET_FAIL);
261 int UtcDaliControlSignalConnectDisconnect(void)
263 ToolkitTestApplication application;
266 DummyControl dummy = DummyControlImpl::New();
268 Actor actor = Actor::New();
269 DALI_TEST_EQUALS( actor.SetSizeSignal().GetConnectionCount(), 0u, TEST_LOCATION );
270 actor.SetSizeSignal().Connect( &dummy, &DummyControl::CustomSlot1 );
271 DALI_TEST_EQUALS( actor.SetSizeSignal().GetConnectionCount(), 1u, TEST_LOCATION );
272 DALI_TEST_EQUALS( dummy.mCustomSlot1Called, false, TEST_LOCATION );
273 DALI_TEST_EQUALS( dummy.mCustomSlot1Value, Vector3::ZERO, TEST_LOCATION );
275 const Vector3 newSize( 10, 10, 0 );
276 actor.SetSize( newSize );
277 DALI_TEST_EQUALS( dummy.mCustomSlot1Called, true, TEST_LOCATION );
278 DALI_TEST_EQUALS( dummy.mCustomSlot1Value, newSize, TEST_LOCATION );
280 dummy.mCustomSlot1Called = false;
281 actor.SetSizeSignal().Disconnect( &dummy, &DummyControl::CustomSlot1 );
282 DALI_TEST_EQUALS( actor.SetSizeSignal().GetConnectionCount(), 0u, TEST_LOCATION );
283 const Vector3 ignoredSize( 20, 20, 0 );
284 actor.SetSize( ignoredSize );
285 DALI_TEST_EQUALS( dummy.mCustomSlot1Called, false, TEST_LOCATION );
286 DALI_TEST_EQUALS( dummy.mCustomSlot1Value, newSize/*not ignoredSize*/, TEST_LOCATION );
291 int UtcDaliControlSignalAutomaticDisconnect(void)
293 ToolkitTestApplication application;
295 Actor actor = Actor::New();
298 DummyControl dummy = DummyControlImpl::New();
300 actor.SetSizeSignal().Connect( &dummy, &DummyControl::CustomSlot1 );
301 DALI_TEST_EQUALS( actor.SetSizeSignal().GetConnectionCount(), 1u, TEST_LOCATION );
302 DALI_TEST_EQUALS( dummy.mCustomSlot1Called, false, TEST_LOCATION );
303 DALI_TEST_EQUALS( dummy.mCustomSlot1Value, Vector3::ZERO, TEST_LOCATION );
305 const Vector3 newSize( 10, 10, 0 );
306 actor.SetSize( newSize );
307 DALI_TEST_EQUALS( dummy.mCustomSlot1Called, true, TEST_LOCATION );
308 DALI_TEST_EQUALS( dummy.mCustomSlot1Value, newSize, TEST_LOCATION );
310 // dummyControl automatically disconnects
312 DALI_TEST_EQUALS( actor.SetSizeSignal().GetConnectionCount(), 0u, TEST_LOCATION );
314 const Vector3 ignoredSize( 20, 20, 0 );
315 actor.SetSize( ignoredSize );
319 int UtcDaliControlTestParameters(void)
321 ToolkitTestApplication application;
322 DummyControl test = DummyControl::New();
324 Vector3 maxSize = test.GetNaturalSize();
325 Vector3 minSize = maxSize / 2.0f;
327 Toolkit::Control::SizePolicy widthPolicy( Control::Fixed );
328 Toolkit::Control::SizePolicy heightPolicy( Control::Fixed );
329 test.SetSizePolicy( widthPolicy, heightPolicy );
330 test.GetSizePolicy( widthPolicy, heightPolicy );
332 DALI_TEST_CHECK( widthPolicy == Control::Fixed && heightPolicy == Control::Fixed );
334 test.SetSize( 0.7f, 0.7f, 0.7f );
335 float width = 640.0f;
336 float height = test.GetHeightForWidth( width );
337 DALI_TEST_CHECK( test.GetWidthForHeight( height ) == width );
339 test.SetMinimumSize( minSize );
340 DALI_TEST_CHECK( test.GetMinimumSize() == minSize );
342 test.SetMaximumSize( maxSize );
343 DALI_TEST_CHECK( test.GetMaximumSize() == maxSize );
345 test.KeyEventSignal();
346 DummyControl test2 = DummyControl::New();
347 dynamic_cast< ConnectionTrackerInterface& >( test2 ).GetConnectionCount();
349 // Provide coverage for pointer destructor
350 Control* testControlPtr = new Control;
351 DALI_TEST_CHECK( testControlPtr );
352 delete testControlPtr;