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] );
57 //////////////////////////////////////////////////////////////////////////////
58 // Helpers for string to enum comparisons for Image and ImageAttributes
59 //////////////////////////////////////////////////////////////////////////////
62 * Template to check enumerations of type T, with a class of type X
64 template< typename T, typename X >
66 Property::Map& map, // The map used to create instance of type X
67 const StringEnum< int >* values, // An array of string values
68 unsigned int num, // Number of items in the array
69 T ( X::*method )() const, // The member method of X to call to get the enum
70 X ( *creator ) ( const Property::Value& ) // The method which creates an instance of type X
73 const unsigned int lastIndex( map.Count() - 1 );
74 const std::string& key = map.GetKey( lastIndex );
75 Property::Value& value = map.GetValue( lastIndex );
77 for ( unsigned int i = 0; i < num; ++i )
79 value = values[i].string;
80 tet_printf("Checking: %s: %s\n", key.c_str(), values[i].string );
81 X instance = creator( map );
82 DALI_TEST_EQUALS( values[i].value, ( instance.*method )(), TEST_LOCATION );
86 /// Helper method to create ResourceImage using property
87 ResourceImage NewResourceImage( const Property::Value& map )
89 ResourceImage image = ResourceImage::DownCast( NewImage( map ) );
93 /// Helper method to create ResourceImage using property
94 BufferImage NewBufferImage( const Property::Value& map )
96 BufferImage image = BufferImage::DownCast( NewImage( map ) );
100 /// Helper method to create ImageAttributes using an Image
101 ImageAttributes NewImageAttributes( const Property::Value& map )
103 ResourceImage image = ResourceImage::DownCast( NewImage( map ) );
104 return image.GetAttributes();
107 //////////////////////////////////////////////////////////////////////////////
108 // Helpers for string to enum comparisons for Actor to Property::Map
109 //////////////////////////////////////////////////////////////////////////////
112 * Template to check enumerations of type T
114 template< typename T >
115 void TestEnumStrings(
116 const char * const keyName, // The name of the key to check
117 TestApplication& application, // Reference to the application class
118 const StringEnum< int >* values, // An array of string values
119 unsigned int num, // Number of items in the array
120 void ( Actor::*method )( T ) // The Actor member method to set the enumeration
123 for ( unsigned int i = 0; i < num; ++i )
125 tet_printf("Checking: %s: %s\n", keyName, values[i].string );
127 Actor actor = Actor::New();
128 (actor.*method)( ( T ) values[i].value );
130 Stage::GetCurrent().Add( actor );
131 application.SendNotification();
132 application.Render();
135 CreatePropertyMap( actor, map );
137 DALI_TEST_CHECK( map.Count() );
138 Property::Value value( map );
139 DALI_TEST_CHECK( value.HasKey( keyName ) );
140 DALI_TEST_EQUALS( value.GetValue( keyName ).Get< std::string >(), values[i].string, TEST_LOCATION );
142 Stage::GetCurrent().Remove( actor );
146 //////////////////////////////////////////////////////////////////////////////
153 int UtcDaliScriptingGetColorMode(void)
155 TestApplication application;
157 for ( unsigned int i = 0; i < COLOR_MODE_VALUES_COUNT; ++i )
159 tet_printf( "Checking %s == %d\n", COLOR_MODE_VALUES[i].string, COLOR_MODE_VALUES[i].value );
160 DALI_TEST_EQUALS( COLOR_MODE_VALUES[i].value, GetColorMode( COLOR_MODE_VALUES[i].string ), TEST_LOCATION );
161 DALI_TEST_EQUALS( COLOR_MODE_VALUES[i].string, GetColorMode( (ColorMode) COLOR_MODE_VALUES[i].value ), TEST_LOCATION );
166 (void)GetColorMode("INVALID_ARG");
167 tet_result( TET_FAIL );
169 catch ( DaliException& e )
171 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
176 int UtcDaliScriptingGetPositionInheritanceMode(void)
178 TestApplication application;
180 for ( unsigned int i = 0; i < POSITION_INHERITANCE_MODE_VALUES_COUNT; ++i )
182 tet_printf( "Checking %s == %d\n", POSITION_INHERITANCE_MODE_VALUES[i].string, POSITION_INHERITANCE_MODE_VALUES[i].value );
183 DALI_TEST_EQUALS( POSITION_INHERITANCE_MODE_VALUES[i].value, GetPositionInheritanceMode( POSITION_INHERITANCE_MODE_VALUES[i].string ), TEST_LOCATION );
184 DALI_TEST_EQUALS( POSITION_INHERITANCE_MODE_VALUES[i].string, GetPositionInheritanceMode( (PositionInheritanceMode) POSITION_INHERITANCE_MODE_VALUES[i].value ), TEST_LOCATION );
189 (void)GetPositionInheritanceMode("INVALID_ARG");
190 tet_result( TET_FAIL );
192 catch ( DaliException& e )
194 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
200 int UtcDaliScriptingGetDrawMode(void)
202 TestApplication application;
204 for ( unsigned int i = 0; i < DRAW_MODE_VALUES_COUNT; ++i )
206 tet_printf( "Checking %s == %d\n", DRAW_MODE_VALUES[i].string, DRAW_MODE_VALUES[i].value );
207 DALI_TEST_EQUALS( DRAW_MODE_VALUES[i].value, GetDrawMode( DRAW_MODE_VALUES[i].string ), TEST_LOCATION );
208 DALI_TEST_EQUALS( DRAW_MODE_VALUES[i].string, GetDrawMode( (DrawMode::Type) DRAW_MODE_VALUES[i].value ), TEST_LOCATION );
213 (void)GetDrawMode("INVALID_ARG");
214 tet_result( TET_FAIL );
216 catch ( DaliException& e )
218 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
223 int UtcDaliScriptingGetAnchorConstant(void)
225 TestApplication application;
227 DALI_TEST_EQUALS( Dali::ParentOrigin::TOP_LEFT, GetAnchorConstant( "TOP_LEFT" ), TEST_LOCATION );
228 DALI_TEST_EQUALS( Dali::ParentOrigin::TOP_CENTER, GetAnchorConstant( "TOP_CENTER" ), TEST_LOCATION );
229 DALI_TEST_EQUALS( Dali::ParentOrigin::TOP_RIGHT, GetAnchorConstant( "TOP_RIGHT" ), TEST_LOCATION );
230 DALI_TEST_EQUALS( Dali::ParentOrigin::CENTER_LEFT, GetAnchorConstant( "CENTER_LEFT" ), TEST_LOCATION );
231 DALI_TEST_EQUALS( Dali::ParentOrigin::CENTER, GetAnchorConstant( "CENTER" ), TEST_LOCATION );
232 DALI_TEST_EQUALS( Dali::ParentOrigin::CENTER_RIGHT, GetAnchorConstant( "CENTER_RIGHT" ), TEST_LOCATION );
233 DALI_TEST_EQUALS( Dali::ParentOrigin::BOTTOM_LEFT, GetAnchorConstant( "BOTTOM_LEFT" ), TEST_LOCATION );
234 DALI_TEST_EQUALS( Dali::ParentOrigin::BOTTOM_CENTER, GetAnchorConstant( "BOTTOM_CENTER" ), TEST_LOCATION );
235 DALI_TEST_EQUALS( Dali::ParentOrigin::BOTTOM_RIGHT, GetAnchorConstant( "BOTTOM_RIGHT" ), TEST_LOCATION );
239 (void)GetAnchorConstant("INVALID_ARG");
240 tet_result( TET_FAIL );
242 catch ( DaliException& e )
244 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
249 int UtcDaliScriptingNewImageNegative(void)
251 TestApplication application;
257 map[ "filename" ] = Vector3::ZERO;
258 Image image = NewImage( map );
259 tet_result( TET_FAIL );
261 catch ( DaliException& e )
263 DALI_TEST_ASSERT( e, "map.GetValue(field).GetType()", TEST_LOCATION );
266 // Invalid load-policy
270 map[ "load-policy" ] = Vector3::ZERO;
271 Image image = NewImage( map );
272 tet_result( TET_FAIL );
274 catch ( DaliException& e )
276 DALI_TEST_ASSERT( e, "map.GetValue(field).GetType()", TEST_LOCATION );
282 map[ "load-policy" ] = "INVALID";
283 Image image = NewImage( map );
284 tet_result( TET_FAIL );
286 catch ( DaliException& e )
288 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
292 // Invalid release-policy
296 map[ "release-policy" ] = Vector3::ZERO;
297 Image image = NewImage( map );
298 tet_result( TET_FAIL );
300 catch ( DaliException& e )
302 DALI_TEST_ASSERT( e, "map.GetValue(field).GetType()", TEST_LOCATION );
308 map[ "release-policy" ] = "INVALID";
309 Image image = NewImage( map );
310 tet_result( TET_FAIL );
312 catch ( DaliException& e )
314 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
322 map[ "width" ] = "Invalid";
323 map[ "height" ] = "Invalid";
324 Image image = NewImage( map );
325 tet_result( TET_FAIL );
327 catch ( DaliException& e )
329 DALI_TEST_ASSERT( e, "value.GetType()", TEST_LOCATION );
337 map[ "height" ] = "Invalid";
338 Image image = NewImage( map );
339 tet_result( TET_FAIL );
341 catch ( DaliException& e )
343 DALI_TEST_ASSERT( e, "value.GetType()", TEST_LOCATION );
346 // Invalid pixel-format
350 map[ "pixel-format" ] = Vector3::ZERO;
351 Image image = NewImage( map );
352 tet_result( TET_FAIL );
354 catch ( DaliException& e )
356 DALI_TEST_ASSERT( e, "map.GetValue(field).GetType()", TEST_LOCATION );
362 map[ "pixel-format" ] = "INVALID";
363 Image image = NewImage( map );
364 tet_result( TET_FAIL );
366 catch ( DaliException& e )
368 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
372 // Invalid scaling-mode
376 map[ "scaling-mode" ] = Vector3::ZERO;
377 Image image = NewImage( map );
378 tet_result( TET_FAIL );
380 catch ( DaliException& e )
382 DALI_TEST_ASSERT( e, "map.GetValue(field).GetType()", TEST_LOCATION );
388 map[ "scaling-mode" ] = "INVALID";
389 Image image = NewImage( map );
390 tet_result( TET_FAIL );
392 catch ( DaliException& e )
394 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
402 map[ "type" ] = Vector3::ZERO;
403 Image image = NewImage( map );
404 tet_result( TET_FAIL );
406 catch ( DaliException& e )
408 DALI_TEST_ASSERT( e, "map.GetValue(\"type\").GetType()", TEST_LOCATION );
414 map[ "type" ] = "INVALID";
415 Image image = NewImage( map );
416 tet_result( TET_FAIL );
418 catch ( DaliException& e )
420 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
427 int UtcDaliScriptingNewImage(void)
429 TestApplication application;
432 map[ "filename" ] = "TEST_FILE";
436 ResourceImage image = ResourceImage::DownCast( NewImage( map ) );
437 DALI_TEST_EQUALS( "TEST_FILE", image.GetUrl(), TEST_LOCATION );
441 map[ "load-policy" ] = "";
443 const StringEnum< int > values[] =
445 { "IMMEDIATE", ResourceImage::IMMEDIATE },
446 { "ON_DEMAND", ResourceImage::ON_DEMAND }
448 TestEnumStrings< ResourceImage::LoadPolicy, ResourceImage >( map, values, ( sizeof( values ) / sizeof ( values[0] ) ), &ResourceImage::GetLoadPolicy, &NewResourceImage );
452 map[ "release-policy" ] = "";
454 const StringEnum< int > values[] =
456 { "UNUSED", Image::UNUSED },
457 { "NEVER", Image::NEVER }
459 TestEnumStrings< Image::ReleasePolicy, Image >( map, values, ( sizeof( values ) / sizeof ( values[0] ) ), &Image::GetReleasePolicy, &NewImage );
462 // float width and height
463 map[ "width" ] = (float) 10.0f;
464 map[ "height" ] = (float) 20.0f;
466 Image image = NewImage( map );
467 DALI_TEST_EQUALS( image.GetWidth(), 10.0f, TEST_LOCATION );
468 DALI_TEST_EQUALS( image.GetHeight(), 20.0f, TEST_LOCATION );
471 // int width and height
472 map[ "width"] = (int) 50;
473 map[ "height" ] = (int) 70;
475 Image image = NewImage( map );
476 DALI_TEST_EQUALS( image.GetWidth(), 50u, TEST_LOCATION );
477 DALI_TEST_EQUALS( image.GetHeight(), 70u, TEST_LOCATION );
480 //map.erase( map.end() - 2, map.end() );
483 map[ "scaling-mode" ] = "";
485 const StringEnum< int > values[] =
487 { "SHRINK_TO_FIT", ImageAttributes::ShrinkToFit },
488 { "SCALE_TO_FILL", ImageAttributes::ScaleToFill },
489 { "FIT_WIDTH", ImageAttributes::FitWidth },
490 { "FIT_HEIGHT", ImageAttributes::FitHeight },
492 TestEnumStrings< ImageAttributes::ScalingMode, ImageAttributes >( map, values, ( sizeof( values ) / sizeof ( values[0] ) ), &ImageAttributes::GetScalingMode, &NewImageAttributes );
495 // type FrameBufferImage
496 map[ "type" ] = "FrameBufferImage";
498 Image image = NewImage( map );
499 DALI_TEST_CHECK( FrameBufferImage::DownCast( image ) );
502 map[ "type" ] = "BufferImage";
504 Image image = NewImage( map );
505 DALI_TEST_CHECK( BufferImage::DownCast( image ) );
506 DALI_TEST_CHECK((BufferImage::DownCast( image )).GetPixelFormat()== Pixel::RGBA8888);
510 map[ "pixel-format" ] = "";
512 const StringEnum< int > values[] =
516 { "LA88", Pixel::LA88 },
517 { "RGB565", Pixel::RGB565 },
518 { "BGR565", Pixel::BGR565 },
519 { "RGBA4444", Pixel::RGBA4444 },
520 { "BGRA4444", Pixel::BGRA4444 },
521 { "RGBA5551", Pixel::RGBA5551 },
522 { "BGRA5551", Pixel::BGRA5551 },
523 { "RGB888", Pixel::RGB888 },
524 { "RGB8888", Pixel::RGB8888 },
525 { "BGR8888", Pixel::BGR8888 },
526 { "RGBA8888", Pixel::RGBA8888 },
527 { "BGRA8888", Pixel::BGRA8888 },
528 /*{ "COMPRESSED_R11_EAC", Pixel::COMPRESSED_R11_EAC },
529 { "COMPRESSED_SIGNED_R11_EAC", Pixel::COMPRESSED_SIGNED_R11_EAC },
530 { "COMPRESSED_RG11_EAC", Pixel::COMPRESSED_RG11_EAC },
531 { "COMPRESSED_SIGNED_RG11_EAC", Pixel::COMPRESSED_SIGNED_RG11_EAC },
532 { "COMPRESSED_RGB8_ETC2", Pixel::COMPRESSED_RGB8_ETC2 },
533 { "COMPRESSED_SRGB8_ETC2", Pixel::COMPRESSED_SRGB8_ETC2 },
534 { "COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2", Pixel::COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 },
535 { "COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2", Pixel::COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 },
536 { "COMPRESSED_RGBA8_ETC2_EAC", Pixel::COMPRESSED_RGBA8_ETC2_EAC },
537 { "COMPRESSED_SRGB8_ALPHA8_ETC2_EAC", Pixel::COMPRESSED_SRGB8_ALPHA8_ETC2_EAC },
538 { "COMPRESSED_RGB8_ETC1", Pixel::COMPRESSED_RGB8_ETC1 },
539 { "COMPRESSED_RGB_PVRTC_4BPPV1", Pixel::COMPRESSED_RGB_PVRTC_4BPPV1 },*/
540 // BufferImage doesnot support compressed format
543 TestEnumStrings< Pixel::Format, BufferImage >( map, values, ( sizeof( values ) / sizeof ( values[0] ) ), &BufferImage::GetPixelFormat, &NewBufferImage );
547 map[ "type" ] = "ResourceImage";
549 Image image = NewImage( map );
550 DALI_TEST_CHECK( ResourceImage::DownCast( image ) );
551 DALI_TEST_CHECK( !FrameBufferImage::DownCast( image ) );
552 DALI_TEST_CHECK( !BufferImage::DownCast( image ) );
557 int UtcDaliScriptingNewShaderEffect(void)
559 TestApplication application;
561 Property::Map programMap;
562 programMap[ "vertex-filename" ] = "bump.vert";
563 programMap[ "fragment-filename" ] = "bump.frag";
565 Property::Map imageMap;
566 imageMap[ "filename" ] = "image.png";
569 map[ "image" ] = imageMap;
570 map[ "program" ] = programMap;
571 map[ "uLightPosition" ] = Vector3( 0.0, 0.0, -1.5);
572 map[ "uAmbientLight" ] = (int)10;
574 ShaderEffect shader = NewShaderEffect( map );
576 DALI_TEST_CHECK( shader );
580 int UtcDaliScriptingNewActorNegative(void)
582 TestApplication application;
586 Actor handle = NewActor( Property::Map() );
587 DALI_TEST_CHECK( !handle );
590 // Map with only properties
593 map[ "parent-origin" ] = ParentOrigin::TOP_CENTER;
594 map[ "anchor-point" ] = AnchorPoint::TOP_CENTER;
595 Actor handle = NewActor( map );
596 DALI_TEST_CHECK( !handle );
599 // Add some signals to the map, we should have no signal connections as its not yet supported
602 map[ "type" ] = "Actor";
603 map[ "signals" ] = Property::MAP;
604 Actor handle = NewActor( map );
605 DALI_TEST_CHECK( handle );
606 DALI_TEST_CHECK( !handle.MouseWheelEventSignal().GetConnectionCount() );
607 DALI_TEST_CHECK( !handle.OffStageSignal().GetConnectionCount() );
608 DALI_TEST_CHECK( !handle.OnStageSignal().GetConnectionCount() );
609 DALI_TEST_CHECK( !handle.TouchedSignal().GetConnectionCount() );
614 int UtcDaliScriptingNewActorProperties(void)
616 TestApplication application;
619 map[ "type" ] = "Actor";
620 map[ "size" ] = Vector3::ONE;
621 map[ "position" ] = Vector3::XAXIS;
622 map[ "scale" ] = Vector3::ONE;
623 map[ "visible" ] = false;
624 map[ "color" ] = Color::MAGENTA;
625 map[ "name" ] = "MyActor";
626 map[ "color-mode" ] = "USE_PARENT_COLOR";
627 map[ "inherit-shader-effect" ] = false;
628 map[ "sensitive" ] = false;
629 map[ "leave-required" ] = true;
630 map[ "position-inheritance" ] = "DONT_INHERIT_POSITION";
631 map[ "draw-mode" ] = "STENCIL";
632 map[ "inherit-orientation" ] = false;
633 map[ "inherit-scale" ] = false;
635 // Default properties
637 Actor handle = NewActor( map );
638 DALI_TEST_CHECK( handle );
640 Stage::GetCurrent().Add( handle );
641 application.SendNotification();
642 application.Render();
644 DALI_TEST_EQUALS( handle.GetCurrentSize(), Vector3::ONE, TEST_LOCATION );
645 DALI_TEST_EQUALS( handle.GetCurrentPosition(), Vector3::XAXIS, TEST_LOCATION );
646 DALI_TEST_EQUALS( handle.GetCurrentScale(), Vector3::ONE, TEST_LOCATION );
647 DALI_TEST_EQUALS( handle.IsVisible(), false, TEST_LOCATION );
648 DALI_TEST_EQUALS( handle.GetCurrentColor(), Color::MAGENTA, TEST_LOCATION );
649 DALI_TEST_EQUALS( handle.GetName(), "MyActor", TEST_LOCATION );
650 DALI_TEST_EQUALS( handle.GetColorMode(), USE_PARENT_COLOR, TEST_LOCATION );
651 DALI_TEST_EQUALS( handle.IsSensitive(), false, TEST_LOCATION );
652 DALI_TEST_EQUALS( handle.GetLeaveRequired(), true, TEST_LOCATION );
653 DALI_TEST_EQUALS( handle.GetPositionInheritanceMode(), DONT_INHERIT_POSITION, TEST_LOCATION );
654 DALI_TEST_EQUALS( handle.GetDrawMode(), DrawMode::STENCIL, TEST_LOCATION );
655 DALI_TEST_EQUALS( handle.IsOrientationInherited(), false, TEST_LOCATION );
656 DALI_TEST_EQUALS( handle.IsScaleInherited(), false, TEST_LOCATION );
658 Stage::GetCurrent().Remove( handle );
661 // Check Anchor point and parent origin vector3s
662 map[ "parent-origin" ] = ParentOrigin::TOP_CENTER;
663 map[ "anchor-point" ] = AnchorPoint::TOP_LEFT;
665 Actor handle = NewActor( map );
666 DALI_TEST_CHECK( handle );
668 Stage::GetCurrent().Add( handle );
669 application.SendNotification();
670 application.Render();
672 DALI_TEST_EQUALS( handle.GetCurrentParentOrigin(), ParentOrigin::TOP_CENTER, TEST_LOCATION );
673 DALI_TEST_EQUALS( handle.GetCurrentAnchorPoint(), AnchorPoint::TOP_LEFT, TEST_LOCATION );
675 Stage::GetCurrent().Remove( handle );
678 // Check Anchor point and parent origin STRINGS
679 map[ "parent-origin" ] = "TOP_LEFT";
680 map[ "anchor-point" ] = "CENTER_LEFT";
682 Actor handle = NewActor( map );
683 DALI_TEST_CHECK( handle );
685 Stage::GetCurrent().Add( handle );
686 application.SendNotification();
687 application.Render();
689 DALI_TEST_EQUALS( handle.GetCurrentParentOrigin(), ParentOrigin::TOP_LEFT, TEST_LOCATION );
690 DALI_TEST_EQUALS( handle.GetCurrentAnchorPoint(), AnchorPoint::CENTER_LEFT, TEST_LOCATION );
692 Stage::GetCurrent().Remove( handle );
697 int UtcDaliScriptingNewActorChildren(void)
699 TestApplication application;
702 map[ "type" ] = "Actor";
703 map[ "position" ] = Vector3::XAXIS;
705 Property::Map child1Map;
706 child1Map[ "type" ] = "ImageActor";
707 child1Map[ "position" ] = Vector3::YAXIS;
709 Property::Array childArray;
710 childArray.push_back( child1Map );
711 map[ "actors" ] = childArray;
714 Actor handle = NewActor( map );
715 DALI_TEST_CHECK( handle );
717 Stage::GetCurrent().Add( handle );
718 application.SendNotification();
719 application.Render();
721 DALI_TEST_EQUALS( handle.GetCurrentPosition(), Vector3::XAXIS, TEST_LOCATION );
722 DALI_TEST_EQUALS( handle.GetChildCount(), 1u, TEST_LOCATION );
724 Actor child1 = handle.GetChildAt(0);
725 DALI_TEST_CHECK( child1 );
726 DALI_TEST_CHECK( ImageActor::DownCast( child1 ) );
727 DALI_TEST_EQUALS( child1.GetCurrentPosition(), Vector3::YAXIS, TEST_LOCATION );
728 DALI_TEST_EQUALS( child1.GetChildCount(), 0u, TEST_LOCATION );
730 Stage::GetCurrent().Remove( handle );
735 int UtcDaliScriptingCreatePropertyMapActor(void)
737 TestApplication application;
741 Actor actor = Actor::New();
744 CreatePropertyMap( actor, map );
745 DALI_TEST_CHECK( !map.Empty() );
746 Property::Value value( map );
747 DALI_TEST_CHECK( value.HasKey( "type" ) );
748 DALI_TEST_EQUALS( value.GetValue( "type").Get< std::string >(), "Actor", TEST_LOCATION );
750 Stage::GetCurrent().Remove( actor );
755 Actor actor = ImageActor::New();
758 CreatePropertyMap( actor, map );
759 DALI_TEST_CHECK( !map.Empty() );
760 Property::Value value( map );
761 DALI_TEST_CHECK( value.HasKey( "type" ) );
762 DALI_TEST_EQUALS( value.GetValue( "type").Get< std::string >(), "ImageActor", TEST_LOCATION );
764 Stage::GetCurrent().Remove( actor );
767 // Default properties
769 Actor actor = Actor::New();
770 actor.SetSize( Vector3::ONE );
771 actor.SetPosition( Vector3::XAXIS );
772 actor.SetScale( Vector3::ZAXIS );
773 actor.SetVisible( false );
774 actor.SetColor( Color::MAGENTA );
775 actor.SetName( "MyActor" );
776 actor.SetAnchorPoint( AnchorPoint::CENTER_LEFT );
777 actor.SetParentOrigin( ParentOrigin::TOP_RIGHT );
778 actor.SetSensitive( false );
779 actor.SetLeaveRequired( true );
780 actor.SetInheritOrientation( false );
781 actor.SetInheritScale( false );
782 actor.SetSizeModeFactor( Vector3::ONE );
784 Stage::GetCurrent().Add( actor );
785 application.SendNotification();
786 application.Render();
789 CreatePropertyMap( actor, map );
791 DALI_TEST_CHECK( !map.Empty() );
792 Property::Value value( map );
793 DALI_TEST_CHECK( value.HasKey( "size" ) );
794 DALI_TEST_EQUALS( value.GetValue( "size" ).Get< Vector3 >(), Vector3::ONE, TEST_LOCATION );
795 DALI_TEST_CHECK( value.HasKey( "position" ) );
796 DALI_TEST_EQUALS( value.GetValue( "position" ).Get< Vector3 >(), Vector3::XAXIS, TEST_LOCATION );
797 DALI_TEST_CHECK( value.HasKey( "scale" ) );
798 DALI_TEST_EQUALS( value.GetValue( "scale" ).Get< Vector3 >(), Vector3::ZAXIS, TEST_LOCATION );
799 DALI_TEST_CHECK( value.HasKey( "visible" ) );
800 DALI_TEST_EQUALS( value.GetValue( "visible" ).Get< bool >(), false, TEST_LOCATION );
801 DALI_TEST_CHECK( value.HasKey( "color" ) );
802 DALI_TEST_EQUALS( value.GetValue( "color" ).Get< Vector4 >(), Color::MAGENTA, TEST_LOCATION );
803 DALI_TEST_CHECK( value.HasKey( "name" ) );
804 DALI_TEST_EQUALS( value.GetValue( "name").Get< std::string >(), "MyActor", TEST_LOCATION );
805 DALI_TEST_CHECK( value.HasKey( "anchor-point" ) );
806 DALI_TEST_EQUALS( value.GetValue( "anchor-point" ).Get< Vector3 >(), AnchorPoint::CENTER_LEFT, TEST_LOCATION );
807 DALI_TEST_CHECK( value.HasKey( "parent-origin" ) );
808 DALI_TEST_EQUALS( value.GetValue( "parent-origin" ).Get< Vector3 >(), ParentOrigin::TOP_RIGHT, TEST_LOCATION );
809 DALI_TEST_CHECK( value.HasKey( "sensitive" ) );
810 DALI_TEST_EQUALS( value.GetValue( "sensitive" ).Get< bool >(), false, TEST_LOCATION );
811 DALI_TEST_CHECK( value.HasKey( "leave-required" ) );
812 DALI_TEST_EQUALS( value.GetValue( "leave-required" ).Get< bool >(), true, TEST_LOCATION );
813 DALI_TEST_CHECK( value.HasKey( "inherit-orientation" ) );
814 DALI_TEST_EQUALS( value.GetValue( "inherit-orientation" ).Get< bool >(), false, TEST_LOCATION );
815 DALI_TEST_CHECK( value.HasKey( "inherit-scale" ) );
816 DALI_TEST_EQUALS( value.GetValue( "inherit-scale" ).Get< bool >(), false, TEST_LOCATION );
817 DALI_TEST_CHECK( value.HasKey( "size-mode-factor" ) );
818 DALI_TEST_EQUALS( value.GetValue( "size-mode-factor" ).Get< Vector3 >(), Vector3::ONE, TEST_LOCATION );
820 Stage::GetCurrent().Remove( actor );
824 TestEnumStrings< ColorMode >( "color-mode", application, COLOR_MODE_VALUES, COLOR_MODE_VALUES_COUNT, &Actor::SetColorMode );
826 // PositionInheritanceMode
827 TestEnumStrings< PositionInheritanceMode >( "position-inheritance", application, POSITION_INHERITANCE_MODE_VALUES, POSITION_INHERITANCE_MODE_VALUES_COUNT, &Actor::SetPositionInheritanceMode );
830 TestEnumStrings< DrawMode::Type >( "draw-mode", application, DRAW_MODE_VALUES, DRAW_MODE_VALUES_COUNT, &Actor::SetDrawMode );
834 Actor actor = Actor::New();
835 Actor child = ImageActor::New();
838 Stage::GetCurrent().Add( actor );
839 application.SendNotification();
840 application.Render();
843 CreatePropertyMap( actor, map );
844 DALI_TEST_CHECK( !map.Empty() );
846 Property::Value value( map );
847 DALI_TEST_CHECK( value.HasKey( "type" ) );
848 DALI_TEST_EQUALS( value.GetValue( "type" ).Get< std::string >(), "Actor", TEST_LOCATION );
850 DALI_TEST_CHECK( value.HasKey( "actors" ) );
851 Property::Array children( value.GetValue( "actors").Get< Property::Array >() );
852 DALI_TEST_CHECK( !children.empty() );
853 Property::Map childMap( children[0].Get< Property::Map >() );
854 DALI_TEST_CHECK( !childMap.Empty() );
855 Property::Value childValue( childMap );
856 DALI_TEST_CHECK( childValue.HasKey( "type" ) );
857 DALI_TEST_EQUALS( childValue.GetValue( "type" ).Get< std::string >(), "ImageActor", TEST_LOCATION );
859 Stage::GetCurrent().Remove( actor );
864 int UtcDaliScriptingCreatePropertyMapImage(void)
866 TestApplication application;
872 CreatePropertyMap( image, map );
873 DALI_TEST_CHECK( map.Empty() );
878 Image image = ResourceImage::New( "MY_PATH" );
881 CreatePropertyMap( image, map );
882 DALI_TEST_CHECK( !map.Empty() );
884 Property::Value value( map );
885 DALI_TEST_CHECK( value.HasKey( "type" ) );
886 DALI_TEST_EQUALS( value.GetValue( "type" ).Get< std::string >(), "ResourceImage", TEST_LOCATION );
887 DALI_TEST_CHECK( value.HasKey( "filename" ) );
888 DALI_TEST_EQUALS( value.GetValue( "filename" ).Get< std::string >(), "MY_PATH", TEST_LOCATION );
889 DALI_TEST_CHECK( value.HasKey( "load-policy") );
890 DALI_TEST_EQUALS( value.GetValue( "load-policy" ).Get< std::string >(), "IMMEDIATE", TEST_LOCATION );
891 DALI_TEST_CHECK( value.HasKey( "release-policy") );
892 DALI_TEST_EQUALS( value.GetValue( "release-policy" ).Get< std::string >(), "NEVER", TEST_LOCATION );
893 DALI_TEST_CHECK( value.HasKey( "scaling-mode") );
894 DALI_TEST_EQUALS( value.GetValue( "scaling-mode" ).Get< std::string >(), "SHRINK_TO_FIT", TEST_LOCATION );
895 DALI_TEST_CHECK( !value.HasKey( "width" ) );
896 DALI_TEST_CHECK( !value.HasKey( "height" ) );
901 ImageAttributes attributes;
902 attributes.SetScalingMode( ImageAttributes::FitWidth );
903 attributes.SetSize( 300, 400 );
904 Image image = ResourceImage::New( "MY_PATH", attributes, ResourceImage::ON_DEMAND, Image::UNUSED );
907 CreatePropertyMap( image, map );
908 DALI_TEST_CHECK( !map.Empty() );
910 Property::Value value( map );
911 DALI_TEST_CHECK( value.HasKey( "type" ) );
912 DALI_TEST_EQUALS( value.GetValue( "type" ).Get< std::string >(), "ResourceImage", TEST_LOCATION );
913 DALI_TEST_CHECK( value.HasKey( "filename" ) );
914 DALI_TEST_EQUALS( value.GetValue( "filename" ).Get< std::string >(), "MY_PATH", TEST_LOCATION );
915 DALI_TEST_CHECK( value.HasKey( "load-policy") );
916 DALI_TEST_EQUALS( value.GetValue( "load-policy" ).Get< std::string >(), "ON_DEMAND", TEST_LOCATION );
917 DALI_TEST_CHECK( value.HasKey( "release-policy") );
918 DALI_TEST_EQUALS( value.GetValue( "release-policy" ).Get< std::string >(), "UNUSED", TEST_LOCATION );
919 DALI_TEST_CHECK( value.HasKey( "scaling-mode") );
920 DALI_TEST_EQUALS( value.GetValue( "scaling-mode" ).Get< std::string >(), "FIT_WIDTH", TEST_LOCATION );
921 DALI_TEST_CHECK( value.HasKey( "width" ) );
922 DALI_TEST_EQUALS( value.GetValue( "width" ).Get< int >(), 300, TEST_LOCATION );
923 DALI_TEST_CHECK( value.HasKey( "height" ) );
924 DALI_TEST_EQUALS( value.GetValue( "height" ).Get< int >(), 400, TEST_LOCATION );
929 Image image = BufferImage::New( 200, 300, Pixel::A8 );
931 CreatePropertyMap( image, map );
932 Property::Value value( map );
933 DALI_TEST_CHECK( value.HasKey( "type" ) );
934 DALI_TEST_EQUALS( value.GetValue( "type" ).Get< std::string >(), "BufferImage", TEST_LOCATION );
935 DALI_TEST_CHECK( value.HasKey( "pixel-format") );
936 DALI_TEST_EQUALS( value.GetValue( "pixel-format" ).Get< std::string >(), "A8", TEST_LOCATION );
941 Image image = FrameBufferImage::New( 200, 300, Pixel::RGBA8888 );
943 CreatePropertyMap( image, map );
944 Property::Value value( map );
945 DALI_TEST_CHECK( value.HasKey( "type" ) );
946 DALI_TEST_EQUALS( value.GetValue( "type" ).Get< std::string >(), "FrameBufferImage", TEST_LOCATION );
951 int UtcDaliScriptingGetEnumerationTemplates(void)
953 TestApplication application;
955 const Scripting::StringEnum< int > myTable[] =
963 const unsigned int myTableCount = sizeof( myTable ) / sizeof( myTable[0] );
965 for ( unsigned int i = 0; i < myTableCount; ++i )
967 tet_printf("Checking: %s\n", myTable[ i ].string );
968 DALI_TEST_EQUALS( myTable[ i ].value, GetEnumeration( myTable[ i ].string, myTable, myTableCount ), TEST_LOCATION );
971 for ( unsigned int i = 0; i < myTableCount; ++i )
973 tet_printf("Checking: %d\n", myTable[ i ].value );
974 DALI_TEST_EQUALS( myTable[ i ].string, GetEnumerationName( myTable[ i ].value, myTable, myTableCount ), TEST_LOCATION );
980 int UtcDaliScriptingCompareEnums(void)
983 DALI_TEST_CHECK( CompareEnums( "", "" ) );
984 DALI_TEST_CHECK( CompareEnums( "HELLO", "HELLO" ) );
985 DALI_TEST_CHECK( CompareEnums( "HELLO", "hello" ) );
986 DALI_TEST_CHECK( CompareEnums( "hello", "HELLO" ) );
987 DALI_TEST_CHECK( CompareEnums( "hello-world", "HELLO_WORLD" ) );
988 DALI_TEST_CHECK( CompareEnums( "hello_WORLD", "HELLO-world" ) );
989 DALI_TEST_CHECK( CompareEnums( "hello_WORLD-", "HELLO-world_" ) );
990 DALI_TEST_CHECK( CompareEnums( "_hello_WORLD-", "-HELLO-world_" ) );
991 DALI_TEST_CHECK( CompareEnums( "-hello_WORLD-", "_HELLO-world_" ) );
992 DALI_TEST_CHECK( CompareEnums( "hello123", "HELLO123" ) );
995 DALI_TEST_CHECK( ! CompareEnums( "hello", "HELLOWORLD" ) );