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.
22 #include <dali/public-api/dali-core.h>
23 #include <dali-toolkit/dali-toolkit.h>
25 #include <dali-toolkit-test-suite-utils.h>
27 #include "dummy-control.h"
30 using namespace Dali::Toolkit;
32 static void Startup();
33 static void Cleanup();
36 void (*tet_startup)() = Startup;
37 void (*tet_cleanup)() = Cleanup;
41 POSITIVE_TC_IDX = 0x01,
45 #define MAX_NUMBER_OF_TESTS 10000
47 struct tet_testlist tet_testlist[MAX_NUMBER_OF_TESTS];
50 // Add test functionality for all APIs in the class (Positive and Negative)
51 TEST_FUNCTION( UtcDaliControlConstructor, POSITIVE_TC_IDX );
52 TEST_FUNCTION( UtcDaliControlNew, POSITIVE_TC_IDX );
53 TEST_FUNCTION( UtcDaliControlRegister, POSITIVE_TC_IDX );
54 TEST_FUNCTION( UtcDaliControlCopyAndAssignment, POSITIVE_TC_IDX );
55 TEST_FUNCTION( UtcDaliControlDownCast, POSITIVE_TC_IDX );
56 TEST_FUNCTION( UtcDaliControlDownCastTemplate, POSITIVE_TC_IDX );
57 TEST_FUNCTION( UtcDaliControlKeyInputFocus, POSITIVE_TC_IDX );
58 TEST_FUNCTION( UtcDaliControlGetImplementation, POSITIVE_TC_IDX );
59 TEST_FUNCTION( UtcDaliControlSignalConnectDisconnect, POSITIVE_TC_IDX );
60 TEST_FUNCTION( UtcDaliControlSignalAutomaticDisconnect, POSITIVE_TC_IDX );
61 TEST_FUNCTION( UtcDaliControlTestParameters, POSITIVE_TC_IDX );
63 // Called only once before first test is run.
68 // Called only once after last test is run
73 static void UtcDaliControlConstructor()
75 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
79 DALI_TEST_CHECK( !Control::DownCast(dummy) );
81 dummy = DummyControl::New();
83 DALI_TEST_CHECK( Control::DownCast(dummy) );
86 static void UtcDaliControlNew()
88 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
92 DALI_TEST_CHECK( !Control::DownCast(control) );
94 control = Control::New();
96 DALI_TEST_CHECK( Control::DownCast(control) );
99 ///////////////////////////////////////////////////////////////////////////////////////////////////
101 static bool gObjectCreatedCallBackCalled;
103 static void TestCallback(BaseHandle handle)
105 gObjectCreatedCallBackCalled = true;
108 static void UtcDaliControlRegister()
110 ToolkitTestApplication application;
112 // Ensure the object is registered after creation
113 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
114 DALI_TEST_CHECK( registry );
116 gObjectCreatedCallBackCalled = false;
117 registry.ObjectCreatedSignal().Connect( &TestCallback );
119 Alignment alignment = Alignment::New();
121 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
124 ///////////////////////////////////////////////////////////////////////////////////////////////////
126 static void UtcDaliControlCopyAndAssignment()
128 ToolkitTestApplication application;
130 DummyControl control = DummyControl::New();
131 Control emptyControl;
133 Control controlCopy( control );
134 DALI_TEST_CHECK( control == controlCopy );
136 Control emptyControlCopy( emptyControl );
137 DALI_TEST_CHECK( emptyControl == emptyControlCopy );
139 Control controlEquals;
140 controlEquals = control;
141 DALI_TEST_CHECK( control == controlEquals );
143 Control emptyControlEquals;
144 emptyControlEquals = emptyControl;
145 DALI_TEST_CHECK( emptyControl == emptyControlEquals );
149 DALI_TEST_CHECK( control == controlCopy );
152 static void UtcDaliControlDownCast()
154 ToolkitTestApplication application;
156 DummyControl control;
158 DALI_TEST_CHECK( !Control::DownCast( control ) );
160 control = DummyControl::New();
162 DALI_TEST_CHECK( Control::DownCast( control ) );
166 DALI_TEST_CHECK( !Control::DownCast( actor ) );
168 actor = Actor::New();
170 DALI_TEST_CHECK( !Control::DownCast( actor ) );
173 static void UtcDaliControlDownCastTemplate()
175 ToolkitTestApplication application;
177 DummyControl control;
179 DALI_TEST_CHECK( !DummyControl::DownCast( control ));
181 control = DummyControl::New();
183 DALI_TEST_CHECK( DummyControl::DownCast( control ) );
187 DALI_TEST_CHECK( !DummyControl::DownCast( actor ) );
189 actor = Actor::New();
191 DALI_TEST_CHECK( !DummyControl::DownCast( actor ) );
194 static void UtcDaliControlKeyInputFocus()
196 ToolkitTestApplication application;
197 Stage stage = Stage::GetCurrent();
199 DummyControl control;
201 PushButton pushButton1 = PushButton::New();
202 stage.Add( pushButton1 );
204 pushButton1.SetKeyInputFocus();
205 DALI_TEST_CHECK( pushButton1.HasKeyInputFocus() );
207 pushButton1.ClearKeyInputFocus();
208 DALI_TEST_CHECK( !pushButton1.HasKeyInputFocus() );
211 static void UtcDaliControlGetImplementation()
213 ToolkitTestApplication application;
215 DummyControl control;
221 ControlImpl& controlImpl = control.GetImplementation();
222 (void)controlImpl; // Avoid unused warning
223 tet_result(TET_FAIL);
225 catch (DaliException &exception)
227 tet_result(TET_PASS);
235 const DummyControl constControl(control);
236 const ControlImpl& controlImpl = constControl.GetImplementation();
237 (void)controlImpl; // Avoid unused warning
238 tet_result(TET_FAIL);
240 catch (DaliException &exception)
242 tet_result(TET_PASS);
246 control = DummyControl::New();
252 ControlImpl& controlImpl = control.GetImplementation();
253 (void)controlImpl; // Avoid unused warning
254 tet_result(TET_PASS);
256 catch (DaliException &exception)
258 tet_result(TET_FAIL);
266 const DummyControl constControl(control);
267 const ControlImpl& controlImpl = constControl.GetImplementation();
268 (void)controlImpl; // Avoid unused warning
269 tet_result(TET_PASS);
271 catch (DaliException &exception)
273 tet_result(TET_FAIL);
278 static void UtcDaliControlSignalConnectDisconnect()
280 ToolkitTestApplication application;
283 DummyControl dummy = DummyControlImpl::New();
285 Actor actor = Actor::New();
286 DALI_TEST_EQUALS( actor.SetSizeSignal().GetConnectionCount(), 0u, TEST_LOCATION );
287 actor.SetSizeSignal().Connect( &dummy, &DummyControl::CustomSlot1 );
288 DALI_TEST_EQUALS( actor.SetSizeSignal().GetConnectionCount(), 1u, TEST_LOCATION );
289 DALI_TEST_EQUALS( dummy.mCustomSlot1Called, false, TEST_LOCATION );
290 DALI_TEST_EQUALS( dummy.mCustomSlot1Value, Vector3::ZERO, TEST_LOCATION );
292 const Vector3 newSize( 10, 10, 0 );
293 actor.SetSize( newSize );
294 DALI_TEST_EQUALS( dummy.mCustomSlot1Called, true, TEST_LOCATION );
295 DALI_TEST_EQUALS( dummy.mCustomSlot1Value, newSize, TEST_LOCATION );
297 dummy.mCustomSlot1Called = false;
298 actor.SetSizeSignal().Disconnect( &dummy, &DummyControl::CustomSlot1 );
299 DALI_TEST_EQUALS( actor.SetSizeSignal().GetConnectionCount(), 0u, TEST_LOCATION );
300 const Vector3 ignoredSize( 20, 20, 0 );
301 actor.SetSize( ignoredSize );
302 DALI_TEST_EQUALS( dummy.mCustomSlot1Called, false, TEST_LOCATION );
303 DALI_TEST_EQUALS( dummy.mCustomSlot1Value, newSize/*not ignoredSize*/, TEST_LOCATION );
307 static void UtcDaliControlSignalAutomaticDisconnect()
309 ToolkitTestApplication application;
311 Actor actor = Actor::New();
314 DummyControl dummy = DummyControlImpl::New();
316 actor.SetSizeSignal().Connect( &dummy, &DummyControl::CustomSlot1 );
317 DALI_TEST_EQUALS( actor.SetSizeSignal().GetConnectionCount(), 1u, TEST_LOCATION );
318 DALI_TEST_EQUALS( dummy.mCustomSlot1Called, false, TEST_LOCATION );
319 DALI_TEST_EQUALS( dummy.mCustomSlot1Value, Vector3::ZERO, TEST_LOCATION );
321 const Vector3 newSize( 10, 10, 0 );
322 actor.SetSize( newSize );
323 DALI_TEST_EQUALS( dummy.mCustomSlot1Called, true, TEST_LOCATION );
324 DALI_TEST_EQUALS( dummy.mCustomSlot1Value, newSize, TEST_LOCATION );
326 // dummyControl automatically disconnects
328 DALI_TEST_EQUALS( actor.SetSizeSignal().GetConnectionCount(), 0u, TEST_LOCATION );
330 const Vector3 ignoredSize( 20, 20, 0 );
331 actor.SetSize( ignoredSize );
334 static void UtcDaliControlTestParameters()
336 ToolkitTestApplication application;
337 DummyControl test = DummyControl::New();
339 Vector3 maxSize = test.GetNaturalSize();
340 Vector3 minSize = maxSize / 2.0f;
342 Toolkit::Control::SizePolicy widthPolicy( Control::Fixed );
343 Toolkit::Control::SizePolicy heightPolicy( Control::Fixed );
344 test.SetSizePolicy( widthPolicy, heightPolicy );
345 test.GetSizePolicy( widthPolicy, heightPolicy );
347 DALI_TEST_CHECK( widthPolicy == Control::Fixed && heightPolicy == Control::Fixed );
349 test.SetSize( 0.7f, 0.7f, 0.7f );
350 float width = 640.0f;
351 float height = test.GetHeightForWidth( width );
352 DALI_TEST_CHECK( test.GetWidthForHeight( height ) == width );
354 test.SetMinimumSize( minSize );
355 DALI_TEST_CHECK( test.GetMinimumSize() == minSize );
357 test.SetMaximumSize( maxSize );
358 DALI_TEST_CHECK( test.GetMaximumSize() == maxSize );
360 test.KeyEventSignal();
361 DummyControl test2 = DummyControl::New();
362 dynamic_cast< ConnectionTrackerInterface& >( test2 ).GetConnectionCount();
364 // Provide coverage for pointer destructor
365 Control* testControlPtr = new Control;
366 DALI_TEST_CHECK( testControlPtr );
367 delete testControlPtr;