2 * Copyright (c) 2018 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-toolkit-test-suite-utils.h>
22 #include <toolkit-timer.h>
23 #include <toolkit-event-thread-callback.h>
24 #include <dali-toolkit/dali-toolkit.h>
25 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
26 #include <dali-toolkit/devel-api/controls/control-devel.h>
27 #include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
28 #include <dali-toolkit/devel-api/visuals/image-visual-properties-devel.h>
29 #include <dali-toolkit/devel-api/visuals/animated-vector-image-visual-actions-devel.h>
30 #include <dali-toolkit/devel-api/visuals/animated-vector-image-visual-signals-devel.h>
31 #include "dummy-control.h"
34 using namespace Dali::Toolkit;
36 void dali_animated_vector_image_visual_startup(void)
38 test_return_value = TET_UNDEF;
41 void dali_animated_vector_image_visual_cleanup(void)
43 test_return_value = TET_PASS;
49 const char* TEST_VECTOR_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/insta_camera.json";
51 bool gAnimationFinishedSignalFired = false;
53 void VisualEventSignal( Control control, Dali::Property::Index visualIndex, Dali::Property::Index signalId )
55 if( visualIndex == DummyControl::Property::TEST_VISUAL && signalId == DevelAnimatedVectorImageVisual::Signal::ANIMATION_FINISHED )
57 gAnimationFinishedSignalFired = true;
63 int UtcDaliVisualFactoryGetAnimatedVectorImageVisual01(void)
65 ToolkitTestApplication application;
66 tet_infoline( "UtcDaliVisualFactoryGetAnimatedVectorImageVisual01: Request animated vector image visual with a json url" );
68 VisualFactory factory = VisualFactory::Get();
69 Visual::Base visual = factory.CreateVisual( TEST_VECTOR_IMAGE_FILE_NAME, ImageDimensions() );
70 DALI_TEST_CHECK( visual );
72 DummyControl actor = DummyControl::New( true );
73 DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
74 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
75 actor.SetSize( 200.0f, 200.0f );
76 Stage::GetCurrent().Add( actor );
78 application.SendNotification();
81 // Wait for resource ready event callback
82 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
84 // renderer is added to actor
85 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
86 Renderer renderer = actor.GetRendererAt( 0u );
87 DALI_TEST_CHECK( renderer );
89 // Test SetOffStage().
91 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
96 int UtcDaliVisualFactoryGetAnimatedVectorImageVisual02(void)
98 ToolkitTestApplication application;
99 tet_infoline( "UtcDaliVisualFactoryGetAnimatedVectorImageVisual02: Request animated vector image visual with a Property::Map" );
101 Property::Map propertyMap;
102 propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
103 .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME );
105 Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap );
106 DALI_TEST_CHECK( visual );
108 DummyControl actor = DummyControl::New( true );
109 DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
110 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
111 actor.SetSize( 200.0f, 200.0f );
112 Stage::GetCurrent().Add( actor );
114 application.SendNotification();
115 application.Render();
117 // Wait for resource ready event callback
118 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
120 // renderer is added to actor
121 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
122 Renderer renderer = actor.GetRendererAt( 0u );
123 DALI_TEST_CHECK( renderer );
126 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
131 int UtcDaliVisualFactoryGetAnimatedVectorImageVisual03(void)
133 ToolkitTestApplication application;
134 tet_infoline( "UtcDaliVisualFactoryGetAnimatedVectorImageVisual03: Request animated vector image visual with a Property::Map" );
136 Property::Map propertyMap;
137 propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
138 .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME )
139 .Add( DevelImageVisual::Property::LOOP_COUNT, 3 )
140 .Add( DevelImageVisual::Property::PLAY_RANGE, Vector2( 0.2f, 0.8f ) );
142 Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap );
143 DALI_TEST_CHECK( visual );
145 DummyControl actor = DummyControl::New( true );
146 DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
147 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
148 actor.SetSize( 200.0f, 200.0f );
149 Stage::GetCurrent().Add( actor );
151 application.SendNotification();
152 application.Render();
154 // Wait for resource ready event callback
155 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
157 // renderer is added to actor
158 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
159 Renderer renderer = actor.GetRendererAt( 0u );
160 DALI_TEST_CHECK( renderer );
163 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
168 int UtcDaliVisualFactoryGetAnimatedVectorImageVisual04(void)
170 ToolkitTestApplication application;
171 tet_infoline( "UtcDaliVisualFactoryGetAnimatedVectorImageVisual04: Request animated vector image visual with a Property::Map" );
173 Property::Map propertyMap;
174 propertyMap.Add( "visualType", DevelVisual::ANIMATED_VECTOR_IMAGE )
175 .Add( "url", TEST_VECTOR_IMAGE_FILE_NAME )
176 .Add( "loopCount", 3 )
177 .Add( "playRange", Vector2( 0.2f, 0.8f ) );
179 Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap );
180 DALI_TEST_CHECK( visual );
182 DummyControl actor = DummyControl::New( true );
183 DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
184 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
185 actor.SetSize( 200.0f, 200.0f );
186 Stage::GetCurrent().Add( actor );
188 application.SendNotification();
189 application.Render();
191 // Wait for resource ready event callback
192 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
194 // renderer is added to actor
195 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
196 Renderer renderer = actor.GetRendererAt( 0u );
197 DALI_TEST_CHECK( renderer );
200 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
205 int UtcDaliAnimatedVectorImageVisualGetPropertyMap01(void)
207 ToolkitTestApplication application;
208 tet_infoline( "UtcDaliAnimatedVectorImageVisualGetPropertyMap01" );
210 Vector2 playRange( 0.2f, 0.8f );
212 Property::Map propertyMap;
213 propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
214 .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME )
215 .Add( DevelImageVisual::Property::LOOP_COUNT, 3 )
216 .Add( DevelImageVisual::Property::PLAY_RANGE, playRange );
218 // request AnimatedVectorImageVisual with a property map
219 VisualFactory factory = VisualFactory::Get();
220 Visual::Base visual = factory.CreateVisual( propertyMap );
222 Property::Map resultMap;
223 visual.CreatePropertyMap( resultMap );
225 // check the property values from the returned map from a visual
226 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
227 DALI_TEST_CHECK( value );
228 DALI_TEST_CHECK( value->Get< int >() == DevelVisual::ANIMATED_VECTOR_IMAGE );
230 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
231 DALI_TEST_CHECK( value );
232 DALI_TEST_CHECK( value->Get< std::string >() == TEST_VECTOR_IMAGE_FILE_NAME );
234 value = resultMap.Find( DevelImageVisual::Property::LOOP_COUNT, Property::INTEGER );
235 DALI_TEST_CHECK( value );
236 DALI_TEST_CHECK( value->Get< int >() == 3 );
238 value = resultMap.Find( DevelImageVisual::Property::PLAY_RANGE, Property::VECTOR2 );
239 DALI_TEST_CHECK( value );
240 DALI_TEST_CHECK( value->Get< Vector2 >() == playRange );
242 // request AnimatedVectorImageVisual with an URL
243 Visual::Base visual2 = factory.CreateVisual( TEST_VECTOR_IMAGE_FILE_NAME, ImageDimensions() );
246 visual2.CreatePropertyMap( resultMap );
248 // check the property values from the returned map from a visual
249 value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
250 DALI_TEST_CHECK( value );
251 DALI_TEST_CHECK( value->Get< int >() == DevelVisual::ANIMATED_VECTOR_IMAGE );
253 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
254 DALI_TEST_CHECK( value );
255 DALI_TEST_CHECK( value->Get< std::string >() == TEST_VECTOR_IMAGE_FILE_NAME );
260 int UtcDaliAnimatedVectorImageVisualPlayback(void)
262 ToolkitTestApplication application;
264 tet_infoline( "UtcDaliAnimatedVectorImageVisualPlayback" );
267 // request AnimatedVectorImageVisual with a property map
268 VisualFactory factory = VisualFactory::Get();
269 Visual::Base visual = factory.CreateVisual(
271 .Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
272 .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME ) );
274 DummyControl dummyControl = DummyControl::New( true );
275 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummyControl.GetImplementation() );
276 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
277 dummyControl.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
279 Property::Map attributes;
280 tet_infoline( "Test Play action" );
281 DevelControl::DoAction( dummyControl, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes );
283 Stage::GetCurrent().Add( dummyControl );
284 application.SendNotification();
285 application.Render( 16 );
287 std::this_thread::sleep_for( std::chrono::milliseconds( 100 ) ); // wait for one animation loop (16fps, 5frames, need 80ms)
289 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
291 Property::Map map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
292 Property::Value* value = map.Find( DevelImageVisual::Property::PLAY_STATE );
293 DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::PLAYING ) );
295 tet_infoline( "Test Pause action" );
296 DevelControl::DoAction( dummyControl, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PAUSE, attributes );
298 application.SendNotification();
299 application.Render(16);
301 std::this_thread::sleep_for( std::chrono::milliseconds( 20 ) ); // wait for next rasterize thread run
303 map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
304 value = map.Find( DevelImageVisual::Property::PLAY_STATE );
305 DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::PAUSED ) );
307 tet_infoline( "Test Play action" );
308 DevelControl::DoAction( dummyControl, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes );
310 application.SendNotification();
311 application.Render(16);
313 map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
314 value = map.Find( DevelImageVisual::Property::PLAY_STATE );
315 DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::PLAYING ) );
317 tet_infoline( "Test Stop action" );
318 DevelControl::DoAction( dummyControl, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::STOP, attributes );
320 application.SendNotification();
321 application.Render(16);
323 map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
324 value = map.Find( DevelImageVisual::Property::PLAY_STATE );
325 DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::STOPPED ) );
327 tet_infoline( "Test Stop action again" );
328 DevelControl::DoAction( dummyControl, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::STOP, attributes );
330 application.SendNotification();
331 application.Render(16);
333 map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
334 value = map.Find( DevelImageVisual::Property::PLAY_STATE );
335 DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::STOPPED ) );
337 tet_infoline( "Test Play action" );
338 DevelControl::DoAction( dummyControl, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes );
340 application.SendNotification();
341 application.Render(16);
343 map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
344 value = map.Find( DevelImageVisual::Property::PLAY_STATE );
345 DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::PLAYING ) );
347 tet_infoline( "Off stage" );
348 dummyControl.Unparent();
350 application.SendNotification();
351 application.Render(16);
353 map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
354 value = map.Find( DevelImageVisual::Property::PLAY_STATE );
355 DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::PAUSED ) );
357 tet_infoline( "On stage again" );
358 Stage::GetCurrent().Add( dummyControl );
360 application.SendNotification();
361 application.Render(16);
363 map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
364 value = map.Find( DevelImageVisual::Property::PLAY_STATE );
365 DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::PAUSED ) );
367 tet_infoline( "Test Play action" );
368 DevelControl::DoAction( dummyControl, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes );
370 application.SendNotification();
371 application.Render(16);
373 map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
374 value = map.Find( DevelImageVisual::Property::PLAY_STATE );
375 DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::PLAYING ) );
378 Vector3 newSize( 100.0f, 100.0f, 0.0f );
379 dummyControl.SetSize( newSize );
381 application.SendNotification();
382 application.Render(16);
384 // Size should be changed
385 Vector3 naturalSize = dummyControl.GetNaturalSize();
386 DALI_TEST_CHECK( naturalSize == newSize );
388 dummyControl.Unparent();
394 int UtcDaliAnimatedVectorImageVisualCustomShader(void)
396 ToolkitTestApplication application;
397 tet_infoline( "UtcDaliAnimatedVectorImageVisualCustomShader Test custom shader" );
399 VisualFactory factory = VisualFactory::Get();
400 Property::Map properties;
401 Property::Map shader;
402 const std::string vertexShader = "Foobar";
403 const std::string fragmentShader = "Foobar sampler2D Foobar";
404 shader[Visual::Shader::Property::FRAGMENT_SHADER] = fragmentShader;
405 shader[Visual::Shader::Property::VERTEX_SHADER] = vertexShader;
407 properties[Visual::Property::TYPE] = Visual::IMAGE;
408 properties[Visual::Property::SHADER] = shader;
409 properties[ImageVisual::Property::URL] = TEST_VECTOR_IMAGE_FILE_NAME;
411 Visual::Base visual = factory.CreateVisual( properties );
413 // trigger creation through setting on stage
414 DummyControl dummy = DummyControl::New( true );
415 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
416 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
418 dummy.SetSize( 200.f, 200.f );
419 dummy.SetParentOrigin( ParentOrigin::CENTER );
420 Stage::GetCurrent().Add( dummy );
422 application.SendNotification();
423 application.Render();
425 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
427 Renderer renderer = dummy.GetRendererAt( 0 );
428 Shader shader2 = renderer.GetShader();
429 Property::Value value = shader2.GetProperty( Shader::Property::PROGRAM );
430 Property::Map* map = value.GetMap();
431 DALI_TEST_CHECK( map );
433 std::string resultFragmentShader, resultVertexShader;
434 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
435 fragment->Get( resultFragmentShader );
436 DALI_TEST_CHECK( resultFragmentShader.find( fragmentShader ) != std::string::npos );
438 Property::Value* vertex = map->Find( "vertex" ); // vertex key name from shader-impl.cpp
439 vertex->Get( resultVertexShader );
440 DALI_TEST_CHECK( resultVertexShader.find( vertexShader ) != std::string::npos );
445 int UtcDaliAnimatedVectorImageVisualNaturalSize(void)
447 ToolkitTestApplication application;
448 tet_infoline( "UtcDaliAnimatedVectorImageVisualNaturalSize" );
450 VisualFactory factory = VisualFactory::Get();
451 Visual::Base visual = factory.CreateVisual( TEST_VECTOR_IMAGE_FILE_NAME, ImageDimensions() );
452 DALI_TEST_CHECK( visual );
454 DummyControl actor = DummyControl::New( true );
455 DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
456 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
458 Vector2 controlSize( 20.f, 30.f );
461 actor.SetSize( controlSize );
462 Stage::GetCurrent().Add( actor );
464 application.SendNotification();
465 application.Render();
467 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
469 visual.GetNaturalSize( naturalSize );
471 DALI_TEST_EQUALS( naturalSize, controlSize, TEST_LOCATION );
476 int UtcDaliAnimatedVectorImageVisualLoopCount(void)
478 ToolkitTestApplication application;
479 tet_infoline( "UtcDaliAnimatedVectorImageVisualLoopCount" );
481 Property::Map propertyMap;
482 propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
483 .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME )
484 .Add( DevelImageVisual::Property::LOOP_COUNT, 3 );
486 Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap );
487 DALI_TEST_CHECK( visual );
489 DummyControl actor = DummyControl::New( true );
490 DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
491 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
493 Vector2 controlSize( 20.f, 30.f );
494 actor.SetSize( controlSize );
496 Stage::GetCurrent().Add( actor );
498 Property::Map attributes;
499 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes );
501 application.SendNotification();
502 application.Render();
504 // Trigger count is 2 - resource ready and animation finished
505 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 2 ), true, TEST_LOCATION );
507 // renderer is added to actor
508 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
509 Renderer renderer = actor.GetRendererAt( 0u );
510 DALI_TEST_CHECK( renderer );
515 int UtcDaliAnimatedVectorImageVisualPlayRange(void)
517 ToolkitTestApplication application;
518 tet_infoline( "UtcDaliAnimatedVectorImageVisualPlayRange" );
520 Vector2 playRange( 0.8f, 0.2f );
522 Property::Map propertyMap;
523 propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
524 .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME )
525 .Add( DevelImageVisual::Property::PLAY_RANGE, playRange );
527 Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap );
528 DALI_TEST_CHECK( visual );
530 DummyControl actor = DummyControl::New( true );
531 DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
532 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
534 Vector2 controlSize( 20.f, 30.f );
535 actor.SetSize( controlSize );
537 Stage::GetCurrent().Add( actor );
539 Property::Map attributes;
540 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes );
542 application.SendNotification();
543 application.Render();
545 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
547 // renderer is added to actor
548 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
549 Renderer renderer = actor.GetRendererAt( 0u );
550 DALI_TEST_CHECK( renderer );
552 Property::Map map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
553 Property::Value* value = map.Find( DevelImageVisual::Property::PLAY_RANGE );
554 DALI_TEST_EQUALS( value->Get< Vector2 >(), playRange, TEST_LOCATION );
559 int UtcDaliAnimatedVectorImageVisualAnimationFinishedSignal(void)
561 ToolkitTestApplication application;
562 tet_infoline( "UtcDaliAnimatedVectorImageVisualAnimationFinishedSignal" );
564 Property::Map propertyMap;
565 propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
566 .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME )
567 .Add( DevelImageVisual::Property::LOOP_COUNT, 3 );
569 Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap );
570 DALI_TEST_CHECK( visual );
572 DummyControl actor = DummyControl::New( true );
573 DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
574 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
576 DevelControl::VisualEventSignal( actor ).Connect( &VisualEventSignal );
578 Vector2 controlSize( 20.f, 30.f );
579 actor.SetSize( controlSize );
581 Stage::GetCurrent().Add( actor );
583 Property::Map attributes;
584 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes );
586 application.SendNotification();
587 application.Render();
589 // Wait for animation finish
590 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 2 ), true, TEST_LOCATION );
592 Property::Map map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
593 Property::Value* value = map.Find( DevelImageVisual::Property::PLAY_STATE );
594 DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::STOPPED ) );
596 DALI_TEST_EQUALS( gAnimationFinishedSignalFired, true, TEST_LOCATION );
601 int UtcDaliAnimatedVectorImageVisualJumpToCurrentProgress(void)
603 ToolkitTestApplication application;
604 tet_infoline( "UtcDaliAnimatedVectorImageVisualJumpToCurrentProgress" );
606 Property::Map propertyMap;
607 propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
608 .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME );
610 Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap );
611 DALI_TEST_CHECK( visual );
613 DummyControl actor = DummyControl::New( true );
614 DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
615 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
617 Vector2 controlSize( 20.f, 30.f );
618 actor.SetSize( controlSize );
620 Stage::GetCurrent().Add( actor );
622 application.SendNotification();
623 application.Render();
625 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
627 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::JUMP_TO, 0.6f );
629 application.SendNotification();
630 application.Render();
632 Property::Map map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
633 Property::Value* value = map.Find( DevelImageVisual::Property::CURRENT_PROGRESS );
634 DALI_TEST_EQUALS( value->Get< float >(), 0.6f, TEST_LOCATION );
636 Vector2 playRange( 0.0f, 0.4f );
638 Property::Map attributes;
639 attributes.Add( DevelImageVisual::Property::PLAY_RANGE, playRange );
640 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::UPDATE_PROPERTY, attributes );
642 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::JUMP_TO, 0.8f );
644 application.SendNotification();
645 application.Render();
647 map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
648 value = map.Find( DevelImageVisual::Property::CURRENT_PROGRESS );
649 DALI_TEST_EQUALS( value->Get< float >(), 0.4f, TEST_LOCATION );
653 attributes.Add( DevelImageVisual::Property::PLAY_RANGE, Vector2( 0.0f, 1.0f ) );
654 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::UPDATE_PROPERTY, attributes );
657 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes );
659 application.SendNotification();
660 application.Render();
662 // Stop and jump to 0.2
663 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::STOP, attributes );
665 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::JUMP_TO, 0.2f );
667 application.SendNotification();
668 application.Render();
670 map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
671 value = map.Find( DevelImageVisual::Property::CURRENT_PROGRESS );
672 DALI_TEST_EQUALS( value->Get< float >(), 0.2f, TEST_LOCATION );
677 int UtcDaliAnimatedVectorImageVisualUpdateProperty(void)
679 ToolkitTestApplication application;
680 tet_infoline( "UtcDaliAnimatedVectorImageVisualJumpToCurrentProgress" );
682 Vector2 playRange( 0.2f, 0.5f );
684 Property::Map propertyMap;
685 propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
686 .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME )
687 .Add( DevelImageVisual::Property::LOOP_COUNT, 3 )
688 .Add( DevelImageVisual::Property::PLAY_RANGE, playRange );
690 Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap );
691 DALI_TEST_CHECK( visual );
693 DummyControl actor = DummyControl::New( true );
694 DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
695 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
697 Vector2 controlSize( 20.f, 30.f );
698 actor.SetSize( controlSize );
700 Stage::GetCurrent().Add( actor );
702 application.SendNotification();
703 application.Render();
705 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
707 Property::Map map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
708 Property::Value* value = map.Find( DevelImageVisual::Property::LOOP_COUNT );
709 DALI_TEST_EQUALS( value->Get< int >(), 3, TEST_LOCATION );
711 value = map.Find( DevelImageVisual::Property::PLAY_RANGE );
712 DALI_TEST_EQUALS( value->Get< Vector2 >(), playRange, TEST_LOCATION );
714 Vector2 newPlayRange( 0.6f, 1.0f );
716 Property::Map attributes;
717 attributes.Add( DevelImageVisual::Property::PLAY_RANGE, newPlayRange );
718 attributes.Add( DevelImageVisual::Property::LOOP_COUNT, 5 );
720 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::UPDATE_PROPERTY, attributes );
722 application.SendNotification();
723 application.Render();
725 map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
726 value = map.Find( DevelImageVisual::Property::LOOP_COUNT );
727 DALI_TEST_EQUALS( value->Get< int >(), 5, TEST_LOCATION );
729 value = map.Find( DevelImageVisual::Property::PLAY_RANGE );
730 DALI_TEST_EQUALS( value->Get< Vector2 >(), newPlayRange, TEST_LOCATION );
733 attributes.Add( DevelImageVisual::Property::PLAY_RANGE, playRange );
735 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::UPDATE_PROPERTY, attributes );
737 application.SendNotification();
738 application.Render();
740 map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
741 value = map.Find( DevelImageVisual::Property::PLAY_RANGE );
742 DALI_TEST_EQUALS( value->Get< Vector2 >(), playRange, TEST_LOCATION );