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 Image loading parameters
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 //////////////////////////////////////////////////////////////////////////////
101 // Helpers for string to enum comparisons for Actor to Property::Map
102 //////////////////////////////////////////////////////////////////////////////
105 * Template to check enumerations of type T
107 template< typename T >
108 void TestEnumStrings(
109 const char * const keyName, // The name of the key to check
110 TestApplication& application, // Reference to the application class
111 const StringEnum< int >* values, // An array of string values
112 unsigned int num, // Number of items in the array
113 void ( Actor::*method )( T ) // The Actor member method to set the enumeration
116 for ( unsigned int i = 0; i < num; ++i )
118 tet_printf("Checking: %s: %s\n", keyName, values[i].string );
120 Actor actor = Actor::New();
121 (actor.*method)( ( T ) values[i].value );
123 Stage::GetCurrent().Add( actor );
124 application.SendNotification();
125 application.Render();
128 CreatePropertyMap( actor, map );
130 DALI_TEST_CHECK( map.Count() );
131 Property::Value value( map );
132 DALI_TEST_CHECK( value.HasKey( keyName ) );
133 DALI_TEST_EQUALS( value.GetValue( keyName ).Get< std::string >(), values[i].string, TEST_LOCATION );
135 Stage::GetCurrent().Remove( actor );
139 //////////////////////////////////////////////////////////////////////////////
146 int UtcDaliScriptingGetColorMode(void)
148 TestApplication application;
150 for ( unsigned int i = 0; i < COLOR_MODE_VALUES_COUNT; ++i )
152 tet_printf( "Checking %s == %d\n", COLOR_MODE_VALUES[i].string, COLOR_MODE_VALUES[i].value );
153 DALI_TEST_EQUALS( COLOR_MODE_VALUES[i].value, GetColorMode( COLOR_MODE_VALUES[i].string ), TEST_LOCATION );
154 DALI_TEST_EQUALS( COLOR_MODE_VALUES[i].string, GetColorMode( (ColorMode) COLOR_MODE_VALUES[i].value ), TEST_LOCATION );
159 (void)GetColorMode("INVALID_ARG");
160 tet_result( TET_FAIL );
162 catch ( DaliException& e )
164 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
169 int UtcDaliScriptingGetPositionInheritanceMode(void)
171 TestApplication application;
173 for ( unsigned int i = 0; i < POSITION_INHERITANCE_MODE_VALUES_COUNT; ++i )
175 tet_printf( "Checking %s == %d\n", POSITION_INHERITANCE_MODE_VALUES[i].string, POSITION_INHERITANCE_MODE_VALUES[i].value );
176 DALI_TEST_EQUALS( POSITION_INHERITANCE_MODE_VALUES[i].value, GetPositionInheritanceMode( POSITION_INHERITANCE_MODE_VALUES[i].string ), TEST_LOCATION );
177 DALI_TEST_EQUALS( POSITION_INHERITANCE_MODE_VALUES[i].string, GetPositionInheritanceMode( (PositionInheritanceMode) POSITION_INHERITANCE_MODE_VALUES[i].value ), TEST_LOCATION );
182 (void)GetPositionInheritanceMode("INVALID_ARG");
183 tet_result( TET_FAIL );
185 catch ( DaliException& e )
187 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
193 int UtcDaliScriptingGetDrawMode(void)
195 TestApplication application;
197 for ( unsigned int i = 0; i < DRAW_MODE_VALUES_COUNT; ++i )
199 tet_printf( "Checking %s == %d\n", DRAW_MODE_VALUES[i].string, DRAW_MODE_VALUES[i].value );
200 DALI_TEST_EQUALS( DRAW_MODE_VALUES[i].value, GetDrawMode( DRAW_MODE_VALUES[i].string ), TEST_LOCATION );
201 DALI_TEST_EQUALS( DRAW_MODE_VALUES[i].string, GetDrawMode( (DrawMode::Type) DRAW_MODE_VALUES[i].value ), TEST_LOCATION );
206 (void)GetDrawMode("INVALID_ARG");
207 tet_result( TET_FAIL );
209 catch ( DaliException& e )
211 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
216 int UtcDaliScriptingGetAnchorConstant(void)
218 TestApplication application;
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 );
232 (void)GetAnchorConstant("INVALID_ARG");
233 tet_result( TET_FAIL );
235 catch ( DaliException& e )
237 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
242 int UtcDaliScriptingNewImageNegative(void)
244 TestApplication application;
250 map[ "filename" ] = Vector3::ZERO;
251 Image image = NewImage( map );
252 tet_result( TET_FAIL );
254 catch ( DaliException& e )
256 DALI_TEST_ASSERT( e, "map.GetValue(field).GetType()", TEST_LOCATION );
259 // Invalid load-policy
263 map[ "load-policy" ] = Vector3::ZERO;
264 Image image = NewImage( map );
265 tet_result( TET_FAIL );
267 catch ( DaliException& e )
269 DALI_TEST_ASSERT( e, "map.GetValue(field).GetType()", TEST_LOCATION );
275 map[ "load-policy" ] = "INVALID";
276 Image image = NewImage( map );
277 tet_result( TET_FAIL );
279 catch ( DaliException& e )
281 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
285 // Invalid release-policy
289 map[ "release-policy" ] = Vector3::ZERO;
290 Image image = NewImage( map );
291 tet_result( TET_FAIL );
293 catch ( DaliException& e )
295 DALI_TEST_ASSERT( e, "map.GetValue(field).GetType()", TEST_LOCATION );
301 map[ "release-policy" ] = "INVALID";
302 Image image = NewImage( map );
303 tet_result( TET_FAIL );
305 catch ( DaliException& e )
307 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
315 map[ "width" ] = "Invalid";
316 map[ "height" ] = "Invalid";
317 Image image = NewImage( map );
318 tet_result( TET_FAIL );
320 catch ( DaliException& e )
322 DALI_TEST_ASSERT( e, "value.GetType()", TEST_LOCATION );
330 map[ "height" ] = "Invalid";
331 Image image = NewImage( map );
332 tet_result( TET_FAIL );
334 catch ( DaliException& e )
336 DALI_TEST_ASSERT( e, "value.GetType()", TEST_LOCATION );
339 // Invalid fitting-mode
343 map[ "fitting-mode" ] = Vector3::ZERO;
344 Image image = NewImage( map );
345 DALI_TEST_EQUALS( "Expected exception to be thrown", "But exception was not thrown", TEST_LOCATION );
347 catch ( DaliException& e )
349 DALI_TEST_ASSERT( e, "value.GetType() == Property::STRING", TEST_LOCATION );
355 map[ "fitting-mode" ] = "INVALID";
356 Image image = NewImage( map );
357 DALI_TEST_EQUALS( "Expected exception to be thrown", "But exception was not thrown", TEST_LOCATION );
359 catch ( DaliException& e )
361 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
365 // Invalid scaling-mode
369 map[ "sampling-mode" ] = Vector3::ZERO;
370 Image image = NewImage( map );
371 DALI_TEST_EQUALS( "Expected exception to be thrown", "But exception was not thrown", TEST_LOCATION );
373 catch ( DaliException& e )
375 DALI_TEST_ASSERT( e, "value.GetType() == Property::STRING", TEST_LOCATION );
381 map[ "sampling-mode" ] = "INVALID";
382 Image image = NewImage( map );
383 DALI_TEST_EQUALS( "Expected exception to be thrown", "But exception was not thrown", TEST_LOCATION );
385 catch ( DaliException& e )
387 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
391 // Invalid orientation-correction
395 map[ "orientation" ] = Vector3::ZERO;
396 Image image = NewImage( map );
397 DALI_TEST_EQUALS( "Expected exception to be thrown", "But exception was not thrown", TEST_LOCATION );
399 catch ( DaliException& e )
401 DALI_TEST_ASSERT( e, "value.GetType() == Property::BOOLEAN", TEST_LOCATION );
408 map[ "type" ] = Vector3::ZERO;
409 Image image = NewImage( map );
410 tet_result( TET_FAIL );
412 catch ( DaliException& e )
414 DALI_TEST_ASSERT( e, "map.GetValue(\"type\").GetType()", TEST_LOCATION );
420 map[ "type" ] = "INVALID";
421 Image image = NewImage( map );
422 tet_result( TET_FAIL );
424 catch ( DaliException& e )
426 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
430 // Invalid pixel-format
434 map[ "pixel-format" ] = Vector3::ZERO;
435 Image image = NewImage( map );
436 tet_result( TET_FAIL );
438 catch ( DaliException& e )
440 DALI_TEST_ASSERT( e, "map.GetValue(field).GetType()", TEST_LOCATION );
446 map[ "pixel-format" ] = "INVALID";
447 Image image = NewImage( map );
448 tet_result( TET_FAIL );
450 catch ( DaliException& e )
452 DALI_TEST_ASSERT( e, "!\"Unknown", TEST_LOCATION );
460 int UtcDaliScriptingNewImage(void)
462 TestApplication application;
465 map[ "filename" ] = "TEST_FILE";
469 ResourceImage image = ResourceImage::DownCast( NewImage( map ) );
470 DALI_TEST_EQUALS( "TEST_FILE", image.GetUrl(), TEST_LOCATION );
474 map[ "load-policy" ] = "";
476 const StringEnum< int > values[] =
478 { "IMMEDIATE", ResourceImage::IMMEDIATE },
479 { "ON_DEMAND", ResourceImage::ON_DEMAND }
481 TestEnumStrings< ResourceImage::LoadPolicy, ResourceImage >( map, values, ( sizeof( values ) / sizeof ( values[0] ) ), &ResourceImage::GetLoadPolicy, &NewResourceImage );
485 map[ "release-policy" ] = "";
487 const StringEnum< int > values[] =
489 { "UNUSED", Image::UNUSED },
490 { "NEVER", Image::NEVER }
492 TestEnumStrings< Image::ReleasePolicy, Image >( map, values, ( sizeof( values ) / sizeof ( values[0] ) ), &Image::GetReleasePolicy, &NewImage );
495 // float width and height
496 map[ "width" ] = (float) 10.0f;
497 map[ "height" ] = (float) 20.0f;
499 Image image = NewImage( map );
500 DALI_TEST_EQUALS( image.GetWidth(), 10.0f, TEST_LOCATION );
501 DALI_TEST_EQUALS( image.GetHeight(), 20.0f, TEST_LOCATION );
504 // int width and height
505 map[ "width"] = (int) 50;
506 map[ "height" ] = (int) 70;
508 Image image = NewImage( map );
509 DALI_TEST_EQUALS( image.GetWidth(), 50u, TEST_LOCATION );
510 DALI_TEST_EQUALS( image.GetHeight(), 70u, TEST_LOCATION );
513 //map.erase( map.end() - 2, map.end() );
515 // type FrameBufferImage
516 map[ "type" ] = "FrameBufferImage";
518 Image image = NewImage( map );
519 DALI_TEST_CHECK( FrameBufferImage::DownCast( image ) );
522 map[ "type" ] = "BufferImage";
524 Image image = NewImage( map );
525 DALI_TEST_CHECK( BufferImage::DownCast( image ) );
526 DALI_TEST_CHECK((BufferImage::DownCast( image )).GetPixelFormat()== Pixel::RGBA8888);
530 map[ "pixel-format" ] = "";
532 const StringEnum< int > values[] =
536 { "LA88", Pixel::LA88 },
537 { "RGB565", Pixel::RGB565 },
538 { "BGR565", Pixel::BGR565 },
539 { "RGBA4444", Pixel::RGBA4444 },
540 { "BGRA4444", Pixel::BGRA4444 },
541 { "RGBA5551", Pixel::RGBA5551 },
542 { "BGRA5551", Pixel::BGRA5551 },
543 { "RGB888", Pixel::RGB888 },
544 { "RGB8888", Pixel::RGB8888 },
545 { "BGR8888", Pixel::BGR8888 },
546 { "RGBA8888", Pixel::RGBA8888 },
547 { "BGRA8888", Pixel::BGRA8888 },
548 /*{ "COMPRESSED_R11_EAC", Pixel::COMPRESSED_R11_EAC },
549 { "COMPRESSED_SIGNED_R11_EAC", Pixel::COMPRESSED_SIGNED_R11_EAC },
550 { "COMPRESSED_RG11_EAC", Pixel::COMPRESSED_RG11_EAC },
551 { "COMPRESSED_SIGNED_RG11_EAC", Pixel::COMPRESSED_SIGNED_RG11_EAC },
552 { "COMPRESSED_RGB8_ETC2", Pixel::COMPRESSED_RGB8_ETC2 },
553 { "COMPRESSED_SRGB8_ETC2", Pixel::COMPRESSED_SRGB8_ETC2 },
554 { "COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2", Pixel::COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 },
555 { "COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2", Pixel::COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 },
556 { "COMPRESSED_RGBA8_ETC2_EAC", Pixel::COMPRESSED_RGBA8_ETC2_EAC },
557 { "COMPRESSED_SRGB8_ALPHA8_ETC2_EAC", Pixel::COMPRESSED_SRGB8_ALPHA8_ETC2_EAC },
558 { "COMPRESSED_RGB8_ETC1", Pixel::COMPRESSED_RGB8_ETC1 },
559 { "COMPRESSED_RGB_PVRTC_4BPPV1", Pixel::COMPRESSED_RGB_PVRTC_4BPPV1 },*/
560 // BufferImage does not support compressed formats
563 TestEnumStrings< Pixel::Format, BufferImage >( map, values, ( sizeof( values ) / sizeof ( values[0] ) ), &BufferImage::GetPixelFormat, &NewBufferImage );
567 map[ "type" ] = "ResourceImage";
569 Image image = NewImage( map );
570 DALI_TEST_CHECK( ResourceImage::DownCast( image ) );
571 DALI_TEST_CHECK( !FrameBufferImage::DownCast( image ) );
572 DALI_TEST_CHECK( !BufferImage::DownCast( image ) );
577 int UtcDaliScriptingNewShaderEffect(void)
579 TestApplication application;
581 Property::Map programMap;
582 programMap[ "vertex-filename" ] = "bump.vert";
583 programMap[ "fragment-filename" ] = "bump.frag";
585 Property::Map imageMap;
586 imageMap[ "filename" ] = "image.png";
589 map[ "image" ] = imageMap;
590 map[ "program" ] = programMap;
591 map[ "uLightPosition" ] = Vector3( 0.0, 0.0, -1.5);
592 map[ "uAmbientLight" ] = (int)10;
594 ShaderEffect shader = NewShaderEffect( map );
596 DALI_TEST_CHECK( shader );
600 int UtcDaliScriptingNewActorNegative(void)
602 TestApplication application;
606 Actor handle = NewActor( Property::Map() );
607 DALI_TEST_CHECK( !handle );
610 // Map with only properties
613 map[ "parent-origin" ] = ParentOrigin::TOP_CENTER;
614 map[ "anchor-point" ] = AnchorPoint::TOP_CENTER;
615 Actor handle = NewActor( map );
616 DALI_TEST_CHECK( !handle );
619 // Add some signals to the map, we should have no signal connections as its not yet supported
622 map[ "type" ] = "Actor";
623 map[ "signals" ] = Property::MAP;
624 Actor handle = NewActor( map );
625 DALI_TEST_CHECK( handle );
626 DALI_TEST_CHECK( !handle.MouseWheelEventSignal().GetConnectionCount() );
627 DALI_TEST_CHECK( !handle.OffStageSignal().GetConnectionCount() );
628 DALI_TEST_CHECK( !handle.OnStageSignal().GetConnectionCount() );
629 DALI_TEST_CHECK( !handle.TouchedSignal().GetConnectionCount() );
634 int UtcDaliScriptingNewActorProperties(void)
636 TestApplication application;
639 map[ "type" ] = "Actor";
640 map[ "size" ] = Vector3::ONE;
641 map[ "position" ] = Vector3::XAXIS;
642 map[ "scale" ] = Vector3::ONE;
643 map[ "visible" ] = false;
644 map[ "color" ] = Color::MAGENTA;
645 map[ "name" ] = "MyActor";
646 map[ "color-mode" ] = "USE_PARENT_COLOR";
647 map[ "inherit-shader-effect" ] = false;
648 map[ "sensitive" ] = false;
649 map[ "leave-required" ] = true;
650 map[ "position-inheritance" ] = "DONT_INHERIT_POSITION";
651 map[ "draw-mode" ] = "STENCIL";
652 map[ "inherit-orientation" ] = false;
653 map[ "inherit-scale" ] = false;
655 // Default properties
657 Actor handle = NewActor( map );
658 DALI_TEST_CHECK( handle );
660 Stage::GetCurrent().Add( handle );
661 application.SendNotification();
662 application.Render();
664 DALI_TEST_EQUALS( handle.GetCurrentSize(), Vector3::ONE, TEST_LOCATION );
665 DALI_TEST_EQUALS( handle.GetCurrentPosition(), Vector3::XAXIS, TEST_LOCATION );
666 DALI_TEST_EQUALS( handle.GetCurrentScale(), Vector3::ONE, TEST_LOCATION );
667 DALI_TEST_EQUALS( handle.IsVisible(), false, TEST_LOCATION );
668 DALI_TEST_EQUALS( handle.GetCurrentColor(), Color::MAGENTA, TEST_LOCATION );
669 DALI_TEST_EQUALS( handle.GetName(), "MyActor", TEST_LOCATION );
670 DALI_TEST_EQUALS( handle.GetColorMode(), USE_PARENT_COLOR, TEST_LOCATION );
671 DALI_TEST_EQUALS( handle.IsSensitive(), false, TEST_LOCATION );
672 DALI_TEST_EQUALS( handle.GetLeaveRequired(), true, TEST_LOCATION );
673 DALI_TEST_EQUALS( handle.GetPositionInheritanceMode(), DONT_INHERIT_POSITION, TEST_LOCATION );
674 DALI_TEST_EQUALS( handle.GetDrawMode(), DrawMode::STENCIL, TEST_LOCATION );
675 DALI_TEST_EQUALS( handle.IsOrientationInherited(), false, TEST_LOCATION );
676 DALI_TEST_EQUALS( handle.IsScaleInherited(), false, TEST_LOCATION );
678 Stage::GetCurrent().Remove( handle );
681 // Check Anchor point and parent origin vector3s
682 map[ "parent-origin" ] = ParentOrigin::TOP_CENTER;
683 map[ "anchor-point" ] = AnchorPoint::TOP_LEFT;
685 Actor handle = NewActor( map );
686 DALI_TEST_CHECK( handle );
688 Stage::GetCurrent().Add( handle );
689 application.SendNotification();
690 application.Render();
692 DALI_TEST_EQUALS( handle.GetCurrentParentOrigin(), ParentOrigin::TOP_CENTER, TEST_LOCATION );
693 DALI_TEST_EQUALS( handle.GetCurrentAnchorPoint(), AnchorPoint::TOP_LEFT, TEST_LOCATION );
695 Stage::GetCurrent().Remove( handle );
698 // Check Anchor point and parent origin STRINGS
699 map[ "parent-origin" ] = "TOP_LEFT";
700 map[ "anchor-point" ] = "CENTER_LEFT";
702 Actor handle = NewActor( map );
703 DALI_TEST_CHECK( handle );
705 Stage::GetCurrent().Add( handle );
706 application.SendNotification();
707 application.Render();
709 DALI_TEST_EQUALS( handle.GetCurrentParentOrigin(), ParentOrigin::TOP_LEFT, TEST_LOCATION );
710 DALI_TEST_EQUALS( handle.GetCurrentAnchorPoint(), AnchorPoint::CENTER_LEFT, TEST_LOCATION );
712 Stage::GetCurrent().Remove( handle );
717 int UtcDaliScriptingNewActorChildren(void)
719 TestApplication application;
722 map[ "type" ] = "Actor";
723 map[ "position" ] = Vector3::XAXIS;
725 Property::Map child1Map;
726 child1Map[ "type" ] = "ImageActor";
727 child1Map[ "position" ] = Vector3::YAXIS;
729 Property::Array childArray;
730 childArray.push_back( child1Map );
731 map[ "actors" ] = childArray;
734 Actor handle = NewActor( map );
735 DALI_TEST_CHECK( handle );
737 Stage::GetCurrent().Add( handle );
738 application.SendNotification();
739 application.Render();
741 DALI_TEST_EQUALS( handle.GetCurrentPosition(), Vector3::XAXIS, TEST_LOCATION );
742 DALI_TEST_EQUALS( handle.GetChildCount(), 1u, TEST_LOCATION );
744 Actor child1 = handle.GetChildAt(0);
745 DALI_TEST_CHECK( child1 );
746 DALI_TEST_CHECK( ImageActor::DownCast( child1 ) );
747 DALI_TEST_EQUALS( child1.GetCurrentPosition(), Vector3::YAXIS, TEST_LOCATION );
748 DALI_TEST_EQUALS( child1.GetChildCount(), 0u, TEST_LOCATION );
750 Stage::GetCurrent().Remove( handle );
755 int UtcDaliScriptingCreatePropertyMapActor(void)
757 TestApplication application;
761 Actor actor = Actor::New();
764 CreatePropertyMap( actor, map );
765 DALI_TEST_CHECK( !map.Empty() );
766 Property::Value value( map );
767 DALI_TEST_CHECK( value.HasKey( "type" ) );
768 DALI_TEST_EQUALS( value.GetValue( "type").Get< std::string >(), "Actor", TEST_LOCATION );
770 Stage::GetCurrent().Remove( actor );
775 Actor actor = ImageActor::New();
778 CreatePropertyMap( actor, map );
779 DALI_TEST_CHECK( !map.Empty() );
780 Property::Value value( map );
781 DALI_TEST_CHECK( value.HasKey( "type" ) );
782 DALI_TEST_EQUALS( value.GetValue( "type").Get< std::string >(), "ImageActor", TEST_LOCATION );
784 Stage::GetCurrent().Remove( actor );
787 // Default properties
789 Actor actor = Actor::New();
790 actor.SetSize( Vector3::ONE );
791 actor.SetPosition( Vector3::XAXIS );
792 actor.SetScale( Vector3::ZAXIS );
793 actor.SetVisible( false );
794 actor.SetColor( Color::MAGENTA );
795 actor.SetName( "MyActor" );
796 actor.SetAnchorPoint( AnchorPoint::CENTER_LEFT );
797 actor.SetParentOrigin( ParentOrigin::TOP_RIGHT );
798 actor.SetSensitive( false );
799 actor.SetLeaveRequired( true );
800 actor.SetInheritOrientation( false );
801 actor.SetInheritScale( false );
802 actor.SetSizeModeFactor( Vector3::ONE );
804 Stage::GetCurrent().Add( actor );
805 application.SendNotification();
806 application.Render();
809 CreatePropertyMap( actor, map );
811 DALI_TEST_CHECK( !map.Empty() );
812 Property::Value value( map );
813 DALI_TEST_CHECK( value.HasKey( "size" ) );
814 DALI_TEST_EQUALS( value.GetValue( "size" ).Get< Vector3 >(), Vector3::ONE, TEST_LOCATION );
815 DALI_TEST_CHECK( value.HasKey( "position" ) );
816 DALI_TEST_EQUALS( value.GetValue( "position" ).Get< Vector3 >(), Vector3::XAXIS, TEST_LOCATION );
817 DALI_TEST_CHECK( value.HasKey( "scale" ) );
818 DALI_TEST_EQUALS( value.GetValue( "scale" ).Get< Vector3 >(), Vector3::ZAXIS, TEST_LOCATION );
819 DALI_TEST_CHECK( value.HasKey( "visible" ) );
820 DALI_TEST_EQUALS( value.GetValue( "visible" ).Get< bool >(), false, TEST_LOCATION );
821 DALI_TEST_CHECK( value.HasKey( "color" ) );
822 DALI_TEST_EQUALS( value.GetValue( "color" ).Get< Vector4 >(), Color::MAGENTA, TEST_LOCATION );
823 DALI_TEST_CHECK( value.HasKey( "name" ) );
824 DALI_TEST_EQUALS( value.GetValue( "name").Get< std::string >(), "MyActor", TEST_LOCATION );
825 DALI_TEST_CHECK( value.HasKey( "anchor-point" ) );
826 DALI_TEST_EQUALS( value.GetValue( "anchor-point" ).Get< Vector3 >(), AnchorPoint::CENTER_LEFT, TEST_LOCATION );
827 DALI_TEST_CHECK( value.HasKey( "parent-origin" ) );
828 DALI_TEST_EQUALS( value.GetValue( "parent-origin" ).Get< Vector3 >(), ParentOrigin::TOP_RIGHT, TEST_LOCATION );
829 DALI_TEST_CHECK( value.HasKey( "sensitive" ) );
830 DALI_TEST_EQUALS( value.GetValue( "sensitive" ).Get< bool >(), false, TEST_LOCATION );
831 DALI_TEST_CHECK( value.HasKey( "leave-required" ) );
832 DALI_TEST_EQUALS( value.GetValue( "leave-required" ).Get< bool >(), true, TEST_LOCATION );
833 DALI_TEST_CHECK( value.HasKey( "inherit-orientation" ) );
834 DALI_TEST_EQUALS( value.GetValue( "inherit-orientation" ).Get< bool >(), false, TEST_LOCATION );
835 DALI_TEST_CHECK( value.HasKey( "inherit-scale" ) );
836 DALI_TEST_EQUALS( value.GetValue( "inherit-scale" ).Get< bool >(), false, TEST_LOCATION );
837 DALI_TEST_CHECK( value.HasKey( "size-mode-factor" ) );
838 DALI_TEST_EQUALS( value.GetValue( "size-mode-factor" ).Get< Vector3 >(), Vector3::ONE, TEST_LOCATION );
840 Stage::GetCurrent().Remove( actor );
844 TestEnumStrings< ColorMode >( "color-mode", application, COLOR_MODE_VALUES, COLOR_MODE_VALUES_COUNT, &Actor::SetColorMode );
846 // PositionInheritanceMode
847 TestEnumStrings< PositionInheritanceMode >( "position-inheritance", application, POSITION_INHERITANCE_MODE_VALUES, POSITION_INHERITANCE_MODE_VALUES_COUNT, &Actor::SetPositionInheritanceMode );
850 TestEnumStrings< DrawMode::Type >( "draw-mode", application, DRAW_MODE_VALUES, DRAW_MODE_VALUES_COUNT, &Actor::SetDrawMode );
854 Actor actor = Actor::New();
855 Actor child = ImageActor::New();
858 Stage::GetCurrent().Add( actor );
859 application.SendNotification();
860 application.Render();
863 CreatePropertyMap( actor, map );
864 DALI_TEST_CHECK( !map.Empty() );
866 Property::Value value( map );
867 DALI_TEST_CHECK( value.HasKey( "type" ) );
868 DALI_TEST_EQUALS( value.GetValue( "type" ).Get< std::string >(), "Actor", TEST_LOCATION );
870 DALI_TEST_CHECK( value.HasKey( "actors" ) );
871 Property::Array children( value.GetValue( "actors").Get< Property::Array >() );
872 DALI_TEST_CHECK( !children.empty() );
873 Property::Map childMap( children[0].Get< Property::Map >() );
874 DALI_TEST_CHECK( !childMap.Empty() );
875 Property::Value childValue( childMap );
876 DALI_TEST_CHECK( childValue.HasKey( "type" ) );
877 DALI_TEST_EQUALS( childValue.GetValue( "type" ).Get< std::string >(), "ImageActor", TEST_LOCATION );
879 Stage::GetCurrent().Remove( actor );
884 int UtcDaliScriptingCreatePropertyMapImage(void)
886 TestApplication application;
892 CreatePropertyMap( image, map );
893 DALI_TEST_CHECK( map.Empty() );
898 Image image = ResourceImage::New( "MY_PATH" );
901 CreatePropertyMap( image, map );
902 DALI_TEST_CHECK( !map.Empty() );
904 Property::Value value( map );
905 DALI_TEST_CHECK( value.HasKey( "type" ) );
906 DALI_TEST_EQUALS( value.GetValue( "type" ).Get< std::string >(), "ResourceImage", TEST_LOCATION );
907 DALI_TEST_CHECK( value.HasKey( "filename" ) );
908 DALI_TEST_EQUALS( value.GetValue( "filename" ).Get< std::string >(), "MY_PATH", TEST_LOCATION );
909 DALI_TEST_CHECK( value.HasKey( "load-policy") );
910 DALI_TEST_EQUALS( value.GetValue( "load-policy" ).Get< std::string >(), "IMMEDIATE", TEST_LOCATION );
911 DALI_TEST_CHECK( value.HasKey( "release-policy") );
912 DALI_TEST_EQUALS( value.GetValue( "release-policy" ).Get< std::string >(), "NEVER", TEST_LOCATION );
913 DALI_TEST_CHECK( !value.HasKey( "width" ) );
914 DALI_TEST_CHECK( !value.HasKey( "height" ) );
919 ResourceImage image = ResourceImage::New( "MY_PATH", ResourceImage::ON_DEMAND, Image::UNUSED, ImageDimensions( 300, 400 ), FittingMode::FIT_WIDTH );
922 CreatePropertyMap( image, map );
923 DALI_TEST_CHECK( !map.Empty() );
925 Property::Value value( map );
926 DALI_TEST_CHECK( value.HasKey( "type" ) );
927 DALI_TEST_EQUALS( value.GetValue( "type" ).Get< std::string >(), "ResourceImage", TEST_LOCATION );
928 DALI_TEST_CHECK( value.HasKey( "filename" ) );
929 DALI_TEST_EQUALS( value.GetValue( "filename" ).Get< std::string >(), "MY_PATH", TEST_LOCATION );
930 DALI_TEST_CHECK( value.HasKey( "load-policy") );
931 DALI_TEST_EQUALS( value.GetValue( "load-policy" ).Get< std::string >(), "ON_DEMAND", TEST_LOCATION );
932 DALI_TEST_CHECK( value.HasKey( "release-policy") );
933 DALI_TEST_EQUALS( value.GetValue( "release-policy" ).Get< std::string >(), "UNUSED", TEST_LOCATION );
934 DALI_TEST_CHECK( value.HasKey( "width" ) );
935 DALI_TEST_EQUALS( value.GetValue( "width" ).Get< int >(), 300, TEST_LOCATION );
936 DALI_TEST_CHECK( value.HasKey( "height" ) );
937 DALI_TEST_EQUALS( value.GetValue( "height" ).Get< int >(), 400, TEST_LOCATION );
942 Image image = BufferImage::New( 200, 300, Pixel::A8 );
944 CreatePropertyMap( image, map );
945 Property::Value value( map );
946 DALI_TEST_CHECK( value.HasKey( "type" ) );
947 DALI_TEST_EQUALS( value.GetValue( "type" ).Get< std::string >(), "BufferImage", TEST_LOCATION );
948 DALI_TEST_CHECK( value.HasKey( "pixel-format") );
949 DALI_TEST_EQUALS( value.GetValue( "pixel-format" ).Get< std::string >(), "A8", TEST_LOCATION );
954 Image image = FrameBufferImage::New( 200, 300, Pixel::RGBA8888 );
956 CreatePropertyMap( image, map );
957 Property::Value value( map );
958 DALI_TEST_CHECK( value.HasKey( "type" ) );
959 DALI_TEST_EQUALS( value.GetValue( "type" ).Get< std::string >(), "FrameBufferImage", TEST_LOCATION );
964 int UtcDaliScriptingGetEnumerationTemplates(void)
966 TestApplication application;
968 const Scripting::StringEnum< int > myTable[] =
976 const unsigned int myTableCount = sizeof( myTable ) / sizeof( myTable[0] );
978 for ( unsigned int i = 0; i < myTableCount; ++i )
980 tet_printf("Checking: %s\n", myTable[ i ].string );
981 DALI_TEST_EQUALS( myTable[ i ].value, GetEnumeration( myTable[ i ].string, myTable, myTableCount ), TEST_LOCATION );
984 for ( unsigned int i = 0; i < myTableCount; ++i )
986 tet_printf("Checking: %d\n", myTable[ i ].value );
987 DALI_TEST_EQUALS( myTable[ i ].string, GetEnumerationName( myTable[ i ].value, myTable, myTableCount ), TEST_LOCATION );
993 int UtcDaliScriptingCompareEnums(void)
996 DALI_TEST_CHECK( CompareEnums( "", "" ) );
997 DALI_TEST_CHECK( CompareEnums( "HELLO", "HELLO" ) );
998 DALI_TEST_CHECK( CompareEnums( "HELLO", "hello" ) );
999 DALI_TEST_CHECK( CompareEnums( "hello", "HELLO" ) );
1000 DALI_TEST_CHECK( CompareEnums( "hello-world", "HELLO_WORLD" ) );
1001 DALI_TEST_CHECK( CompareEnums( "hello_WORLD", "HELLO-world" ) );
1002 DALI_TEST_CHECK( CompareEnums( "hello_WORLD-", "HELLO-world_" ) );
1003 DALI_TEST_CHECK( CompareEnums( "_hello_WORLD-", "-HELLO-world_" ) );
1004 DALI_TEST_CHECK( CompareEnums( "-hello_WORLD-", "_HELLO-world_" ) );
1005 DALI_TEST_CHECK( CompareEnums( "hello123", "HELLO123" ) );
1008 DALI_TEST_CHECK( ! CompareEnums( "hello", "HELLOWORLD" ) );