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/devel-api/scripting/scripting.h>
23 #include <dali-test-suite-utils.h>
26 using namespace Dali::Scripting;
31 const StringEnum COLOR_MODE_VALUES[] =
33 { "USE_OWN_COLOR", USE_OWN_COLOR },
34 { "USE_PARENT_COLOR", USE_PARENT_COLOR },
35 { "USE_OWN_MULTIPLY_PARENT_COLOR", USE_OWN_MULTIPLY_PARENT_COLOR },
36 { "USE_OWN_MULTIPLY_PARENT_ALPHA", USE_OWN_MULTIPLY_PARENT_ALPHA },
38 const unsigned int COLOR_MODE_VALUES_COUNT = sizeof( COLOR_MODE_VALUES ) / sizeof( COLOR_MODE_VALUES[0] );
40 const StringEnum POSITION_INHERITANCE_MODE_VALUES[] =
42 { "INHERIT_PARENT_POSITION", INHERIT_PARENT_POSITION },
43 { "USE_PARENT_POSITION", USE_PARENT_POSITION },
44 { "USE_PARENT_POSITION_PLUS_LOCAL_POSITION", USE_PARENT_POSITION_PLUS_LOCAL_POSITION },
45 { "DONT_INHERIT_POSITION", DONT_INHERIT_POSITION },
47 const unsigned int POSITION_INHERITANCE_MODE_VALUES_COUNT = sizeof( POSITION_INHERITANCE_MODE_VALUES ) / sizeof( POSITION_INHERITANCE_MODE_VALUES[0] );
49 const StringEnum DRAW_MODE_VALUES[] =
51 { "NORMAL", DrawMode::NORMAL },
52 { "OVERLAY", DrawMode::OVERLAY },
53 { "STENCIL", DrawMode::STENCIL },
55 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 Image loading parameters
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 char * const keyName, // the name of the key to iterate through
69 const StringEnum* values, // An array of string values
70 unsigned int num, // Number of items in the array
71 T ( X::*method )() const, // The member method of X to call to get the enum
72 X ( *creator ) ( const Property::Value& ) // The method which creates an instance of type X
75 // get the key reference so we can change its value
76 Property::Value* value = map.Find( keyName );
77 for ( unsigned int i = 0; i < num; ++i )
79 *value = values[i].string;
80 tet_printf("Checking: %s: %s\n", keyName, 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* 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( 0 < map.Count() );
131 DALI_TEST_CHECK( NULL != map.Find( keyName ) );
132 DALI_TEST_EQUALS( map.Find( keyName )->Get< std::string >(), values[i].string, TEST_LOCATION );
134 Stage::GetCurrent().Remove( actor );
138 //////////////////////////////////////////////////////////////////////////////
145 int UtcDaliScriptingGetColorMode(void)
147 for ( unsigned int i = 0; i < COLOR_MODE_VALUES_COUNT; ++i )
149 tet_printf( "Checking %s == %d\n", COLOR_MODE_VALUES[i].string, COLOR_MODE_VALUES[i].value );
150 DALI_TEST_EQUALS( COLOR_MODE_VALUES[i].value, GetColorMode( COLOR_MODE_VALUES[i].string ), TEST_LOCATION );
151 DALI_TEST_EQUALS( COLOR_MODE_VALUES[i].string, GetColorMode( (ColorMode) COLOR_MODE_VALUES[i].value ), TEST_LOCATION );
154 DALI_TEST_EQUALS( USE_OWN_MULTIPLY_PARENT_ALPHA, GetColorMode("INVALID_ARG"), TEST_LOCATION );
158 int UtcDaliScriptingGetPositionInheritanceMode(void)
160 for ( unsigned int i = 0; i < POSITION_INHERITANCE_MODE_VALUES_COUNT; ++i )
162 tet_printf( "Checking %s == %d\n", POSITION_INHERITANCE_MODE_VALUES[i].string, POSITION_INHERITANCE_MODE_VALUES[i].value );
163 DALI_TEST_EQUALS( POSITION_INHERITANCE_MODE_VALUES[i].value, GetPositionInheritanceMode( POSITION_INHERITANCE_MODE_VALUES[i].string ), TEST_LOCATION );
164 DALI_TEST_EQUALS( POSITION_INHERITANCE_MODE_VALUES[i].string, GetPositionInheritanceMode( (PositionInheritanceMode) POSITION_INHERITANCE_MODE_VALUES[i].value ), TEST_LOCATION );
167 DALI_TEST_EQUALS( POSITION_INHERITANCE_MODE_VALUES[0].value, GetPositionInheritanceMode("INVALID_ARG"), TEST_LOCATION );
172 int UtcDaliScriptingGetDrawMode(void)
174 for ( unsigned int i = 0; i < DRAW_MODE_VALUES_COUNT; ++i )
176 tet_printf( "Checking %s == %d\n", DRAW_MODE_VALUES[i].string, DRAW_MODE_VALUES[i].value );
177 DALI_TEST_EQUALS( DRAW_MODE_VALUES[i].value, GetDrawMode( DRAW_MODE_VALUES[i].string ), TEST_LOCATION );
178 DALI_TEST_EQUALS( DRAW_MODE_VALUES[i].string, GetDrawMode( (DrawMode::Type) DRAW_MODE_VALUES[i].value ), TEST_LOCATION );
181 DALI_TEST_EQUALS( DRAW_MODE_VALUES[0].value, GetDrawMode( "INVALID_ARG" ), TEST_LOCATION );
186 int UtcDaliScriptingGetAnchorConstant(void)
188 DALI_TEST_EQUALS( Dali::ParentOrigin::TOP_LEFT, GetAnchorConstant( "TOP_LEFT" ), TEST_LOCATION );
189 DALI_TEST_EQUALS( Dali::ParentOrigin::TOP_CENTER, GetAnchorConstant( "TOP_CENTER" ), TEST_LOCATION );
190 DALI_TEST_EQUALS( Dali::ParentOrigin::TOP_RIGHT, GetAnchorConstant( "TOP_RIGHT" ), TEST_LOCATION );
191 DALI_TEST_EQUALS( Dali::ParentOrigin::CENTER_LEFT, GetAnchorConstant( "CENTER_LEFT" ), TEST_LOCATION );
192 DALI_TEST_EQUALS( Dali::ParentOrigin::CENTER, GetAnchorConstant( "CENTER" ), TEST_LOCATION );
193 DALI_TEST_EQUALS( Dali::ParentOrigin::CENTER_RIGHT, GetAnchorConstant( "CENTER_RIGHT" ), TEST_LOCATION );
194 DALI_TEST_EQUALS( Dali::ParentOrigin::BOTTOM_LEFT, GetAnchorConstant( "BOTTOM_LEFT" ), TEST_LOCATION );
195 DALI_TEST_EQUALS( Dali::ParentOrigin::BOTTOM_CENTER, GetAnchorConstant( "BOTTOM_CENTER" ), TEST_LOCATION );
196 DALI_TEST_EQUALS( Dali::ParentOrigin::BOTTOM_RIGHT, GetAnchorConstant( "BOTTOM_RIGHT" ), TEST_LOCATION );
198 DALI_TEST_EQUALS( Vector3(), GetAnchorConstant("INVALID_ARG"), TEST_LOCATION );
202 int UtcDaliScriptingNewImageNegative01(void)
206 map[ "filename" ] = Vector3::ZERO;
207 // will give us an empty image handle
208 Image image = NewImage( map );
209 DALI_TEST_CHECK( !image );
213 int UtcDaliScriptingNewImageNegative02(void)
215 TestApplication application; // Image needs application
216 // Invalid load-policy value type
218 map[ "filename" ] = "TEST_FILE";
219 map[ "load-policy" ] = Vector3::ZERO;
220 // will give us a valid image handle with default load policy
221 Image image = NewImage( map );
222 DALI_TEST_CHECK( image );
223 ResourceImage resImage = ResourceImage::DownCast( image );
224 DALI_TEST_CHECK( resImage );
225 DALI_TEST_EQUALS( resImage.GetLoadPolicy(), ResourceImage::IMMEDIATE, TEST_LOCATION );
229 int UtcDaliScriptingNewImageNegative03(void)
231 TestApplication application; // Image needs application
232 // Invalid load-policy value
234 map[ "filename" ] = "TEST_FILE";
235 map[ "load-policy" ] = "INVALID";
236 // will give us a valid image with default load policy
237 Image image = NewImage( map );
238 DALI_TEST_CHECK( image );
239 ResourceImage resImage = ResourceImage::DownCast( image );
240 DALI_TEST_CHECK( resImage );
241 DALI_TEST_EQUALS( resImage.GetLoadPolicy(), ResourceImage::IMMEDIATE, TEST_LOCATION );
245 int UtcDaliScriptingNewImageNegative04(void)
247 TestApplication application; // Image needs application
248 // Invalid release-policy value type
250 map[ "filename" ] = "TEST_FILE";
251 map[ "release-policy" ] = Vector3::ZERO;
252 // will give us a valid image with default release policy
253 Image image = NewImage( map );
254 DALI_TEST_CHECK( image );
255 ResourceImage resImage = ResourceImage::DownCast( image );
256 DALI_TEST_CHECK( resImage );
257 DALI_TEST_EQUALS( resImage.GetReleasePolicy(), Image::NEVER, TEST_LOCATION );
261 int UtcDaliScriptingNewImageNegative05(void)
263 TestApplication application; // Image needs application
264 // Invalid release-policy value
266 map[ "filename" ] = "TEST_FILE";
267 map[ "release-policy" ] = "INVALID";
268 // will give us a valid image with default release policy
269 Image image = NewImage( map );
270 DALI_TEST_CHECK( image );
271 ResourceImage resImage = ResourceImage::DownCast( image );
272 DALI_TEST_CHECK( resImage );
273 DALI_TEST_EQUALS( resImage.GetReleasePolicy(), Image::NEVER, TEST_LOCATION );
277 int UtcDaliScriptingNewImageNegative06(void)
279 TestApplication application; // Image needs application
280 // Invalid width and height
282 map[ "filename" ] = "TEST_FILE";
283 map[ "width" ] = "Invalid";
284 map[ "height" ] = 100;
285 // will give us a valid image
286 Image image = NewImage( map );
287 DALI_TEST_CHECK( image );
288 ResourceImage resImage = ResourceImage::DownCast( image );
289 DALI_TEST_CHECK( resImage );
290 DALI_TEST_EQUALS( resImage.GetWidth(), 0, TEST_LOCATION );
291 DALI_TEST_EQUALS( resImage.GetHeight(), 100, TEST_LOCATION );
295 int UtcDaliScriptingNewImageNegative07(void)
297 TestApplication application; // Image needs application
300 map[ "filename" ] = "TEST_FILE";
302 map[ "height" ] = "Invalid";
303 // will give us a valid image
304 Image image = NewImage( map );
305 DALI_TEST_CHECK( image );
306 ResourceImage resImage = ResourceImage::DownCast( image );
307 DALI_TEST_CHECK( resImage );
308 DALI_TEST_EQUALS( resImage.GetWidth(), 10, TEST_LOCATION );
309 DALI_TEST_EQUALS( resImage.GetHeight(), 0, TEST_LOCATION );
313 int UtcDaliScriptingNewImageNegative08(void)
315 TestApplication application; // Image needs application
316 // Invalid fitting-mode
318 map[ "filename" ] = "TEST_FILE";
319 map[ "fitting-mode" ] = Vector3::ZERO;
320 // will give us a valid image
321 Image image = NewImage( map );
322 DALI_TEST_CHECK( image );
323 ResourceImage resImage = ResourceImage::DownCast( image );
324 DALI_TEST_CHECK( resImage );
328 int UtcDaliScriptingNewImageNegative09(void)
330 TestApplication application; // Image needs application
333 map[ "filename" ] = "TEST_FILE";
334 map[ "fitting-mode" ] = "INVALID";
335 // will give us a valid image
336 Image image = NewImage( map );
337 DALI_TEST_CHECK( image );
338 ResourceImage resImage = ResourceImage::DownCast( image );
339 DALI_TEST_CHECK( resImage );
343 int UtcDaliScriptingNewImageNegative10(void)
345 TestApplication application; // Image needs application
346 // Invalid scaling-mode
348 map[ "filename" ] = "TEST_FILE";
349 map[ "sampling-mode" ] = Vector3::ZERO;
350 // will give us a valid image
351 Image image = NewImage( map );
352 DALI_TEST_CHECK( image );
353 ResourceImage resImage = ResourceImage::DownCast( image );
354 DALI_TEST_CHECK( resImage );
358 int UtcDaliScriptingNewImageNegative12(void)
360 TestApplication application; // Image needs application
361 // Invalid orientation-correction
363 map[ "filename" ] = "TEST_FILE";
364 map[ "orientation" ] = Vector3::ZERO;
365 // will give us a valid image
366 Image image = NewImage( map );
367 DALI_TEST_CHECK( image );
368 ResourceImage resImage = ResourceImage::DownCast( image );
369 DALI_TEST_CHECK( resImage );
373 int UtcDaliScriptingNewImageNegative13(void)
375 TestApplication application; // Image needs application
378 map[ "filename" ] = "TEST_FILE";
379 map[ "type" ] = Vector3::ZERO;
380 // will give us a valid image
381 Image image = NewImage( map );
382 DALI_TEST_CHECK( image );
383 ResourceImage resImage = ResourceImage::DownCast( image );
384 DALI_TEST_CHECK( resImage );
388 int UtcDaliScriptingNewImageNegative14(void)
392 map[ "type" ] = "INVALID";
393 Image image = NewImage( map );
394 DALI_TEST_CHECK( !image );
398 int UtcDaliScriptingNewImageNegative15(void)
400 // Invalid pixel-format
402 map[ "pixel-format" ] = Vector3::ZERO;
403 Image image = NewImage( map );
404 DALI_TEST_CHECK( !image );
408 int UtcDaliScriptingNewImageNegative16(void)
412 map[ "pixel-format" ] = "INVALID";
413 Image image = NewImage( map );
414 DALI_TEST_CHECK( !image );
418 int UtcDaliScriptingNewImage01P(void)
420 TestApplication application; // Image needs application
423 map[ "filename" ] = "TEST_FILE";
426 ResourceImage image = ResourceImage::DownCast( NewImage( map ) );
427 DALI_TEST_EQUALS( "TEST_FILE", image.GetUrl(), TEST_LOCATION );
431 int UtcDaliScriptingNewImage02P(void)
433 TestApplication application;
436 map[ "filename" ] = "TEST_FILE";
439 map[ "load-policy" ] = "";
440 const StringEnum values[] =
442 { "IMMEDIATE", ResourceImage::IMMEDIATE },
443 { "ON_DEMAND", ResourceImage::ON_DEMAND }
445 TestEnumStrings< ResourceImage::LoadPolicy, ResourceImage >( map, "load-policy", values, ( sizeof( values ) / sizeof ( values[0] ) ), &ResourceImage::GetLoadPolicy, &NewResourceImage );
449 int UtcDaliScriptingNewImage03P(void)
451 TestApplication application;
454 map[ "filename" ] = "TEST_FILE";
457 map[ "release-policy" ] = "";
458 const StringEnum values[] =
460 { "UNUSED", Image::UNUSED },
461 { "NEVER", Image::NEVER }
463 TestEnumStrings< Image::ReleasePolicy, Image >( map, "release-policy", values, ( sizeof( values ) / sizeof ( values[0] ) ), &Image::GetReleasePolicy, &NewImage );
467 int UtcDaliScriptingNewImage04P(void)
469 TestApplication application;
472 map[ "filename" ] = "TEST_FILE";
474 // float width and height
475 map[ "width" ] = (float) 10.0f;
476 map[ "height" ] = (float) 20.0f;
477 Image image = NewImage( map );
478 DALI_TEST_EQUALS( image.GetWidth(), 10.0f, TEST_LOCATION );
479 DALI_TEST_EQUALS( image.GetHeight(), 20.0f, TEST_LOCATION );
483 int UtcDaliScriptingNewImage05P(void)
485 TestApplication application;
488 map[ "filename" ] = "TEST_FILE";
492 map[ "height" ] = 70;
493 Image image = NewImage( map );
494 DALI_TEST_EQUALS( image.GetWidth(), 50u, TEST_LOCATION );
495 DALI_TEST_EQUALS( image.GetHeight(), 70u, TEST_LOCATION );
499 int UtcDaliScriptingNewImage06P(void)
501 TestApplication application;
504 // type FrameBufferImage
505 map[ "type" ] = "FrameBufferImage";
508 map[ "height" ] = 70;
509 Image image = NewImage( map );
510 DALI_TEST_CHECK( image );
511 DALI_TEST_CHECK( FrameBufferImage::DownCast( image ) );
515 int UtcDaliScriptingNewImage07P(void)
517 TestApplication application;
521 map[ "type" ] = "BufferImage";
524 map[ "height" ] = 70;
525 Image image = NewImage( map );
526 DALI_TEST_CHECK( image );
527 DALI_TEST_CHECK( BufferImage::DownCast( image ) );
528 DALI_TEST_EQUALS( (BufferImage::DownCast( image )).GetPixelFormat(), Pixel::RGBA8888, TEST_LOCATION );
532 int UtcDaliScriptingNewImage08P(void)
534 TestApplication application;
537 map[ "type" ] = "BufferImage";
540 map[ "height" ] = 99;
542 map[ "pixel-format" ] = "";
543 const StringEnum values[] =
547 { "LA88", Pixel::LA88 },
548 { "RGB565", Pixel::RGB565 },
549 { "BGR565", Pixel::BGR565 },
550 { "RGBA4444", Pixel::RGBA4444 },
551 { "BGRA4444", Pixel::BGRA4444 },
552 { "RGBA5551", Pixel::RGBA5551 },
553 { "BGRA5551", Pixel::BGRA5551 },
554 { "RGB888", Pixel::RGB888 },
555 { "RGB8888", Pixel::RGB8888 },
556 { "BGR8888", Pixel::BGR8888 },
557 { "RGBA8888", Pixel::RGBA8888 },
558 { "BGRA8888", Pixel::BGRA8888 },
559 // BufferImage does not support compressed formats
561 TestEnumStrings< Pixel::Format, BufferImage >( map, "pixel-format", values, ( sizeof( values ) / sizeof ( values[0] ) ), &BufferImage::GetPixelFormat, &NewBufferImage );
566 int UtcDaliScriptingNewImage09P(void)
568 TestApplication application;
572 map[ "type" ] = "ResourceImage";
573 map[ "filename" ] = "TEST_FILE";
576 Image image = NewImage( map );
577 DALI_TEST_CHECK( ResourceImage::DownCast( image ) );
578 DALI_TEST_CHECK( !FrameBufferImage::DownCast( image ) );
579 DALI_TEST_CHECK( !BufferImage::DownCast( image ) );
584 int UtcDaliScriptingNewImage10P(void)
586 TestApplication application;
589 // type FrameBufferImage, empty size gives us stage size
590 map[ "type" ] = "FrameBufferImage";
591 Image image = NewImage( map );
592 DALI_TEST_CHECK( image );
596 int UtcDaliScriptingNewShaderEffect(void)
598 TestApplication application;
600 Property::Map programMap;
601 programMap[ "vertex-filename" ] = "bump.vert";
602 programMap[ "fragment-filename" ] = "bump.frag";
604 Property::Map imageMap;
605 imageMap[ "filename" ] = "image.png";
608 map[ "image" ] = imageMap;
609 map[ "program" ] = programMap;
610 map[ "uLightPosition" ] = Vector3( 0.0, 0.0, -1.5);
611 map[ "uAmbientLight" ] = (int)10;
613 ShaderEffect shader = NewShaderEffect( map );
615 DALI_TEST_CHECK( shader );
619 int UtcDaliScriptingNewActorNegative(void)
621 TestApplication application;
625 Actor handle = NewActor( Property::Map() );
626 DALI_TEST_CHECK( !handle );
629 // Map with only properties
632 map[ "parent-origin" ] = ParentOrigin::TOP_CENTER;
633 map[ "anchor-point" ] = AnchorPoint::TOP_CENTER;
634 Actor handle = NewActor( map );
635 DALI_TEST_CHECK( !handle );
638 // Add some signals to the map, we should have no signal connections as its not yet supported
641 map[ "type" ] = "Actor";
642 map[ "signals" ] = Property::MAP;
643 Actor handle = NewActor( map );
644 DALI_TEST_CHECK( handle );
645 DALI_TEST_CHECK( !handle.WheelEventSignal().GetConnectionCount() );
646 DALI_TEST_CHECK( !handle.OffStageSignal().GetConnectionCount() );
647 DALI_TEST_CHECK( !handle.OnStageSignal().GetConnectionCount() );
648 DALI_TEST_CHECK( !handle.TouchedSignal().GetConnectionCount() );
653 int UtcDaliScriptingNewActorProperties(void)
655 TestApplication application;
658 map[ "type" ] = "Actor";
659 map[ "size" ] = Vector3::ONE;
660 map[ "position" ] = Vector3::XAXIS;
661 map[ "scale" ] = Vector3::ONE;
662 map[ "visible" ] = false;
663 map[ "color" ] = Color::MAGENTA;
664 map[ "name" ] = "MyActor";
665 map[ "color-mode" ] = "USE_PARENT_COLOR";
666 map[ "inherit-shader-effect" ] = false;
667 map[ "sensitive" ] = false;
668 map[ "leave-required" ] = true;
669 map[ "position-inheritance" ] = "DONT_INHERIT_POSITION";
670 map[ "draw-mode" ] = "STENCIL";
671 map[ "inherit-orientation" ] = false;
672 map[ "inherit-scale" ] = false;
674 // Default properties
676 Actor handle = NewActor( map );
677 DALI_TEST_CHECK( handle );
679 Stage::GetCurrent().Add( handle );
680 application.SendNotification();
681 application.Render();
683 DALI_TEST_EQUALS( handle.GetCurrentSize(), Vector3::ONE, TEST_LOCATION );
684 DALI_TEST_EQUALS( handle.GetCurrentPosition(), Vector3::XAXIS, TEST_LOCATION );
685 DALI_TEST_EQUALS( handle.GetCurrentScale(), Vector3::ONE, TEST_LOCATION );
686 DALI_TEST_EQUALS( handle.IsVisible(), false, TEST_LOCATION );
687 DALI_TEST_EQUALS( handle.GetCurrentColor(), Color::MAGENTA, TEST_LOCATION );
688 DALI_TEST_EQUALS( handle.GetName(), "MyActor", TEST_LOCATION );
689 DALI_TEST_EQUALS( handle.GetColorMode(), USE_PARENT_COLOR, TEST_LOCATION );
690 DALI_TEST_EQUALS( handle.IsSensitive(), false, TEST_LOCATION );
691 DALI_TEST_EQUALS( handle.GetLeaveRequired(), true, TEST_LOCATION );
692 DALI_TEST_EQUALS( handle.GetPositionInheritanceMode(), DONT_INHERIT_POSITION, TEST_LOCATION );
693 DALI_TEST_EQUALS( handle.GetDrawMode(), DrawMode::STENCIL, TEST_LOCATION );
694 DALI_TEST_EQUALS( handle.IsOrientationInherited(), false, TEST_LOCATION );
695 DALI_TEST_EQUALS( handle.IsScaleInherited(), false, TEST_LOCATION );
697 Stage::GetCurrent().Remove( handle );
700 // Check Anchor point and parent origin vector3s
701 map[ "parent-origin" ] = ParentOrigin::TOP_CENTER;
702 map[ "anchor-point" ] = AnchorPoint::TOP_LEFT;
704 Actor handle = NewActor( map );
705 DALI_TEST_CHECK( handle );
707 Stage::GetCurrent().Add( handle );
708 application.SendNotification();
709 application.Render();
711 DALI_TEST_EQUALS( handle.GetCurrentParentOrigin(), ParentOrigin::TOP_CENTER, TEST_LOCATION );
712 DALI_TEST_EQUALS( handle.GetCurrentAnchorPoint(), AnchorPoint::TOP_LEFT, TEST_LOCATION );
714 Stage::GetCurrent().Remove( handle );
717 // Check Anchor point and parent origin STRINGS
718 map[ "parent-origin" ] = "TOP_LEFT";
719 map[ "anchor-point" ] = "CENTER_LEFT";
721 Actor handle = NewActor( map );
722 DALI_TEST_CHECK( handle );
724 Stage::GetCurrent().Add( handle );
725 application.SendNotification();
726 application.Render();
728 DALI_TEST_EQUALS( handle.GetCurrentParentOrigin(), ParentOrigin::TOP_LEFT, TEST_LOCATION );
729 DALI_TEST_EQUALS( handle.GetCurrentAnchorPoint(), AnchorPoint::CENTER_LEFT, TEST_LOCATION );
731 Stage::GetCurrent().Remove( handle );
736 int UtcDaliScriptingNewActorChildren(void)
738 TestApplication application;
741 map[ "type" ] = "Actor";
742 map[ "position" ] = Vector3::XAXIS;
744 Property::Map child1Map;
745 child1Map[ "type" ] = "ImageActor";
746 child1Map[ "position" ] = Vector3::YAXIS;
748 Property::Array childArray;
749 childArray.PushBack( child1Map );
750 map[ "actors" ] = childArray;
753 Actor handle = NewActor( map );
754 DALI_TEST_CHECK( handle );
756 Stage::GetCurrent().Add( handle );
757 application.SendNotification();
758 application.Render();
760 DALI_TEST_EQUALS( handle.GetCurrentPosition(), Vector3::XAXIS, TEST_LOCATION );
761 DALI_TEST_EQUALS( handle.GetChildCount(), 1u, TEST_LOCATION );
763 Actor child1 = handle.GetChildAt(0);
764 DALI_TEST_CHECK( child1 );
765 DALI_TEST_CHECK( ImageActor::DownCast( child1 ) );
766 DALI_TEST_EQUALS( child1.GetCurrentPosition(), Vector3::YAXIS, TEST_LOCATION );
767 DALI_TEST_EQUALS( child1.GetChildCount(), 0u, TEST_LOCATION );
769 Stage::GetCurrent().Remove( handle );
774 int UtcDaliScriptingCreatePropertyMapActor(void)
776 TestApplication application;
780 Actor actor = Actor::New();
783 CreatePropertyMap( actor, map );
784 DALI_TEST_CHECK( !map.Empty() );
785 DALI_TEST_CHECK( NULL != map.Find( "type" ) );
786 DALI_TEST_EQUALS( map.Find( "type")->Get< std::string >(), "Actor", TEST_LOCATION );
788 Stage::GetCurrent().Remove( actor );
793 Actor actor = ImageActor::New();
796 CreatePropertyMap( actor, map );
797 DALI_TEST_CHECK( !map.Empty() );
798 DALI_TEST_CHECK( NULL != map.Find( "type" ) );
799 DALI_TEST_EQUALS( map.Find( "type" )->Get< std::string >(), "ImageActor", TEST_LOCATION );
801 Stage::GetCurrent().Remove( actor );
804 // Default properties
806 Actor actor = Actor::New();
807 actor.SetSize( Vector3::ONE );
808 actor.SetPosition( Vector3::XAXIS );
809 actor.SetScale( Vector3::ZAXIS );
810 actor.SetVisible( false );
811 actor.SetColor( Color::MAGENTA );
812 actor.SetName( "MyActor" );
813 actor.SetAnchorPoint( AnchorPoint::CENTER_LEFT );
814 actor.SetParentOrigin( ParentOrigin::TOP_RIGHT );
815 actor.SetSensitive( false );
816 actor.SetLeaveRequired( true );
817 actor.SetInheritOrientation( false );
818 actor.SetInheritScale( false );
819 actor.SetSizeModeFactor( Vector3::ONE );
821 Stage::GetCurrent().Add( actor );
822 application.SendNotification();
823 application.Render();
826 CreatePropertyMap( actor, map );
828 DALI_TEST_CHECK( !map.Empty() );
829 DALI_TEST_CHECK( NULL != map.Find( "size" ) );
830 DALI_TEST_EQUALS( map.Find( "size" )->Get< Vector3 >(), Vector3::ONE, TEST_LOCATION );
831 DALI_TEST_CHECK( NULL != map.Find( "position" ) );
832 DALI_TEST_EQUALS( map.Find( "position" )->Get< Vector3 >(), Vector3::XAXIS, TEST_LOCATION );
833 DALI_TEST_CHECK( NULL != map.Find( "scale" ) );
834 DALI_TEST_EQUALS( map.Find( "scale" )->Get< Vector3 >(), Vector3::ZAXIS, TEST_LOCATION );
835 DALI_TEST_CHECK( NULL != map.Find( "visible" ) );
836 DALI_TEST_EQUALS( map.Find( "visible" )->Get< bool >(), false, TEST_LOCATION );
837 DALI_TEST_CHECK( NULL != map.Find( "color" ) );
838 DALI_TEST_EQUALS( map.Find( "color" )->Get< Vector4 >(), Color::MAGENTA, TEST_LOCATION );
839 DALI_TEST_CHECK( NULL != map.Find( "name" ) );
840 DALI_TEST_EQUALS( map.Find( "name")->Get< std::string >(), "MyActor", TEST_LOCATION );
841 DALI_TEST_CHECK( NULL != map.Find( "anchor-point" ) );
842 DALI_TEST_EQUALS( map.Find( "anchor-point" )->Get< Vector3 >(), AnchorPoint::CENTER_LEFT, TEST_LOCATION );
843 DALI_TEST_CHECK( NULL != map.Find( "parent-origin" ) );
844 DALI_TEST_EQUALS( map.Find( "parent-origin" )->Get< Vector3 >(), ParentOrigin::TOP_RIGHT, TEST_LOCATION );
845 DALI_TEST_CHECK( NULL != map.Find( "sensitive" ) );
846 DALI_TEST_EQUALS( map.Find( "sensitive" )->Get< bool >(), false, TEST_LOCATION );
847 DALI_TEST_CHECK( NULL != map.Find( "leave-required" ) );
848 DALI_TEST_EQUALS( map.Find( "leave-required" )->Get< bool >(), true, TEST_LOCATION );
849 DALI_TEST_CHECK( NULL != map.Find( "inherit-orientation" ) );
850 DALI_TEST_EQUALS( map.Find( "inherit-orientation" )->Get< bool >(), false, TEST_LOCATION );
851 DALI_TEST_CHECK( NULL != map.Find( "inherit-scale" ) );
852 DALI_TEST_EQUALS( map.Find( "inherit-scale" )->Get< bool >(), false, TEST_LOCATION );
853 DALI_TEST_CHECK( NULL != map.Find( "size-mode-factor" ) );
854 DALI_TEST_EQUALS( map.Find( "size-mode-factor" )->Get< Vector3 >(), Vector3::ONE, TEST_LOCATION );
856 Stage::GetCurrent().Remove( actor );
860 TestEnumStrings< ColorMode >( "color-mode", application, COLOR_MODE_VALUES, COLOR_MODE_VALUES_COUNT, &Actor::SetColorMode );
862 // PositionInheritanceMode
863 TestEnumStrings< PositionInheritanceMode >( "position-inheritance", application, POSITION_INHERITANCE_MODE_VALUES, POSITION_INHERITANCE_MODE_VALUES_COUNT, &Actor::SetPositionInheritanceMode );
866 TestEnumStrings< DrawMode::Type >( "draw-mode", application, DRAW_MODE_VALUES, DRAW_MODE_VALUES_COUNT, &Actor::SetDrawMode );
870 Actor actor = Actor::New();
871 Actor child = ImageActor::New();
874 Stage::GetCurrent().Add( actor );
875 application.SendNotification();
876 application.Render();
879 CreatePropertyMap( actor, map );
880 DALI_TEST_CHECK( !map.Empty() );
882 DALI_TEST_CHECK( NULL != map.Find( "type" ) );
883 DALI_TEST_EQUALS( map.Find( "type" )->Get< std::string >(), "Actor", TEST_LOCATION );
885 DALI_TEST_CHECK( NULL != map.Find( "actors" ) );
886 Property::Array children( map.Find( "actors")->Get< Property::Array >() );
887 DALI_TEST_CHECK( !children.Empty() );
888 Property::Map childMap( children[0].Get< Property::Map >() );
889 DALI_TEST_CHECK( !childMap.Empty() );
890 DALI_TEST_CHECK( childMap.Find( "type" ) );
891 DALI_TEST_EQUALS( childMap.Find( "type" )->Get< std::string >(), "ImageActor", TEST_LOCATION );
893 Stage::GetCurrent().Remove( actor );
898 int UtcDaliScriptingCreatePropertyMapImage(void)
900 TestApplication application;
906 CreatePropertyMap( image, map );
907 DALI_TEST_CHECK( map.Empty() );
912 Image image = ResourceImage::New( "MY_PATH" );
915 CreatePropertyMap( image, map );
916 DALI_TEST_CHECK( !map.Empty() );
918 DALI_TEST_CHECK( NULL != map.Find( "type" ) );
919 DALI_TEST_EQUALS( map.Find( "type" )->Get< std::string >(), "ResourceImage", TEST_LOCATION );
920 DALI_TEST_CHECK( NULL != map.Find( "filename" ) );
921 DALI_TEST_EQUALS( map.Find( "filename" )->Get< std::string >(), "MY_PATH", TEST_LOCATION );
922 DALI_TEST_CHECK( NULL != map.Find( "load-policy") );
923 DALI_TEST_EQUALS( map.Find( "load-policy" )->Get< std::string >(), "IMMEDIATE", TEST_LOCATION );
924 DALI_TEST_CHECK( NULL != map.Find( "release-policy") );
925 DALI_TEST_EQUALS( map.Find( "release-policy" )->Get< std::string >(), "NEVER", TEST_LOCATION );
926 DALI_TEST_CHECK( NULL == map.Find( "width" ) );
927 DALI_TEST_CHECK( NULL == map.Find( "height" ) );
932 ResourceImage image = ResourceImage::New( "MY_PATH", ResourceImage::ON_DEMAND, Image::UNUSED, ImageDimensions( 300, 400 ), FittingMode::FIT_WIDTH );
935 CreatePropertyMap( image, map );
936 DALI_TEST_CHECK( !map.Empty() );
938 DALI_TEST_CHECK( NULL != map.Find( "type" ) );
939 DALI_TEST_EQUALS( map.Find( "type" )->Get< std::string >(), "ResourceImage", TEST_LOCATION );
940 DALI_TEST_CHECK( NULL != map.Find( "filename" ) );
941 DALI_TEST_EQUALS( map.Find( "filename" )->Get< std::string >(), "MY_PATH", TEST_LOCATION );
942 DALI_TEST_CHECK( NULL != map.Find( "load-policy") );
943 DALI_TEST_EQUALS( map.Find( "load-policy" )->Get< std::string >(), "ON_DEMAND", TEST_LOCATION );
944 DALI_TEST_CHECK( NULL != map.Find( "release-policy") );
945 DALI_TEST_EQUALS( map.Find( "release-policy" )->Get< std::string >(), "UNUSED", TEST_LOCATION );
946 DALI_TEST_CHECK( NULL != map.Find( "width" ) );
947 DALI_TEST_EQUALS( map.Find( "width" )->Get< int >(), 300, TEST_LOCATION );
948 DALI_TEST_CHECK( NULL != map.Find( "height" ) );
949 DALI_TEST_EQUALS( map.Find( "height" )->Get< int >(), 400, TEST_LOCATION );
954 Image image = BufferImage::New( 200, 300, Pixel::A8 );
956 CreatePropertyMap( image, map );
957 DALI_TEST_CHECK( NULL != map.Find( "type" ) );
958 DALI_TEST_EQUALS( map.Find( "type" )->Get< std::string >(), "BufferImage", TEST_LOCATION );
959 DALI_TEST_CHECK( NULL != map.Find( "pixel-format") );
960 DALI_TEST_EQUALS( map.Find( "pixel-format" )->Get< std::string >(), "A8", TEST_LOCATION );
965 Image image = FrameBufferImage::New( 200, 300, Pixel::RGBA8888 );
967 CreatePropertyMap( image, map );
968 DALI_TEST_CHECK( NULL != map.Find( "type" ) );
969 DALI_TEST_EQUALS( map.Find( "type" )->Get< std::string >(), "FrameBufferImage", TEST_LOCATION );
974 int UtcDaliScriptingGetEnumerationTemplates(void)
976 const Scripting::StringEnum myTable[] =
984 const unsigned int myTableCount = sizeof( myTable ) / sizeof( myTable[0] );
986 for ( unsigned int i = 0; i < myTableCount; ++i )
988 tet_printf("Checking: %s\n", myTable[ i ].string );
990 DALI_TEST_CHECK( GetEnumeration<int>( myTable[ i ].string, myTable, myTableCount, value ) );
991 DALI_TEST_EQUALS( myTable[ i ].value, value, TEST_LOCATION );
994 for ( unsigned int i = 0; i < myTableCount; ++i )
996 tet_printf("Checking: %d\n", myTable[ i ].value );
997 DALI_TEST_EQUALS( myTable[ i ].string, GetEnumerationName( myTable[ i ].value, myTable, myTableCount ), TEST_LOCATION );
1003 int UtcDaliScriptingGetEnumerationNameN(void)
1005 const char* value = GetEnumerationName( 10, NULL, 0 );
1006 DALI_TEST_CHECK( NULL == value );
1008 value = GetEnumerationName( 10, NULL, 1 );
1009 DALI_TEST_CHECK( NULL == value );
1014 int UtcDaliScriptingGetLinearEnumerationNameN(void)
1016 const char* value = GetLinearEnumerationName( 10, NULL, 0 );
1017 DALI_TEST_CHECK( NULL == value );
1019 value = GetLinearEnumerationName( 10, NULL, 1 );
1020 DALI_TEST_CHECK( NULL == value );
1025 int UtcDaliScriptingFindEnumIndexN(void)
1027 const Scripting::StringEnum myTable[] =
1035 const unsigned int myTableCount = sizeof( myTable ) / sizeof( myTable[0] );
1036 DALI_TEST_EQUALS( myTableCount, FindEnumIndex( "Foo", myTable, myTableCount ), TEST_LOCATION );