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.
21 // Need to override adaptor classes for toolkit test harness, so include
22 // test harness headers before dali headers.
23 #include <dali-toolkit-test-suite-utils.h>
26 #include <dali-toolkit/dali-toolkit.h>
27 #include "dummy-control.h"
30 using namespace Dali::Toolkit;
32 void utc_dali_toolkit_control_startup(void)
34 test_return_value = TET_UNDEF;
37 void utc_dali_toolkit_control_cleanup(void)
39 test_return_value = TET_PASS;
42 ///////////////////////////////////////////////////////////////////////////////////////////////////
47 static bool gObjectCreatedCallBackCalled;
49 static void TestCallback(BaseHandle handle)
51 gObjectCreatedCallBackCalled = true;
56 ///////////////////////////////////////////////////////////////////////////////////////////////////
59 int UtcDaliControlConstructor(void)
61 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
65 DALI_TEST_CHECK( !Control::DownCast(dummy) );
67 dummy = DummyControl::New();
69 DALI_TEST_CHECK( Control::DownCast(dummy) );
73 int UtcDaliControlNew(void)
75 ToolkitTestApplication application; // Exceptions require ToolkitTestApplication
79 DALI_TEST_CHECK( !Control::DownCast(control) );
81 control = Control::New();
83 DALI_TEST_CHECK( Control::DownCast(control) );
88 int UtcDaliControlRegister(void)
90 ToolkitTestApplication application;
92 // Ensure the object is registered after creation
93 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
94 DALI_TEST_CHECK( registry );
96 gObjectCreatedCallBackCalled = false;
97 registry.ObjectCreatedSignal().Connect( &TestCallback );
99 Alignment alignment = Alignment::New();
101 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
105 int UtcDaliControlCopyAndAssignment(void)
107 ToolkitTestApplication application;
109 DummyControl control = DummyControl::New();
110 Control emptyControl;
112 Control controlCopy( control );
113 DALI_TEST_CHECK( control == controlCopy );
115 Control emptyControlCopy( emptyControl );
116 DALI_TEST_CHECK( emptyControl == emptyControlCopy );
118 Control controlEquals;
119 controlEquals = control;
120 DALI_TEST_CHECK( control == controlEquals );
122 Control emptyControlEquals;
123 emptyControlEquals = emptyControl;
124 DALI_TEST_CHECK( emptyControl == emptyControlEquals );
128 DALI_TEST_CHECK( control == controlCopy );
132 int UtcDaliControlDownCast(void)
134 ToolkitTestApplication application;
136 DummyControl control;
138 DALI_TEST_CHECK( !Control::DownCast( control ) );
140 control = DummyControl::New();
142 DALI_TEST_CHECK( Control::DownCast( control ) );
146 DALI_TEST_CHECK( !Control::DownCast( actor ) );
148 actor = Actor::New();
150 DALI_TEST_CHECK( !Control::DownCast( actor ) );
154 int UtcDaliControlDownCastTemplate(void)
156 ToolkitTestApplication application;
158 DummyControl control;
160 DALI_TEST_CHECK( !DummyControl::DownCast( control ));
162 control = DummyControl::New();
164 DALI_TEST_CHECK( DummyControl::DownCast( control ) );
168 DALI_TEST_CHECK( !DummyControl::DownCast( actor ) );
170 actor = Actor::New();
172 DALI_TEST_CHECK( !DummyControl::DownCast( actor ) );
176 int UtcDaliControlKeyInputFocus(void)
178 ToolkitTestApplication application;
179 Stage stage = Stage::GetCurrent();
181 DummyControl control;
183 PushButton pushButton1 = PushButton::New();
184 stage.Add( pushButton1 );
186 pushButton1.SetKeyInputFocus();
187 DALI_TEST_CHECK( pushButton1.HasKeyInputFocus() );
189 pushButton1.ClearKeyInputFocus();
190 DALI_TEST_CHECK( !pushButton1.HasKeyInputFocus() );
194 int UtcDaliControlGetImplementation(void)
196 ToolkitTestApplication application;
198 DummyControl control;
204 Toolkit::Internal::Control& controlImpl = control.GetImplementation();
205 (void)controlImpl; // Avoid unused warning
206 tet_result(TET_FAIL);
208 catch (DaliException &exception)
210 tet_result(TET_PASS);
218 const DummyControl constControl(control);
219 const Toolkit::Internal::Control& controlImpl = constControl.GetImplementation();
220 (void)controlImpl; // Avoid unused warning
221 tet_result(TET_FAIL);
223 catch (DaliException &exception)
225 tet_result(TET_PASS);
229 control = DummyControl::New();
235 Toolkit::Internal::Control& controlImpl = control.GetImplementation();
236 (void)controlImpl; // Avoid unused warning
237 tet_result(TET_PASS);
239 catch (DaliException &exception)
241 tet_result(TET_FAIL);
249 const DummyControl constControl(control);
250 const Toolkit::Internal::Control& controlImpl = constControl.GetImplementation();
251 (void)controlImpl; // Avoid unused warning
252 tet_result(TET_PASS);
254 catch (DaliException &exception)
256 tet_result(TET_FAIL);
262 int UtcDaliControlSignalConnectDisconnect(void)
264 ToolkitTestApplication application;
267 DummyControl dummy = DummyControlImpl::New();
269 Actor actor = Actor::New();
270 DALI_TEST_EQUALS( actor.SetSizeSignal().GetConnectionCount(), 0u, TEST_LOCATION );
271 Toolkit::Internal::Control& control = dummy.GetImplementation();
272 DummyControlImpl* dummyImpl = dynamic_cast<DummyControlImpl*>(&control);
273 DALI_TEST_CHECK( dummyImpl );
275 actor.SetSizeSignal().Connect( dummyImpl, &DummyControlImpl::CustomSlot1 );
276 DALI_TEST_EQUALS( actor.SetSizeSignal().GetConnectionCount(), 1u, TEST_LOCATION );
277 DALI_TEST_EQUALS( dummyImpl->mCustomSlot1Called, false, TEST_LOCATION );
278 DALI_TEST_EQUALS( dummyImpl->mCustomSlot1Value, Vector3::ZERO, TEST_LOCATION );
280 const Vector3 newSize( 10, 10, 0 );
281 actor.SetSize( newSize );
282 DALI_TEST_EQUALS( dummyImpl->mCustomSlot1Called, true, TEST_LOCATION );
283 DALI_TEST_EQUALS( dummyImpl->mCustomSlot1Value, newSize, TEST_LOCATION );
285 dummyImpl->mCustomSlot1Called = false;
286 actor.SetSizeSignal().Disconnect( dummyImpl, &DummyControlImpl::CustomSlot1 );
287 DALI_TEST_EQUALS( actor.SetSizeSignal().GetConnectionCount(), 0u, TEST_LOCATION );
288 const Vector3 ignoredSize( 20, 20, 0 );
289 actor.SetSize( ignoredSize );
290 DALI_TEST_EQUALS( dummyImpl->mCustomSlot1Called, false, TEST_LOCATION );
291 DALI_TEST_EQUALS( dummyImpl->mCustomSlot1Value, newSize/*not ignoredSize*/, TEST_LOCATION );
296 int UtcDaliControlSignalAutomaticDisconnect(void)
298 ToolkitTestApplication application;
300 Actor actor = Actor::New();
303 DummyControl dummy = DummyControlImpl::New();
304 Toolkit::Internal::Control& control = dummy.GetImplementation();
305 DummyControlImpl* dummyImpl = dynamic_cast<DummyControlImpl*>(&control);
306 DALI_TEST_CHECK( dummyImpl );
308 actor.SetSizeSignal().Connect( dummyImpl, &DummyControlImpl::CustomSlot1 );
309 DALI_TEST_EQUALS( actor.SetSizeSignal().GetConnectionCount(), 1u, TEST_LOCATION );
310 DALI_TEST_EQUALS( dummyImpl->mCustomSlot1Called, false, TEST_LOCATION );
311 DALI_TEST_EQUALS( dummyImpl->mCustomSlot1Value, Vector3::ZERO, TEST_LOCATION );
313 const Vector3 newSize( 10, 10, 0 );
314 actor.SetSize( newSize );
315 DALI_TEST_EQUALS( dummyImpl->mCustomSlot1Called, true, TEST_LOCATION );
316 DALI_TEST_EQUALS( dummyImpl->mCustomSlot1Value, newSize, TEST_LOCATION );
318 // dummyControl automatically disconnects
320 DALI_TEST_EQUALS( actor.SetSizeSignal().GetConnectionCount(), 0u, TEST_LOCATION );
322 const Vector3 ignoredSize( 20, 20, 0 );
323 actor.SetSize( ignoredSize );
327 int UtcDaliControlTestParameters(void)
329 ToolkitTestApplication application;
330 DummyControl test = DummyControl::New();
332 Vector3 maxSize = test.GetNaturalSize();
333 Vector3 minSize = maxSize / 2.0f;
335 Toolkit::Control::SizePolicy widthPolicy( Control::Fixed );
336 Toolkit::Control::SizePolicy heightPolicy( Control::Fixed );
337 test.SetSizePolicy( widthPolicy, heightPolicy );
338 test.GetSizePolicy( widthPolicy, heightPolicy );
340 DALI_TEST_CHECK( widthPolicy == Control::Fixed && heightPolicy == Control::Fixed );
342 test.SetSize( 0.7f, 0.7f, 0.7f );
343 float width = 640.0f;
344 float height = test.GetHeightForWidth( width );
345 DALI_TEST_CHECK( test.GetWidthForHeight( height ) == width );
347 test.SetMinimumSize( minSize );
348 DALI_TEST_CHECK( test.GetMinimumSize() == minSize );
350 test.SetMaximumSize( maxSize );
351 DALI_TEST_CHECK( test.GetMaximumSize() == maxSize );
353 test.KeyEventSignal();
355 // Provide coverage for pointer destructor
356 Control* testControlPtr = new Control;
357 DALI_TEST_CHECK( testControlPtr );
358 delete testControlPtr;
362 int UtcDaliControlBackgroundColor(void)
364 ToolkitTestApplication application;
365 Control control = Control::New();
367 DALI_TEST_CHECK( !control.GetBackgroundActor() );
368 DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::TRANSPARENT, TEST_LOCATION );
370 control.SetBackgroundColor( Color::RED );
371 DALI_TEST_CHECK( control.GetBackgroundActor() );
372 DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::RED, TEST_LOCATION );
377 int UtcDaliControlBackgroundImage(void)
379 ToolkitTestApplication application;
380 Control control = Control::New();
382 DALI_TEST_CHECK( !control.GetBackgroundActor() );
383 DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::TRANSPARENT, TEST_LOCATION );
385 Image image = Image::New("TestImage");
386 control.SetBackground( image );
387 DALI_TEST_CHECK( control.GetBackgroundActor() );
388 DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::WHITE, TEST_LOCATION );
390 control.SetBackgroundColor( Color::GREEN );
391 DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::GREEN, TEST_LOCATION );
393 control.ClearBackground();
394 DALI_TEST_CHECK( !control.GetBackgroundActor() );
395 DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::TRANSPARENT, TEST_LOCATION );
397 control.SetBackgroundColor( Color::YELLOW );
398 control.SetBackground( image );
399 DALI_TEST_CHECK( control.GetBackgroundActor() );
400 DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::YELLOW, TEST_LOCATION );
405 int UtcDaliControlBackgroundProperties(void)
407 ToolkitTestApplication application;
408 Control control = Control::New();
410 DALI_TEST_CHECK( !control.GetBackgroundActor() );
411 DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::TRANSPARENT, TEST_LOCATION );
412 DALI_TEST_EQUALS( control.GetProperty( Control::PROPERTY_BACKGROUND_COLOR ).Get< Vector4 >(), Color::TRANSPARENT, TEST_LOCATION );
413 DALI_TEST_CHECK( control.GetProperty( Control::PROPERTY_BACKGROUND ).Get< Property::Map >().empty() );
415 control.SetProperty( Control::PROPERTY_BACKGROUND_COLOR, Color::RED );
416 DALI_TEST_CHECK( control.GetBackgroundActor() );
417 DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::RED, TEST_LOCATION );
418 DALI_TEST_EQUALS( control.GetProperty( Control::PROPERTY_BACKGROUND_COLOR ).Get< Vector4 >(), Color::RED, TEST_LOCATION );
420 Property::Map imageMap;
421 imageMap.push_back( Property::StringValuePair( "filename", "TestImage" ) );
423 map.push_back( Property::StringValuePair( "image", imageMap ) );
424 control.SetProperty( Control::PROPERTY_BACKGROUND, map );
425 DALI_TEST_CHECK( control.GetBackgroundActor() );
426 DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::RED, TEST_LOCATION );
427 DALI_TEST_EQUALS( control.GetProperty( Control::PROPERTY_BACKGROUND_COLOR ).Get< Vector4 >(), Color::RED, TEST_LOCATION );
429 Property::Value propValue = control.GetProperty( Control::PROPERTY_BACKGROUND );
430 DALI_TEST_CHECK( propValue.HasKey( "image" ) );
431 DALI_TEST_CHECK( propValue.GetValue( "image" ).HasKey( "filename" ) );
432 DALI_TEST_CHECK( propValue.GetValue( "image" ).GetValue( "filename" ).Get< std::string>() == "TestImage" );
434 Property::Map emptyMap;
435 control.SetProperty( Control::PROPERTY_BACKGROUND, emptyMap );
436 DALI_TEST_CHECK( !control.GetBackgroundActor() );
437 DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::TRANSPARENT, TEST_LOCATION );
438 DALI_TEST_EQUALS( control.GetProperty( Control::PROPERTY_BACKGROUND_COLOR ).Get< Vector4 >(), Color::TRANSPARENT, TEST_LOCATION );
439 DALI_TEST_CHECK( control.GetProperty( Control::PROPERTY_BACKGROUND ).Get< Property::Map >().empty() );
444 int UtcDaliControlSizePolicyProperties(void)
446 ToolkitTestApplication application;
448 Control control = Control::New();
450 Control::SizePolicy widthPolicy( Control::Fixed );
451 Control::SizePolicy heightPolicy( Control::Fixed );
453 control.GetSizePolicy( widthPolicy, heightPolicy );
454 DALI_TEST_EQUALS( "FIXED", control.GetProperty( Control::PROPERTY_WIDTH_POLICY ).Get< std::string >(), TEST_LOCATION );
455 DALI_TEST_EQUALS( "FIXED", control.GetProperty( Control::PROPERTY_HEIGHT_POLICY ).Get< std::string >(), TEST_LOCATION );
457 control.SetSizePolicy( Control::Flexible, Control::Range );
458 DALI_TEST_EQUALS( "FLEXIBLE", control.GetProperty( Control::PROPERTY_WIDTH_POLICY ).Get< std::string >(), TEST_LOCATION );
459 DALI_TEST_EQUALS( "RANGE", control.GetProperty( Control::PROPERTY_HEIGHT_POLICY ).Get< std::string >(), TEST_LOCATION );
461 control.SetProperty( Control::PROPERTY_WIDTH_POLICY, "MAXIMUM" );
462 control.SetProperty( Control::PROPERTY_HEIGHT_POLICY, "MINIMUM" );
463 control.GetSizePolicy( widthPolicy, heightPolicy );
464 DALI_TEST_EQUALS( Control::Maximum, widthPolicy, TEST_LOCATION );
465 DALI_TEST_EQUALS( Control::Minimum, heightPolicy, TEST_LOCATION );
470 int UtcDaliControlSizeProperties(void)
472 ToolkitTestApplication application;
474 Control control = Control::New();
476 DALI_TEST_EQUALS( control.GetMinimumSize(), control.GetProperty( Control::PROPERTY_MINIMUM_SIZE ).Get< Vector3 >(), TEST_LOCATION );
477 DALI_TEST_EQUALS( control.GetMaximumSize(), control.GetProperty( Control::PROPERTY_MAXIMUM_SIZE ).Get< Vector3 >(), TEST_LOCATION );
479 control.SetMinimumSize( Vector3( 100.0f, 200.0f, 300.0f ) );
480 DALI_TEST_EQUALS( Vector3( 100.0f, 200.0f, 300.0f ), control.GetProperty( Control::PROPERTY_MINIMUM_SIZE ).Get< Vector3 >(), TEST_LOCATION );
483 control.SetMaximumSize( Vector3( 200.0f, 250.0f, 800.0f ) );
484 DALI_TEST_EQUALS( Vector3( 200.0f, 250.0f, 800.0f ), control.GetProperty( Control::PROPERTY_MAXIMUM_SIZE ).Get< Vector3 >(), TEST_LOCATION );
486 control.SetProperty( Control::PROPERTY_MINIMUM_SIZE, Vector3( 1.0f, 2.0f, 3.0f ) );
487 control.SetProperty( Control::PROPERTY_MAXIMUM_SIZE, Vector3( 10.0f, 20.0f, 30.0f ) );
488 DALI_TEST_EQUALS( control.GetMinimumSize(), Vector3( 1.0f, 2.0f, 3.0f ), TEST_LOCATION );
489 DALI_TEST_EQUALS( control.GetMaximumSize(), Vector3( 10.0f, 20.0f, 30.0f ), TEST_LOCATION );
494 int UtcDaliControlKeyProperties(void)
496 ToolkitTestApplication application;
498 Control control = Control::New();
499 Stage::GetCurrent().Add( control );
501 DALI_TEST_EQUALS( control.HasKeyInputFocus(), control.GetProperty( Control::PROPERTY_KEY_INPUT_FOCUS ).Get< bool >(), TEST_LOCATION );
503 control.SetKeyInputFocus();
504 DALI_TEST_EQUALS( true, control.GetProperty( Control::PROPERTY_KEY_INPUT_FOCUS ).Get< bool >(), TEST_LOCATION );
506 control.ClearKeyInputFocus();
507 DALI_TEST_EQUALS( false, control.GetProperty( Control::PROPERTY_KEY_INPUT_FOCUS ).Get< bool >(), TEST_LOCATION );
509 control.SetProperty( Control::PROPERTY_KEY_INPUT_FOCUS, true );
510 DALI_TEST_EQUALS( true, control.HasKeyInputFocus(), TEST_LOCATION );