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-toolkit/dali-toolkit.h>
26 #include <dali-toolkit-test-suite-utils.h>
28 #include "dummy-control.h"
31 using namespace Dali::Toolkit;
33 static void Startup();
34 static void Cleanup();
37 void (*tet_startup)() = Startup;
38 void (*tet_cleanup)() = Cleanup;
42 POSITIVE_TC_IDX = 0x01,
46 #define MAX_NUMBER_OF_TESTS 10000
48 struct tet_testlist tet_testlist[MAX_NUMBER_OF_TESTS];
51 // Add test functionality for all APIs in the class (Positive and Negative)
52 TEST_FUNCTION( UtcDaliControlConstructor, POSITIVE_TC_IDX );
53 TEST_FUNCTION( UtcDaliControlNew, POSITIVE_TC_IDX );
54 TEST_FUNCTION( UtcDaliControlRegister, POSITIVE_TC_IDX );
55 TEST_FUNCTION( UtcDaliControlCopyAndAssignment, POSITIVE_TC_IDX );
56 TEST_FUNCTION( UtcDaliControlDownCast, POSITIVE_TC_IDX );
57 TEST_FUNCTION( UtcDaliControlDownCastTemplate, POSITIVE_TC_IDX );
58 TEST_FUNCTION( UtcDaliControlKeyInputFocus, POSITIVE_TC_IDX );
59 TEST_FUNCTION( UtcDaliControlGetImplementation, POSITIVE_TC_IDX );
60 TEST_FUNCTION( UtcDaliControlSignalConnectDisconnect, POSITIVE_TC_IDX );
61 TEST_FUNCTION( UtcDaliControlSignalAutomaticDisconnect, POSITIVE_TC_IDX );
62 TEST_FUNCTION( UtcDaliControlTestParameters, POSITIVE_TC_IDX );
64 // Called only once before first test is run.
69 // Called only once after last test is run
74 static void UtcDaliControlConstructor()
76 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
80 DALI_TEST_CHECK( !Control::DownCast(dummy) );
82 dummy = DummyControl::New();
84 DALI_TEST_CHECK( Control::DownCast(dummy) );
87 static void UtcDaliControlNew()
89 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
93 DALI_TEST_CHECK( !Control::DownCast(control) );
95 control = Control::New();
97 DALI_TEST_CHECK( Control::DownCast(control) );
100 ///////////////////////////////////////////////////////////////////////////////////////////////////
102 static bool gObjectCreatedCallBackCalled;
104 static void TestCallback(BaseHandle handle)
106 gObjectCreatedCallBackCalled = true;
109 static void UtcDaliControlRegister()
111 ToolkitTestApplication application;
113 // Ensure the object is registered after creation
114 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
115 DALI_TEST_CHECK( registry );
117 gObjectCreatedCallBackCalled = false;
118 registry.ObjectCreatedSignal().Connect( &TestCallback );
120 Alignment alignment = Alignment::New();
122 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
125 ///////////////////////////////////////////////////////////////////////////////////////////////////
127 static void UtcDaliControlCopyAndAssignment()
129 ToolkitTestApplication application;
131 DummyControl control = DummyControl::New();
132 Control emptyControl;
134 Control controlCopy( control );
135 DALI_TEST_CHECK( control == controlCopy );
137 Control emptyControlCopy( emptyControl );
138 DALI_TEST_CHECK( emptyControl == emptyControlCopy );
140 Control controlEquals;
141 controlEquals = control;
142 DALI_TEST_CHECK( control == controlEquals );
144 Control emptyControlEquals;
145 emptyControlEquals = emptyControl;
146 DALI_TEST_CHECK( emptyControl == emptyControlEquals );
150 DALI_TEST_CHECK( control == controlCopy );
153 static void UtcDaliControlDownCast()
155 ToolkitTestApplication application;
157 DummyControl control;
159 DALI_TEST_CHECK( !Control::DownCast( control ) );
161 control = DummyControl::New();
163 DALI_TEST_CHECK( Control::DownCast( control ) );
167 DALI_TEST_CHECK( !Control::DownCast( actor ) );
169 actor = Actor::New();
171 DALI_TEST_CHECK( !Control::DownCast( actor ) );
174 static void UtcDaliControlDownCastTemplate()
176 ToolkitTestApplication application;
178 DummyControl control;
180 DALI_TEST_CHECK( !DummyControl::DownCast( control ));
182 control = DummyControl::New();
184 DALI_TEST_CHECK( DummyControl::DownCast( control ) );
188 DALI_TEST_CHECK( !DummyControl::DownCast( actor ) );
190 actor = Actor::New();
192 DALI_TEST_CHECK( !DummyControl::DownCast( actor ) );
195 static void UtcDaliControlKeyInputFocus()
197 ToolkitTestApplication application;
198 Stage stage = Stage::GetCurrent();
200 DummyControl control;
202 PushButton pushButton1 = PushButton::New();
203 stage.Add( pushButton1 );
205 pushButton1.SetKeyInputFocus();
206 DALI_TEST_CHECK( pushButton1.HasKeyInputFocus() );
208 pushButton1.ClearKeyInputFocus();
209 DALI_TEST_CHECK( !pushButton1.HasKeyInputFocus() );
212 static void UtcDaliControlGetImplementation()
214 ToolkitTestApplication application;
216 DummyControl control;
222 ControlImpl& controlImpl = control.GetImplementation();
223 (void)controlImpl; // Avoid unused warning
224 tet_result(TET_FAIL);
226 catch (DaliException &exception)
228 tet_result(TET_PASS);
236 const DummyControl constControl(control);
237 const ControlImpl& controlImpl = constControl.GetImplementation();
238 (void)controlImpl; // Avoid unused warning
239 tet_result(TET_FAIL);
241 catch (DaliException &exception)
243 tet_result(TET_PASS);
247 control = DummyControl::New();
253 ControlImpl& controlImpl = control.GetImplementation();
254 (void)controlImpl; // Avoid unused warning
255 tet_result(TET_PASS);
257 catch (DaliException &exception)
259 tet_result(TET_FAIL);
267 const DummyControl constControl(control);
268 const ControlImpl& controlImpl = constControl.GetImplementation();
269 (void)controlImpl; // Avoid unused warning
270 tet_result(TET_PASS);
272 catch (DaliException &exception)
274 tet_result(TET_FAIL);
279 static void UtcDaliControlSignalConnectDisconnect()
281 ToolkitTestApplication application;
284 DummyControl dummy = DummyControlImpl::New();
286 Actor actor = Actor::New();
287 DALI_TEST_EQUALS( actor.SetSizeSignal().GetConnectionCount(), 0u, TEST_LOCATION );
288 actor.SetSizeSignal().Connect( &dummy, &DummyControl::CustomSlot1 );
289 DALI_TEST_EQUALS( actor.SetSizeSignal().GetConnectionCount(), 1u, TEST_LOCATION );
290 DALI_TEST_EQUALS( dummy.mCustomSlot1Called, false, TEST_LOCATION );
291 DALI_TEST_EQUALS( dummy.mCustomSlot1Value, Vector3::ZERO, TEST_LOCATION );
293 const Vector3 newSize( 10, 10, 0 );
294 actor.SetSize( newSize );
295 DALI_TEST_EQUALS( dummy.mCustomSlot1Called, true, TEST_LOCATION );
296 DALI_TEST_EQUALS( dummy.mCustomSlot1Value, newSize, TEST_LOCATION );
298 dummy.mCustomSlot1Called = false;
299 actor.SetSizeSignal().Disconnect( &dummy, &DummyControl::CustomSlot1 );
300 DALI_TEST_EQUALS( actor.SetSizeSignal().GetConnectionCount(), 0u, TEST_LOCATION );
301 const Vector3 ignoredSize( 20, 20, 0 );
302 actor.SetSize( ignoredSize );
303 DALI_TEST_EQUALS( dummy.mCustomSlot1Called, false, TEST_LOCATION );
304 DALI_TEST_EQUALS( dummy.mCustomSlot1Value, newSize/*not ignoredSize*/, TEST_LOCATION );
308 static void UtcDaliControlSignalAutomaticDisconnect()
310 ToolkitTestApplication application;
312 Actor actor = Actor::New();
315 DummyControl dummy = DummyControlImpl::New();
317 actor.SetSizeSignal().Connect( &dummy, &DummyControl::CustomSlot1 );
318 DALI_TEST_EQUALS( actor.SetSizeSignal().GetConnectionCount(), 1u, TEST_LOCATION );
319 DALI_TEST_EQUALS( dummy.mCustomSlot1Called, false, TEST_LOCATION );
320 DALI_TEST_EQUALS( dummy.mCustomSlot1Value, Vector3::ZERO, TEST_LOCATION );
322 const Vector3 newSize( 10, 10, 0 );
323 actor.SetSize( newSize );
324 DALI_TEST_EQUALS( dummy.mCustomSlot1Called, true, TEST_LOCATION );
325 DALI_TEST_EQUALS( dummy.mCustomSlot1Value, newSize, TEST_LOCATION );
327 // dummyControl automatically disconnects
329 DALI_TEST_EQUALS( actor.SetSizeSignal().GetConnectionCount(), 0u, TEST_LOCATION );
331 const Vector3 ignoredSize( 20, 20, 0 );
332 actor.SetSize( ignoredSize );
335 static void UtcDaliControlTestParameters()
337 ToolkitTestApplication application;
338 DummyControl test = DummyControl::New();
340 Vector3 maxSize = test.GetNaturalSize();
341 Vector3 minSize = maxSize / 2.0f;
343 Toolkit::Control::SizePolicy widthPolicy( Control::Fixed );
344 Toolkit::Control::SizePolicy heightPolicy( Control::Fixed );
345 test.SetSizePolicy( widthPolicy, heightPolicy );
346 test.GetSizePolicy( widthPolicy, heightPolicy );
348 DALI_TEST_CHECK( widthPolicy == Control::Fixed && heightPolicy == Control::Fixed );
350 test.SetSize( 0.7f, 0.7f, 0.7f );
351 float width = 640.0f;
352 float height = test.GetHeightForWidth( width );
353 DALI_TEST_CHECK( test.GetWidthForHeight( height ) == width );
355 test.SetMinimumSize( minSize );
356 DALI_TEST_CHECK( test.GetMinimumSize() == minSize );
358 test.SetMaximumSize( maxSize );
359 DALI_TEST_CHECK( test.GetMaximumSize() == maxSize );
361 test.KeyEventSignal();
362 DummyControl test2 = DummyControl::New();
363 dynamic_cast< ConnectionTrackerInterface& >( test2 ).GetConnectionCount();
365 // Provide coverage for pointer destructor
366 Control* testControlPtr = new Control;
367 DALI_TEST_CHECK( testControlPtr );
368 delete testControlPtr;