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 #include <dali/public-api/dali-core.h>
22 #include <dali-test-suite-utils.h>
25 using namespace Dali::Scripting;
30 const StringEnum< int > COLOR_MODE_VALUES[] =
32 { "USE_OWN_COLOR", USE_OWN_COLOR },
33 { "USE_PARENT_COLOR", USE_PARENT_COLOR },
34 { "USE_OWN_MULTIPLY_PARENT_COLOR", USE_OWN_MULTIPLY_PARENT_COLOR },
35 { "USE_OWN_MULTIPLY_PARENT_ALPHA", USE_OWN_MULTIPLY_PARENT_ALPHA },
37 const unsigned int COLOR_MODE_VALUES_COUNT = sizeof( COLOR_MODE_VALUES ) / sizeof( COLOR_MODE_VALUES[0] );
39 const StringEnum< int > POSITION_INHERITANCE_MODE_VALUES[] =
41 { "INHERIT_PARENT_POSITION", INHERIT_PARENT_POSITION },
42 { "USE_PARENT_POSITION", USE_PARENT_POSITION },
43 { "USE_PARENT_POSITION_PLUS_LOCAL_POSITION", USE_PARENT_POSITION_PLUS_LOCAL_POSITION },
44 { "DONT_INHERIT_POSITION", DONT_INHERIT_POSITION },
46 const unsigned int POSITION_INHERITANCE_MODE_VALUES_COUNT = sizeof( POSITION_INHERITANCE_MODE_VALUES ) / sizeof( POSITION_INHERITANCE_MODE_VALUES[0] );
48 const StringEnum< int > DRAW_MODE_VALUES[] =
50 { "NORMAL", DrawMode::NORMAL },
51 { "OVERLAY", DrawMode::OVERLAY },
52 { "STENCIL", DrawMode::STENCIL },
54 const unsigned int DRAW_MODE_VALUES_COUNT = sizeof( DRAW_MODE_VALUES ) / sizeof( DRAW_MODE_VALUES[0] );
58 //////////////////////////////////////////////////////////////////////////////
59 // Helpers for string to enum comparisons for Image and ImageAttributes
60 //////////////////////////////////////////////////////////////////////////////
63 * Template to check enumerations of type T, with a class of type X
65 template< typename T, typename X >
67 Property::Map& map, // The map used to create instance of type X
68 const StringEnum< int >* values, // An array of string values
69 unsigned int num, // Number of items in the array
70 T ( X::*method )() const, // The member method of X to call to get the enum
71 X ( *creator ) ( const Property::Value& ) // The method which creates an instance of type X
74 Property::Map::iterator iter = map.end() - 1;
75 for ( unsigned int i = 0; i < num; ++i )
77 iter->second = values[i].string;
78 tet_printf("Checking: %s: %s\n", iter->first.c_str(), values[i].string );
79 X instance = creator( map );
80 DALI_TEST_EQUALS( values[i].value, ( instance.*method )(), TEST_LOCATION );
84 /// Helper method to create ImageAttributes using an Image
85 ImageAttributes NewImageAttributes( const Property::Value& map )
87 Image image = NewImage( map );
88 return image.GetAttributes();
91 //////////////////////////////////////////////////////////////////////////////
92 // Helpers for string to enum comparisons for Actor to Property::Map
93 //////////////////////////////////////////////////////////////////////////////
96 * Template to check enumerations of type T
98 template< typename T >
100 const char * const keyName, // The name of the key to check
101 TestApplication& application, // Reference to the application class
102 const StringEnum< int >* values, // An array of string values
103 unsigned int num, // Number of items in the array
104 void ( Actor::*method )( T ) // The Actor member method to set the enumeration
107 for ( unsigned int i = 0; i < num; ++i )
109 tet_printf("Checking: %s: %s\n", keyName, values[i].string );
111 Actor actor = Actor::New();
112 (actor.*method)( ( T ) values[i].value );
114 Stage::GetCurrent().Add( actor );
115 application.SendNotification();
116 application.Render();
119 CreatePropertyMap( actor, map );
121 DALI_TEST_CHECK( !map.empty() );
122 Property::Value value( map );
123 DALI_TEST_CHECK( value.HasKey( keyName ) );
124 DALI_TEST_EQUALS( value.GetValue( keyName ).Get< std::string >(), values[i].string, TEST_LOCATION );
126 Stage::GetCurrent().Remove( actor );
130 //////////////////////////////////////////////////////////////////////////////
137 int UtcDaliScriptingGetColorMode(void)
139 TestApplication application;
141 for ( unsigned int i = 0; i < COLOR_MODE_VALUES_COUNT; ++i )
143 tet_printf( "Checking %s == %d\n", COLOR_MODE_VALUES[i].string, COLOR_MODE_VALUES[i].value );
144 DALI_TEST_EQUALS( COLOR_MODE_VALUES[i].value, GetColorMode( COLOR_MODE_VALUES[i].string ), TEST_LOCATION );
145 DALI_TEST_EQUALS( COLOR_MODE_VALUES[i].string, GetColorMode( (ColorMode) COLOR_MODE_VALUES[i].value ), TEST_LOCATION );
150 (void)GetColorMode("INVALID_ARG");
151 tet_result( TET_FAIL );
153 catch ( DaliException& e )
155 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
160 int UtcDaliScriptingGetPositionInheritanceMode(void)
162 TestApplication application;
164 for ( unsigned int i = 0; i < POSITION_INHERITANCE_MODE_VALUES_COUNT; ++i )
166 tet_printf( "Checking %s == %d\n", POSITION_INHERITANCE_MODE_VALUES[i].string, POSITION_INHERITANCE_MODE_VALUES[i].value );
167 DALI_TEST_EQUALS( POSITION_INHERITANCE_MODE_VALUES[i].value, GetPositionInheritanceMode( POSITION_INHERITANCE_MODE_VALUES[i].string ), TEST_LOCATION );
168 DALI_TEST_EQUALS( POSITION_INHERITANCE_MODE_VALUES[i].string, GetPositionInheritanceMode( (PositionInheritanceMode) POSITION_INHERITANCE_MODE_VALUES[i].value ), TEST_LOCATION );
173 (void)GetPositionInheritanceMode("INVALID_ARG");
174 tet_result( TET_FAIL );
176 catch ( DaliException& e )
178 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
184 int UtcDaliScriptingGetDrawMode(void)
186 TestApplication application;
188 for ( unsigned int i = 0; i < DRAW_MODE_VALUES_COUNT; ++i )
190 tet_printf( "Checking %s == %d\n", DRAW_MODE_VALUES[i].string, DRAW_MODE_VALUES[i].value );
191 DALI_TEST_EQUALS( DRAW_MODE_VALUES[i].value, GetDrawMode( DRAW_MODE_VALUES[i].string ), TEST_LOCATION );
192 DALI_TEST_EQUALS( DRAW_MODE_VALUES[i].string, GetDrawMode( (DrawMode::Type) DRAW_MODE_VALUES[i].value ), TEST_LOCATION );
197 (void)GetDrawMode("INVALID_ARG");
198 tet_result( TET_FAIL );
200 catch ( DaliException& e )
202 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
207 int UtcDaliScriptingGetAnchorConstant(void)
209 TestApplication application;
211 DALI_TEST_EQUALS( Dali::ParentOrigin::BACK_TOP_LEFT, GetAnchorConstant( "BACK_TOP_LEFT" ), TEST_LOCATION );
212 DALI_TEST_EQUALS( Dali::ParentOrigin::BACK_TOP_CENTER, GetAnchorConstant( "BACK_TOP_CENTER" ), TEST_LOCATION );
213 DALI_TEST_EQUALS( Dali::ParentOrigin::BACK_TOP_RIGHT, GetAnchorConstant( "BACK_TOP_RIGHT" ), TEST_LOCATION );
214 DALI_TEST_EQUALS( Dali::ParentOrigin::BACK_CENTER_LEFT, GetAnchorConstant( "BACK_CENTER_LEFT" ), TEST_LOCATION );
215 DALI_TEST_EQUALS( Dali::ParentOrigin::BACK_CENTER, GetAnchorConstant( "BACK_CENTER" ), TEST_LOCATION );
216 DALI_TEST_EQUALS( Dali::ParentOrigin::BACK_CENTER_RIGHT, GetAnchorConstant( "BACK_CENTER_RIGHT" ), TEST_LOCATION );
217 DALI_TEST_EQUALS( Dali::ParentOrigin::BACK_BOTTOM_LEFT, GetAnchorConstant( "BACK_BOTTOM_LEFT" ), TEST_LOCATION );
218 DALI_TEST_EQUALS( Dali::ParentOrigin::BACK_BOTTOM_CENTER, GetAnchorConstant( "BACK_BOTTOM_CENTER" ), TEST_LOCATION );
219 DALI_TEST_EQUALS( Dali::ParentOrigin::BACK_BOTTOM_RIGHT, GetAnchorConstant( "BACK_BOTTOM_RIGHT" ), TEST_LOCATION );
220 DALI_TEST_EQUALS( Dali::ParentOrigin::TOP_LEFT, GetAnchorConstant( "TOP_LEFT" ), TEST_LOCATION );
221 DALI_TEST_EQUALS( Dali::ParentOrigin::TOP_CENTER, GetAnchorConstant( "TOP_CENTER" ), TEST_LOCATION );
222 DALI_TEST_EQUALS( Dali::ParentOrigin::TOP_RIGHT, GetAnchorConstant( "TOP_RIGHT" ), TEST_LOCATION );
223 DALI_TEST_EQUALS( Dali::ParentOrigin::CENTER_LEFT, GetAnchorConstant( "CENTER_LEFT" ), TEST_LOCATION );
224 DALI_TEST_EQUALS( Dali::ParentOrigin::CENTER, GetAnchorConstant( "CENTER" ), TEST_LOCATION );
225 DALI_TEST_EQUALS( Dali::ParentOrigin::CENTER_RIGHT, GetAnchorConstant( "CENTER_RIGHT" ), TEST_LOCATION );
226 DALI_TEST_EQUALS( Dali::ParentOrigin::BOTTOM_LEFT, GetAnchorConstant( "BOTTOM_LEFT" ), TEST_LOCATION );
227 DALI_TEST_EQUALS( Dali::ParentOrigin::BOTTOM_CENTER, GetAnchorConstant( "BOTTOM_CENTER" ), TEST_LOCATION );
228 DALI_TEST_EQUALS( Dali::ParentOrigin::BOTTOM_RIGHT, GetAnchorConstant( "BOTTOM_RIGHT" ), TEST_LOCATION );
229 DALI_TEST_EQUALS( Dali::ParentOrigin::FRONT_TOP_LEFT, GetAnchorConstant( "FRONT_TOP_LEFT" ), TEST_LOCATION );
230 DALI_TEST_EQUALS( Dali::ParentOrigin::FRONT_TOP_CENTER, GetAnchorConstant( "FRONT_TOP_CENTER" ), TEST_LOCATION );
231 DALI_TEST_EQUALS( Dali::ParentOrigin::FRONT_TOP_RIGHT, GetAnchorConstant( "FRONT_TOP_RIGHT" ), TEST_LOCATION );
232 DALI_TEST_EQUALS( Dali::ParentOrigin::FRONT_CENTER_LEFT, GetAnchorConstant( "FRONT_CENTER_LEFT" ), TEST_LOCATION );
233 DALI_TEST_EQUALS( Dali::ParentOrigin::FRONT_CENTER, GetAnchorConstant( "FRONT_CENTER" ), TEST_LOCATION );
234 DALI_TEST_EQUALS( Dali::ParentOrigin::FRONT_CENTER_RIGHT, GetAnchorConstant( "FRONT_CENTER_RIGHT" ), TEST_LOCATION );
235 DALI_TEST_EQUALS( Dali::ParentOrigin::FRONT_BOTTOM_LEFT, GetAnchorConstant( "FRONT_BOTTOM_LEFT" ), TEST_LOCATION );
236 DALI_TEST_EQUALS( Dali::ParentOrigin::FRONT_BOTTOM_CENTER, GetAnchorConstant( "FRONT_BOTTOM_CENTER" ), TEST_LOCATION );
237 DALI_TEST_EQUALS( Dali::ParentOrigin::FRONT_BOTTOM_RIGHT, GetAnchorConstant( "FRONT_BOTTOM_RIGHT" ), TEST_LOCATION );
241 (void)GetAnchorConstant("INVALID_ARG");
242 tet_result( TET_FAIL );
244 catch ( DaliException& e )
246 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
251 int UtcDaliScriptingNewImageNegative(void)
253 TestApplication application;
259 map.push_back( Property::StringValuePair( "filename", Vector3::ZERO ) );
260 Image image = NewImage( map );
261 tet_result( TET_FAIL );
263 catch ( DaliException& e )
265 DALI_TEST_ASSERT( e, "map.GetValue(field).GetType()", TEST_LOCATION );
268 // Invalid load-policy
272 map.push_back( Property::StringValuePair( "load-policy", Vector3::ZERO ) );
273 Image image = NewImage( map );
274 tet_result( TET_FAIL );
276 catch ( DaliException& e )
278 DALI_TEST_ASSERT( e, "map.GetValue(field).GetType()", TEST_LOCATION );
284 map.push_back( Property::StringValuePair( "load-policy", "INVALID" ) );
285 Image image = NewImage( map );
286 tet_result( TET_FAIL );
288 catch ( DaliException& e )
290 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
294 // Invalid release-policy
298 map.push_back( Property::StringValuePair( "release-policy", Vector3::ZERO ) );
299 Image image = NewImage( map );
300 tet_result( TET_FAIL );
302 catch ( DaliException& e )
304 DALI_TEST_ASSERT( e, "map.GetValue(field).GetType()", TEST_LOCATION );
310 map.push_back( Property::StringValuePair( "release-policy", "INVALID" ) );
311 Image image = NewImage( map );
312 tet_result( TET_FAIL );
314 catch ( DaliException& e )
316 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
324 map.push_back( Property::StringValuePair( "width", "Invalid" ) );
325 map.push_back( Property::StringValuePair( "height", "Invalid" ) );
326 Image image = NewImage( map );
327 tet_result( TET_FAIL );
329 catch ( DaliException& e )
331 DALI_TEST_ASSERT( e, "value.GetType()", TEST_LOCATION );
338 map.push_back( Property::StringValuePair( "width", 10 ) );
339 map.push_back( Property::StringValuePair( "height", "Invalid" ) );
340 Image image = NewImage( map );
341 tet_result( TET_FAIL );
343 catch ( DaliException& e )
345 DALI_TEST_ASSERT( e, "value.GetType()", TEST_LOCATION );
348 // Invalid pixel-format
352 map.push_back( Property::StringValuePair( "pixel-format", Vector3::ZERO ) );
353 Image image = NewImage( map );
354 tet_result( TET_FAIL );
356 catch ( DaliException& e )
358 DALI_TEST_ASSERT( e, "map.GetValue(field).GetType()", TEST_LOCATION );
364 map.push_back( Property::StringValuePair( "pixel-format", "INVALID" ) );
365 Image image = NewImage( map );
366 tet_result( TET_FAIL );
368 catch ( DaliException& e )
370 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
374 // Invalid scaling-mode
378 map.push_back( Property::StringValuePair( "scaling-mode", Vector3::ZERO ) );
379 Image image = NewImage( map );
380 tet_result( TET_FAIL );
382 catch ( DaliException& e )
384 DALI_TEST_ASSERT( e, "map.GetValue(field).GetType()", TEST_LOCATION );
390 map.push_back( Property::StringValuePair( "scaling-mode", "INVALID" ) );
391 Image image = NewImage( map );
392 tet_result( TET_FAIL );
394 catch ( DaliException& e )
396 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
404 map.push_back( Property::StringValuePair( "type", Vector3::ZERO ) );
405 Image image = NewImage( map );
406 tet_result( TET_FAIL );
408 catch ( DaliException& e )
410 DALI_TEST_ASSERT( e, "map.GetValue(\"type\").GetType()", TEST_LOCATION );
416 map.push_back( Property::StringValuePair( "type", "INVALID" ) );
417 Image image = NewImage( map );
418 tet_result( TET_FAIL );
420 catch ( DaliException& e )
422 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
429 //////////////////////////////////////////////////////////////////////////////
431 int UtcDaliScriptingNewImage(void)
433 TestApplication application;
436 map.push_back( Property::StringValuePair( "filename", "TEST_FILE" ) );
440 Image image = NewImage( map );
441 DALI_TEST_EQUALS( "TEST_FILE", image.GetFilename(), TEST_LOCATION );
445 map.push_back( Property::StringValuePair( "load-policy", "" ) );
447 const StringEnum< int > values[] =
449 { "IMMEDIATE", Image::Immediate },
450 { "ON_DEMAND", Image::OnDemand }
452 TestEnumStrings< Image::LoadPolicy, Image >( map, values, ( sizeof( values ) / sizeof ( values[0] ) ), &Image::GetLoadPolicy, &NewImage );
456 map.push_back( Property::StringValuePair( "release-policy", "" ) );
458 const StringEnum< int > values[] =
460 { "UNUSED", Image::Unused },
461 { "NEVER", Image::Never }
463 TestEnumStrings< Image::ReleasePolicy, Image >( map, values, ( sizeof( values ) / sizeof ( values[0] ) ), &Image::GetReleasePolicy, &NewImage );
466 // float width and height
467 map.push_back( Property::StringValuePair( "width", (float) 10.0f ) );
468 map.push_back( Property::StringValuePair( "height", (float) 20.0f ) );
470 Image image = NewImage( map );
471 DALI_TEST_EQUALS( image.GetWidth(), 10.0f, TEST_LOCATION );
472 DALI_TEST_EQUALS( image.GetHeight(), 20.0f, TEST_LOCATION );
475 // int width and height
476 map.erase( map.end() - 2, map.end() );
477 map.push_back( Property::StringValuePair( "width", 50 ) );
478 map.push_back( Property::StringValuePair( "height", 70 ) );
480 Image image = NewImage( map );
481 DALI_TEST_EQUALS( image.GetWidth(), 50u, TEST_LOCATION );
482 DALI_TEST_EQUALS( image.GetHeight(), 70u, TEST_LOCATION );
485 //map.erase( map.end() - 2, map.end() );
488 map.push_back( Property::StringValuePair( "pixel-format", "" ) );
490 const StringEnum< int > values[] =
494 { "LA88", Pixel::LA88 },
495 { "RGB565", Pixel::RGB565 },
496 { "BGR565", Pixel::BGR565 },
497 { "RGBA4444", Pixel::RGBA4444 },
498 { "BGRA4444", Pixel::BGRA4444 },
499 { "RGBA5551", Pixel::RGBA5551 },
500 { "BGRA5551", Pixel::BGRA5551 },
501 { "RGB888", Pixel::RGB888 },
502 { "RGB8888", Pixel::RGB8888 },
503 { "BGR8888", Pixel::BGR8888 },
504 { "RGBA8888", Pixel::RGBA8888 },
505 { "BGRA8888", Pixel::BGRA8888 },
506 { "COMPRESSED_R11_EAC", Pixel::COMPRESSED_R11_EAC },
507 { "COMPRESSED_SIGNED_R11_EAC", Pixel::COMPRESSED_SIGNED_R11_EAC },
508 { "COMPRESSED_RG11_EAC", Pixel::COMPRESSED_RG11_EAC },
509 { "COMPRESSED_SIGNED_RG11_EAC", Pixel::COMPRESSED_SIGNED_RG11_EAC },
510 { "COMPRESSED_RGB8_ETC2", Pixel::COMPRESSED_RGB8_ETC2 },
511 { "COMPRESSED_SRGB8_ETC2", Pixel::COMPRESSED_SRGB8_ETC2 },
512 { "COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2", Pixel::COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 },
513 { "COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2", Pixel::COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 },
514 { "COMPRESSED_RGBA8_ETC2_EAC", Pixel::COMPRESSED_RGBA8_ETC2_EAC },
515 { "COMPRESSED_SRGB8_ALPHA8_ETC2_EAC", Pixel::COMPRESSED_SRGB8_ALPHA8_ETC2_EAC },
516 { "COMPRESSED_RGB8_ETC1", Pixel::COMPRESSED_RGB8_ETC1 },
517 { "COMPRESSED_RGB_PVRTC_4BPPV1", Pixel::COMPRESSED_RGB_PVRTC_4BPPV1 },
518 { "A8", Pixel::A8 }, // Checked already but reset so that BitmapImage works
520 TestEnumStrings< Pixel::Format, ImageAttributes >( map, values, ( sizeof( values ) / sizeof ( values[0] ) ), &ImageAttributes::GetPixelFormat, &NewImageAttributes );
524 map.push_back( Property::StringValuePair( "scaling-mode", "" ) );
526 const StringEnum< int > values[] =
528 { "SHRINK_TO_FIT", ImageAttributes::ShrinkToFit },
529 { "SCALE_TO_FILL", ImageAttributes::ScaleToFill },
530 { "FIT_WIDTH", ImageAttributes::FitWidth },
531 { "FIT_HEIGHT", ImageAttributes::FitHeight },
533 TestEnumStrings< ImageAttributes::ScalingMode, ImageAttributes >( map, values, ( sizeof( values ) / sizeof ( values[0] ) ), &ImageAttributes::GetScalingMode, &NewImageAttributes );
536 // type FrameBufferImage
537 map.push_back( Property::StringValuePair( "type", "FrameBufferImage" ) );
539 Image image = NewImage( map );
540 DALI_TEST_CHECK( FrameBufferImage::DownCast( image ) );
543 (map.end() - 1)->second = "BitmapImage";
545 Image image = NewImage( map );
546 DALI_TEST_CHECK( BitmapImage::DownCast( image ) );
549 (map.end() - 1)->second = "Image";
551 Image image = NewImage( map );
552 DALI_TEST_CHECK( Image::DownCast( image ) );
553 DALI_TEST_CHECK( !FrameBufferImage::DownCast( image ) );
554 DALI_TEST_CHECK( !BitmapImage::DownCast( image ) );
559 int UtcDaliScriptingNewShaderEffect(void)
561 TestApplication application;
563 Property::Map programMap;
564 programMap.push_back( Property::StringValuePair( "vertex-filename", "bump.vert" ) );
565 programMap.push_back( Property::StringValuePair( "fragment-filename", "bump.frag" ) );
567 Property::Map imageMap;
568 imageMap.push_back( Property::StringValuePair( "filename", "image.png" ) );
571 map.push_back( Property::StringValuePair( "image", imageMap ) );
572 map.push_back( Property::StringValuePair( "program", programMap ) );
573 map.push_back( Property::StringValuePair( "uLightPosition", Vector3( 0.0, 0.0, -1.5) ) );
574 map.push_back( Property::StringValuePair( "uAmbientLight", (int)10 ) );
576 ShaderEffect shader = NewShaderEffect( map );
578 DALI_TEST_CHECK( shader );
582 int UtcDaliScriptingNewActorNegative(void)
584 TestApplication application;
588 Actor handle = NewActor( Property::Map() );
589 DALI_TEST_CHECK( !handle );
592 // Map with only properties
595 map.push_back( Property::StringValuePair( "parent-origin", ParentOrigin::TOP_CENTER ) );
596 map.push_back( Property::StringValuePair( "anchor-point", AnchorPoint::TOP_CENTER ) );
597 Actor handle = NewActor( map );
598 DALI_TEST_CHECK( !handle );
601 // Add some signals to the map, we should have no signal connections as its not yet supported
604 map.push_back( Property::StringValuePair( "type", "Actor" ) );
605 map.push_back( Property::StringValuePair( "signals", Property::MAP ) );
606 Actor handle = NewActor( map );
607 DALI_TEST_CHECK( handle );
608 DALI_TEST_CHECK( !handle.MouseWheelEventSignal().GetConnectionCount() );
609 DALI_TEST_CHECK( !handle.OffStageSignal().GetConnectionCount() );
610 DALI_TEST_CHECK( !handle.OnStageSignal().GetConnectionCount() );
611 DALI_TEST_CHECK( !handle.SetSizeSignal().GetConnectionCount() );
612 DALI_TEST_CHECK( !handle.TouchedSignal().GetConnectionCount() );
617 int UtcDaliScriptingNewActorProperties(void)
619 TestApplication application;
622 map.push_back( Property::StringValuePair( "type", "Actor" ) );
623 map.push_back( Property::StringValuePair( "size", Vector3::ONE ) );
624 map.push_back( Property::StringValuePair( "position", Vector3::XAXIS ) );
625 map.push_back( Property::StringValuePair( "scale", Vector3::ONE ) );
626 map.push_back( Property::StringValuePair( "visible", false ) );
627 map.push_back( Property::StringValuePair( "color", Color::MAGENTA ) );
628 map.push_back( Property::StringValuePair( "name", "MyActor" ) );
629 map.push_back( Property::StringValuePair( "color-mode", "USE_PARENT_COLOR" ) );
630 map.push_back( Property::StringValuePair( "inherit-shader-effect", false ) );
631 map.push_back( Property::StringValuePair( "sensitive", false ) );
632 map.push_back( Property::StringValuePair( "leave-required", true ) );
633 map.push_back( Property::StringValuePair( "position-inheritance", "DONT_INHERIT_POSITION" ) );
634 map.push_back( Property::StringValuePair( "draw-mode", "STENCIL" ) );
635 map.push_back( Property::StringValuePair( "inherit-rotation", false ) );
636 map.push_back( Property::StringValuePair( "inherit-scale", false ) );
638 // Default properties
640 Actor handle = NewActor( map );
641 DALI_TEST_CHECK( handle );
643 Stage::GetCurrent().Add( handle );
644 application.SendNotification();
645 application.Render();
647 DALI_TEST_EQUALS( handle.GetCurrentSize(), Vector3::ONE, TEST_LOCATION );
648 DALI_TEST_EQUALS( handle.GetCurrentPosition(), Vector3::XAXIS, TEST_LOCATION );
649 DALI_TEST_EQUALS( handle.GetCurrentScale(), Vector3::ONE, TEST_LOCATION );
650 DALI_TEST_EQUALS( handle.IsVisible(), false, TEST_LOCATION );
651 DALI_TEST_EQUALS( handle.GetCurrentColor(), Color::MAGENTA, TEST_LOCATION );
652 DALI_TEST_EQUALS( handle.GetName(), "MyActor", TEST_LOCATION );
653 DALI_TEST_EQUALS( handle.GetColorMode(), USE_PARENT_COLOR, TEST_LOCATION );
654 DALI_TEST_EQUALS( handle.GetInheritShaderEffect(), false, TEST_LOCATION );
655 DALI_TEST_EQUALS( handle.IsSensitive(), false, TEST_LOCATION );
656 DALI_TEST_EQUALS( handle.GetLeaveRequired(), true, TEST_LOCATION );
657 DALI_TEST_EQUALS( handle.GetPositionInheritanceMode(), DONT_INHERIT_POSITION, TEST_LOCATION );
658 DALI_TEST_EQUALS( handle.GetDrawMode(), DrawMode::STENCIL, TEST_LOCATION );
659 DALI_TEST_EQUALS( handle.IsRotationInherited(), false, TEST_LOCATION );
660 DALI_TEST_EQUALS( handle.IsScaleInherited(), false, TEST_LOCATION );
662 Stage::GetCurrent().Remove( handle );
665 // Check Anchor point and parent origin vector3s
666 map.push_back( Property::StringValuePair( "parent-origin", ParentOrigin::TOP_CENTER ) );
667 map.push_back( Property::StringValuePair( "anchor-point", AnchorPoint::TOP_LEFT ) );
669 Actor handle = NewActor( map );
670 DALI_TEST_CHECK( handle );
672 Stage::GetCurrent().Add( handle );
673 application.SendNotification();
674 application.Render();
676 DALI_TEST_EQUALS( handle.GetCurrentParentOrigin(), ParentOrigin::TOP_CENTER, TEST_LOCATION );
677 DALI_TEST_EQUALS( handle.GetCurrentAnchorPoint(), AnchorPoint::TOP_LEFT, TEST_LOCATION );
679 Stage::GetCurrent().Remove( handle );
682 // Check Anchor point and parent origin STRINGS
683 map.erase( map.end() - 2, map.end() ); // delete previously added parent origin and anchor point
684 map.push_back( Property::StringValuePair( "parent-origin", "BACK_TOP_LEFT" ) );
685 map.push_back( Property::StringValuePair( "anchor-point", "FRONT_CENTER_LEFT" ) );
687 Actor handle = NewActor( map );
688 DALI_TEST_CHECK( handle );
690 Stage::GetCurrent().Add( handle );
691 application.SendNotification();
692 application.Render();
694 DALI_TEST_EQUALS( handle.GetCurrentParentOrigin(), ParentOrigin::BACK_TOP_LEFT, TEST_LOCATION );
695 DALI_TEST_EQUALS( handle.GetCurrentAnchorPoint(), AnchorPoint::FRONT_CENTER_LEFT, TEST_LOCATION );
697 Stage::GetCurrent().Remove( handle );
702 int UtcDaliScriptingNewActorChildren(void)
704 TestApplication application;
707 map.push_back( Property::StringValuePair( "type", "Actor" ) );
708 map.push_back( Property::StringValuePair( "position", Vector3::XAXIS ) );
710 Property::Map child1Map;
711 child1Map.push_back( Property::StringValuePair( "type", "ImageActor" ) );
712 child1Map.push_back( Property::StringValuePair( "position", Vector3::YAXIS ) );
714 Property::Map child2Map;
715 child2Map.push_back( Property::StringValuePair( "type", "TextActor" ) );
716 child2Map.push_back( Property::StringValuePair( "position", Vector3::ZAXIS ) );
718 Property::Map grandChildMap;
719 grandChildMap.push_back( Property::StringValuePair( "type", "LightActor" ) );
720 grandChildMap.push_back( Property::StringValuePair( "position", Vector3::ONE ) );
722 // Add arrays to appropriate maps
723 Property::Array grandChildArray;
724 grandChildArray.push_back( grandChildMap );
725 Property::Array childArray;
726 child1Map.push_back( Property::StringValuePair( "actors", grandChildArray ) );
727 childArray.push_back( child1Map );
728 childArray.push_back( child2Map );
729 map.push_back( Property::StringValuePair( "actors", childArray ) );
732 Actor handle = NewActor( map );
733 DALI_TEST_CHECK( handle );
735 Stage::GetCurrent().Add( handle );
736 application.SendNotification();
737 application.Render();
739 DALI_TEST_EQUALS( handle.GetCurrentPosition(), Vector3::XAXIS, TEST_LOCATION );
740 DALI_TEST_EQUALS( handle.GetChildCount(), 2u, TEST_LOCATION );
742 Actor child1 = handle.GetChildAt(0);
743 DALI_TEST_CHECK( child1 );
744 DALI_TEST_CHECK( ImageActor::DownCast( child1 ) );
745 DALI_TEST_EQUALS( child1.GetCurrentPosition(), Vector3::YAXIS, TEST_LOCATION );
746 DALI_TEST_EQUALS( child1.GetChildCount(), 1u, TEST_LOCATION );
748 Actor child2 = handle.GetChildAt(1);
749 DALI_TEST_CHECK( child2 );
750 DALI_TEST_CHECK( TextActor::DownCast( child2 ) );
751 DALI_TEST_EQUALS( child2.GetCurrentPosition(), Vector3::ZAXIS, TEST_LOCATION );
752 DALI_TEST_EQUALS( child2.GetChildCount(), 0u, TEST_LOCATION );
754 Actor grandChild = child1.GetChildAt( 0 );
755 DALI_TEST_CHECK( grandChild );
756 DALI_TEST_CHECK( LightActor::DownCast( grandChild ) );
757 DALI_TEST_EQUALS( grandChild.GetCurrentPosition(), Vector3::ONE, TEST_LOCATION );
758 DALI_TEST_EQUALS( grandChild.GetChildCount(), 0u, TEST_LOCATION );
760 Stage::GetCurrent().Remove( handle );
765 int UtcDaliScriptingCreatePropertyMapActor(void)
767 TestApplication application;
771 Actor actor = Actor::New();
774 CreatePropertyMap( actor, map );
775 DALI_TEST_CHECK( !map.empty() );
776 Property::Value value( map );
777 DALI_TEST_CHECK( value.HasKey( "type" ) );
778 DALI_TEST_EQUALS( value.GetValue( "type").Get< std::string >(), "Actor", TEST_LOCATION );
780 Stage::GetCurrent().Remove( actor );
785 Actor actor = ImageActor::New();
788 CreatePropertyMap( actor, map );
789 DALI_TEST_CHECK( !map.empty() );
790 Property::Value value( map );
791 DALI_TEST_CHECK( value.HasKey( "type" ) );
792 DALI_TEST_EQUALS( value.GetValue( "type").Get< std::string >(), "ImageActor", TEST_LOCATION );
794 Stage::GetCurrent().Remove( actor );
797 // Default properties
799 Actor actor = Actor::New();
800 actor.SetSize( Vector3::ONE );
801 actor.SetPosition( Vector3::XAXIS );
802 actor.SetScale( Vector3::ZAXIS );
803 actor.SetVisible( false );
804 actor.SetColor( Color::MAGENTA );
805 actor.SetName( "MyActor" );
806 actor.SetAnchorPoint( AnchorPoint::CENTER_LEFT );
807 actor.SetParentOrigin( ParentOrigin::TOP_RIGHT );
808 actor.SetInheritShaderEffect( false );
809 actor.SetSensitive( false );
810 actor.SetLeaveRequired( true );
811 actor.SetInheritRotation( false );
812 actor.SetInheritScale( false );
814 Stage::GetCurrent().Add( actor );
815 application.SendNotification();
816 application.Render();
819 CreatePropertyMap( actor, map );
821 DALI_TEST_CHECK( !map.empty() );
822 Property::Value value( map );
823 DALI_TEST_CHECK( value.HasKey( "size" ) );
824 DALI_TEST_EQUALS( value.GetValue( "size" ).Get< Vector3 >(), Vector3::ONE, TEST_LOCATION );
825 DALI_TEST_CHECK( value.HasKey( "position" ) );
826 DALI_TEST_EQUALS( value.GetValue( "position" ).Get< Vector3 >(), Vector3::XAXIS, TEST_LOCATION );
827 DALI_TEST_CHECK( value.HasKey( "scale" ) );
828 DALI_TEST_EQUALS( value.GetValue( "scale" ).Get< Vector3 >(), Vector3::ZAXIS, TEST_LOCATION );
829 DALI_TEST_CHECK( value.HasKey( "visible" ) );
830 DALI_TEST_EQUALS( value.GetValue( "visible" ).Get< bool >(), false, TEST_LOCATION );
831 DALI_TEST_CHECK( value.HasKey( "color" ) );
832 DALI_TEST_EQUALS( value.GetValue( "color" ).Get< Vector4 >(), Color::MAGENTA, TEST_LOCATION );
833 DALI_TEST_CHECK( value.HasKey( "name" ) );
834 DALI_TEST_EQUALS( value.GetValue( "name").Get< std::string >(), "MyActor", TEST_LOCATION );
835 DALI_TEST_CHECK( value.HasKey( "anchor-point" ) );
836 DALI_TEST_EQUALS( value.GetValue( "anchor-point" ).Get< Vector3 >(), AnchorPoint::CENTER_LEFT, TEST_LOCATION );
837 DALI_TEST_CHECK( value.HasKey( "parent-origin" ) );
838 DALI_TEST_EQUALS( value.GetValue( "parent-origin" ).Get< Vector3 >(), ParentOrigin::TOP_RIGHT, TEST_LOCATION );
839 DALI_TEST_CHECK( value.HasKey( "inherit-shader-effect" ) );
840 DALI_TEST_EQUALS( value.GetValue( "inherit-shader-effect" ).Get< bool >(), false, TEST_LOCATION );
841 DALI_TEST_CHECK( value.HasKey( "sensitive" ) );
842 DALI_TEST_EQUALS( value.GetValue( "sensitive" ).Get< bool >(), false, TEST_LOCATION );
843 DALI_TEST_CHECK( value.HasKey( "leave-required" ) );
844 DALI_TEST_EQUALS( value.GetValue( "leave-required" ).Get< bool >(), true, TEST_LOCATION );
845 DALI_TEST_CHECK( value.HasKey( "inherit-rotation" ) );
846 DALI_TEST_EQUALS( value.GetValue( "inherit-rotation" ).Get< bool >(), false, TEST_LOCATION );
847 DALI_TEST_CHECK( value.HasKey( "inherit-scale" ) );
848 DALI_TEST_EQUALS( value.GetValue( "inherit-scale" ).Get< bool >(), false, TEST_LOCATION );
850 Stage::GetCurrent().Remove( actor );
854 TestEnumStrings< ColorMode >( "color-mode", application, COLOR_MODE_VALUES, COLOR_MODE_VALUES_COUNT, &Actor::SetColorMode );
856 // PositionInheritanceMode
857 TestEnumStrings< PositionInheritanceMode >( "position-inheritance", application, POSITION_INHERITANCE_MODE_VALUES, POSITION_INHERITANCE_MODE_VALUES_COUNT, &Actor::SetPositionInheritanceMode );
860 TestEnumStrings< DrawMode::Type >( "draw-mode", application, DRAW_MODE_VALUES, DRAW_MODE_VALUES_COUNT, &Actor::SetDrawMode );
864 Actor actor = Actor::New();
865 Actor child = ImageActor::New();
866 Actor grandChild = TextActor::New();
867 Actor grandChild2 = LightActor::New();
869 child.Add( grandChild );
870 child.Add( grandChild2 );
872 Stage::GetCurrent().Add( actor );
873 application.SendNotification();
874 application.Render();
877 CreatePropertyMap( actor, map );
878 DALI_TEST_CHECK( !map.empty() );
880 Property::Value value( map );
881 DALI_TEST_CHECK( value.HasKey( "type" ) );
882 DALI_TEST_EQUALS( value.GetValue( "type" ).Get< std::string >(), "Actor", TEST_LOCATION );
884 DALI_TEST_CHECK( value.HasKey( "actors" ) );
885 Property::Array children( value.GetValue( "actors").Get< Property::Array >() );
886 DALI_TEST_CHECK( !children.empty() );
887 Property::Map childMap( children[0].Get< Property::Map >() );
888 DALI_TEST_CHECK( !childMap.empty() );
889 Property::Value childValue( childMap );
890 DALI_TEST_CHECK( childValue.HasKey( "type" ) );
891 DALI_TEST_EQUALS( childValue.GetValue( "type" ).Get< std::string >(), "ImageActor", TEST_LOCATION );
893 DALI_TEST_CHECK( childValue.HasKey( "actors" ) );
894 Property::Array grandChildren( childValue.GetValue( "actors").Get< Property::Array >() );
895 DALI_TEST_CHECK( grandChildren.size() == 2u );
897 Property::Map grandChildMap( grandChildren[0].Get< Property::Map >() );
898 DALI_TEST_CHECK( !grandChildMap.empty() );
899 Property::Value grandChildValue( grandChildMap );
900 DALI_TEST_CHECK( grandChildValue.HasKey( "type" ) );
901 DALI_TEST_EQUALS( grandChildValue.GetValue( "type" ).Get< std::string >(), "TextActor", TEST_LOCATION );
903 Property::Map grandChild2Map( grandChildren[1].Get< Property::Map >() );
904 DALI_TEST_CHECK( !grandChild2Map.empty() );
905 Property::Value grandChild2Value( grandChild2Map );
906 DALI_TEST_CHECK( grandChild2Value.HasKey( "type" ) );
907 DALI_TEST_EQUALS( grandChild2Value.GetValue( "type" ).Get< std::string >(), "LightActor", TEST_LOCATION );
909 Stage::GetCurrent().Remove( actor );
914 int UtcDaliScriptingCreatePropertyMapImage(void)
916 TestApplication application;
922 CreatePropertyMap( image, map );
923 DALI_TEST_CHECK( map.empty() );
928 Image image = Image::New( "MY_PATH" );
931 CreatePropertyMap( image, map );
932 DALI_TEST_CHECK( !map.empty() );
934 Property::Value value( map );
935 DALI_TEST_CHECK( value.HasKey( "type" ) );
936 DALI_TEST_EQUALS( value.GetValue( "type" ).Get< std::string >(), "Image", TEST_LOCATION );
937 DALI_TEST_CHECK( value.HasKey( "filename" ) );
938 DALI_TEST_EQUALS( value.GetValue( "filename" ).Get< std::string >(), "MY_PATH", TEST_LOCATION );
939 DALI_TEST_CHECK( value.HasKey( "load-policy") );
940 DALI_TEST_EQUALS( value.GetValue( "load-policy" ).Get< std::string >(), "IMMEDIATE", TEST_LOCATION );
941 DALI_TEST_CHECK( value.HasKey( "release-policy") );
942 DALI_TEST_EQUALS( value.GetValue( "release-policy" ).Get< std::string >(), "NEVER", TEST_LOCATION );
943 DALI_TEST_CHECK( value.HasKey( "pixel-format") );
944 DALI_TEST_EQUALS( value.GetValue( "pixel-format" ).Get< std::string >(), "RGBA8888", TEST_LOCATION );
945 DALI_TEST_CHECK( value.HasKey( "scaling-mode") );
946 DALI_TEST_EQUALS( value.GetValue( "scaling-mode" ).Get< std::string >(), "SHRINK_TO_FIT", TEST_LOCATION );
947 DALI_TEST_CHECK( !value.HasKey( "width" ) );
948 DALI_TEST_CHECK( !value.HasKey( "height" ) );
953 ImageAttributes attributes;
954 attributes.SetPixelFormat( Pixel::A8 );
955 attributes.SetScalingMode( ImageAttributes::FitWidth );
956 attributes.SetSize( 300, 400 );
957 Image image = Image::New( "MY_PATH", attributes, Image::OnDemand, Image::Unused );
960 CreatePropertyMap( image, map );
961 DALI_TEST_CHECK( !map.empty() );
963 Property::Value value( map );
964 DALI_TEST_CHECK( value.HasKey( "type" ) );
965 DALI_TEST_EQUALS( value.GetValue( "type" ).Get< std::string >(), "Image", TEST_LOCATION );
966 DALI_TEST_CHECK( value.HasKey( "filename" ) );
967 DALI_TEST_EQUALS( value.GetValue( "filename" ).Get< std::string >(), "MY_PATH", TEST_LOCATION );
968 DALI_TEST_CHECK( value.HasKey( "load-policy") );
969 DALI_TEST_EQUALS( value.GetValue( "load-policy" ).Get< std::string >(), "ON_DEMAND", TEST_LOCATION );
970 DALI_TEST_CHECK( value.HasKey( "release-policy") );
971 DALI_TEST_EQUALS( value.GetValue( "release-policy" ).Get< std::string >(), "UNUSED", TEST_LOCATION );
972 DALI_TEST_CHECK( value.HasKey( "pixel-format") );
973 DALI_TEST_EQUALS( value.GetValue( "pixel-format" ).Get< std::string >(), "A8", TEST_LOCATION );
974 DALI_TEST_CHECK( value.HasKey( "scaling-mode") );
975 DALI_TEST_EQUALS( value.GetValue( "scaling-mode" ).Get< std::string >(), "FIT_WIDTH", TEST_LOCATION );
976 DALI_TEST_CHECK( value.HasKey( "width" ) );
977 DALI_TEST_EQUALS( value.GetValue( "width" ).Get< int >(), 300, TEST_LOCATION );
978 DALI_TEST_CHECK( value.HasKey( "height" ) );
979 DALI_TEST_EQUALS( value.GetValue( "height" ).Get< int >(), 400, TEST_LOCATION );
984 Image image = BitmapImage::New( 200, 300, Pixel::RGBA8888 );
986 CreatePropertyMap( image, map );
987 Property::Value value( map );
988 DALI_TEST_CHECK( value.HasKey( "type" ) );
989 DALI_TEST_EQUALS( value.GetValue( "type" ).Get< std::string >(), "BitmapImage", TEST_LOCATION );
994 Image image = FrameBufferImage::New( 200, 300, Pixel::RGBA8888 );
996 CreatePropertyMap( image, map );
997 Property::Value value( map );
998 DALI_TEST_CHECK( value.HasKey( "type" ) );
999 DALI_TEST_EQUALS( value.GetValue( "type" ).Get< std::string >(), "FrameBufferImage", TEST_LOCATION );
1004 int UtcDaliScriptingGetEnumerationTemplates(void)
1006 TestApplication application;
1008 const Scripting::StringEnum< int > myTable[] =
1016 const unsigned int myTableCount = sizeof( myTable ) / sizeof( myTable[0] );
1018 for ( unsigned int i = 0; i < myTableCount; ++i )
1020 tet_printf("Checking: %s\n", myTable[ i ].string );
1021 DALI_TEST_EQUALS( myTable[ i ].value, GetEnumeration( myTable[ i ].string, myTable, myTableCount ), TEST_LOCATION );
1024 for ( unsigned int i = 0; i < myTableCount; ++i )
1026 tet_printf("Checking: %d\n", myTable[ i ].value );
1027 DALI_TEST_EQUALS( myTable[ i ].string, GetEnumerationName( myTable[ i ].value, myTable, myTableCount ), TEST_LOCATION );