X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-AnimatedVectorImageVisual.cpp;h=20ee4d786b622e77de4c1fd67cf4366a5bf8d63b;hb=refs%2Fchanges%2F32%2F210132%2F4;hp=01716edebfbcfb67488ee527aeb61a366e41f062;hpb=5acaae5821827d96fba8117263418199539c4e21;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/automated-tests/src/dali-toolkit/utc-Dali-AnimatedVectorImageVisual.cpp b/automated-tests/src/dali-toolkit/utc-Dali-AnimatedVectorImageVisual.cpp index 01716ed..20ee4d7 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-AnimatedVectorImageVisual.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-AnimatedVectorImageVisual.cpp @@ -133,11 +133,16 @@ int UtcDaliVisualFactoryGetAnimatedVectorImageVisual03(void) ToolkitTestApplication application; tet_infoline( "UtcDaliVisualFactoryGetAnimatedVectorImageVisual03: Request animated vector image visual with a Property::Map" ); + int startFrame = 1, endFrame = 3; + Property::Array playRange; + playRange.PushBack( startFrame ); + playRange.PushBack( endFrame ); + Property::Map propertyMap; propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE ) .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME ) .Add( DevelImageVisual::Property::LOOP_COUNT, 3 ) - .Add( DevelImageVisual::Property::PLAY_RANGE, Vector2( 0.2f, 0.8f ) ); + .Add( DevelImageVisual::Property::PLAY_RANGE, playRange ); Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap ); DALI_TEST_CHECK( visual ); @@ -170,11 +175,18 @@ int UtcDaliVisualFactoryGetAnimatedVectorImageVisual04(void) ToolkitTestApplication application; tet_infoline( "UtcDaliVisualFactoryGetAnimatedVectorImageVisual04: Request animated vector image visual with a Property::Map" ); + int startFrame = 1, endFrame = 3; + Property::Array playRange; + playRange.PushBack( startFrame ); + playRange.PushBack( endFrame ); + Property::Map propertyMap; propertyMap.Add( "visualType", DevelVisual::ANIMATED_VECTOR_IMAGE ) - .Add( "url", TEST_VECTOR_IMAGE_FILE_NAME ) - .Add( "loopCount", 3 ) - .Add( "playRange", Vector2( 0.2f, 0.8f ) ); + .Add( "url", TEST_VECTOR_IMAGE_FILE_NAME ) + .Add( "loopCount", 3 ) + .Add( "playRange", playRange ) + .Add( "stopBehavior", DevelImageVisual::StopBehavior::FIRST_FRAME ) + .Add( "loopingMode", DevelImageVisual::LoopingMode::AUTO_REVERSE ); Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap ); DALI_TEST_CHECK( visual ); @@ -196,6 +208,35 @@ int UtcDaliVisualFactoryGetAnimatedVectorImageVisual04(void) Renderer renderer = actor.GetRendererAt( 0u ); DALI_TEST_CHECK( renderer ); + Property::Map resultMap; + visual.CreatePropertyMap( resultMap ); + + // check the property values from the returned map from a visual + Property::Value* value = resultMap.Find( ImageVisual::Property::URL, Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get< std::string >() == TEST_VECTOR_IMAGE_FILE_NAME ); + + value = resultMap.Find( DevelImageVisual::Property::LOOP_COUNT, Property::INTEGER ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get< int >() == 3 ); + + value = resultMap.Find( DevelImageVisual::Property::PLAY_RANGE, Property::ARRAY ); + DALI_TEST_CHECK( value ); + + Property::Array* result = value->GetArray(); + DALI_TEST_CHECK( result ); + + DALI_TEST_CHECK( result->GetElementAt( 0 ).Get< int >() == startFrame ); + DALI_TEST_CHECK( result->GetElementAt( 1 ).Get< int >() == endFrame ); + + value = resultMap.Find( DevelImageVisual::Property::STOP_BEHAVIOR, Property::INTEGER ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get< int >() == DevelImageVisual::StopBehavior::FIRST_FRAME ); + + value = resultMap.Find( DevelImageVisual::Property::LOOPING_MODE, Property::INTEGER ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get< int >() == DevelImageVisual::LoopingMode::AUTO_REVERSE ); + actor.Unparent( ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); @@ -207,13 +248,16 @@ int UtcDaliAnimatedVectorImageVisualGetPropertyMap01(void) ToolkitTestApplication application; tet_infoline( "UtcDaliAnimatedVectorImageVisualGetPropertyMap01" ); - Vector2 playRange( 0.2f, 0.8f ); + int startFrame = 1, endFrame = 3; + Property::Array playRange; + playRange.PushBack( startFrame ); + playRange.PushBack( endFrame ); Property::Map propertyMap; propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE ) - .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME ) - .Add( DevelImageVisual::Property::LOOP_COUNT, 3 ) - .Add( DevelImageVisual::Property::PLAY_RANGE, playRange ); + .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME ) + .Add( DevelImageVisual::Property::LOOP_COUNT, 3 ) + .Add( DevelImageVisual::Property::PLAY_RANGE, playRange ); // request AnimatedVectorImageVisual with a property map VisualFactory factory = VisualFactory::Get(); @@ -235,9 +279,22 @@ int UtcDaliAnimatedVectorImageVisualGetPropertyMap01(void) DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get< int >() == 3 ); - value = resultMap.Find( DevelImageVisual::Property::PLAY_RANGE, Property::VECTOR2 ); + value = resultMap.Find( DevelImageVisual::Property::PLAY_RANGE, Property::ARRAY ); DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get< Vector2 >() == playRange ); + + Property::Array* result = value->GetArray(); + DALI_TEST_CHECK( result ); + + DALI_TEST_CHECK( result->GetElementAt( 0 ).Get< int >() == startFrame ); + DALI_TEST_CHECK( result->GetElementAt( 1 ).Get< int >() == endFrame ); + + value = resultMap.Find( DevelImageVisual::Property::STOP_BEHAVIOR, Property::INTEGER ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get< int >() == DevelImageVisual::StopBehavior::CURRENT_FRAME ); + + value = resultMap.Find( DevelImageVisual::Property::LOOPING_MODE, Property::INTEGER ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get< int >() == DevelImageVisual::LoopingMode::RESTART ); // request AnimatedVectorImageVisual with an URL Visual::Base visual2 = factory.CreateVisual( TEST_VECTOR_IMAGE_FILE_NAME, ImageDimensions() ); @@ -290,7 +347,7 @@ int UtcDaliAnimatedVectorImageVisualPlayback(void) Property::Map map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); Property::Value* value = map.Find( DevelImageVisual::Property::PLAY_STATE ); - DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::PLAYING ) ); + DALI_TEST_CHECK( value->Get< int >() == DevelImageVisual::PlayState::PLAYING ); tet_infoline( "Test Pause action" ); DevelControl::DoAction( dummyControl, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PAUSE, attributes ); @@ -302,7 +359,7 @@ int UtcDaliAnimatedVectorImageVisualPlayback(void) map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); value = map.Find( DevelImageVisual::Property::PLAY_STATE ); - DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::PAUSED ) ); + DALI_TEST_CHECK( value->Get< int >() == DevelImageVisual::PlayState::PAUSED ); tet_infoline( "Test Play action" ); DevelControl::DoAction( dummyControl, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes ); @@ -312,7 +369,7 @@ int UtcDaliAnimatedVectorImageVisualPlayback(void) map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); value = map.Find( DevelImageVisual::Property::PLAY_STATE ); - DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::PLAYING ) ); + DALI_TEST_CHECK( value->Get< int >() == DevelImageVisual::PlayState::PLAYING ); tet_infoline( "Test Stop action" ); DevelControl::DoAction( dummyControl, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::STOP, attributes ); @@ -322,7 +379,7 @@ int UtcDaliAnimatedVectorImageVisualPlayback(void) map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); value = map.Find( DevelImageVisual::Property::PLAY_STATE ); - DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::STOPPED ) ); + DALI_TEST_CHECK( value->Get< int >() == DevelImageVisual::PlayState::STOPPED ); tet_infoline( "Test Stop action again" ); DevelControl::DoAction( dummyControl, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::STOP, attributes ); @@ -332,7 +389,7 @@ int UtcDaliAnimatedVectorImageVisualPlayback(void) map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); value = map.Find( DevelImageVisual::Property::PLAY_STATE ); - DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::STOPPED ) ); + DALI_TEST_CHECK( value->Get< int >() == DevelImageVisual::PlayState::STOPPED ); tet_infoline( "Test Play action" ); DevelControl::DoAction( dummyControl, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes ); @@ -342,7 +399,7 @@ int UtcDaliAnimatedVectorImageVisualPlayback(void) map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); value = map.Find( DevelImageVisual::Property::PLAY_STATE ); - DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::PLAYING ) ); + DALI_TEST_CHECK( value->Get< int >() == DevelImageVisual::PlayState::PLAYING ); tet_infoline( "Off stage" ); dummyControl.Unparent(); @@ -352,7 +409,7 @@ int UtcDaliAnimatedVectorImageVisualPlayback(void) map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); value = map.Find( DevelImageVisual::Property::PLAY_STATE ); - DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::PAUSED ) ); + DALI_TEST_CHECK( value->Get< int >() == DevelImageVisual::PlayState::PAUSED ); tet_infoline( "On stage again" ); Stage::GetCurrent().Add( dummyControl ); @@ -362,7 +419,7 @@ int UtcDaliAnimatedVectorImageVisualPlayback(void) map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); value = map.Find( DevelImageVisual::Property::PLAY_STATE ); - DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::PAUSED ) ); + DALI_TEST_CHECK( value->Get< int >() == DevelImageVisual::PlayState::PAUSED ); tet_infoline( "Test Play action" ); DevelControl::DoAction( dummyControl, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes ); @@ -372,7 +429,7 @@ int UtcDaliAnimatedVectorImageVisualPlayback(void) map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); value = map.Find( DevelImageVisual::Property::PLAY_STATE ); - DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::PLAYING ) ); + DALI_TEST_CHECK( value->Get< int >() == DevelImageVisual::PlayState::PLAYING ); // Change Size Vector3 newSize( 100.0f, 100.0f, 0.0f ); @@ -458,7 +515,6 @@ int UtcDaliAnimatedVectorImageVisualNaturalSize(void) Vector2 controlSize( 20.f, 30.f ); Vector2 naturalSize; - actor.SetSize( controlSize ); Stage::GetCurrent().Add( actor ); application.SendNotification(); @@ -468,6 +524,17 @@ int UtcDaliAnimatedVectorImageVisualNaturalSize(void) visual.GetNaturalSize( naturalSize ); + DALI_TEST_EQUALS( naturalSize, Vector2( 100.0f, 100.0f ), TEST_LOCATION ); // 100x100 is the content default size. + + actor.SetSize( controlSize ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + visual.GetNaturalSize( naturalSize ); + DALI_TEST_EQUALS( naturalSize, controlSize, TEST_LOCATION ); END_TEST; @@ -517,12 +584,15 @@ int UtcDaliAnimatedVectorImageVisualPlayRange(void) ToolkitTestApplication application; tet_infoline( "UtcDaliAnimatedVectorImageVisualPlayRange" ); - Vector2 playRange( 0.8f, 0.2f ); + int startFrame = 3, endFrame = 1; + Property::Array array; + array.PushBack( startFrame ); + array.PushBack( endFrame ); Property::Map propertyMap; propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE ) .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME ) - .Add( DevelImageVisual::Property::PLAY_RANGE, playRange ); + .Add( DevelImageVisual::Property::PLAY_RANGE, array ); Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap ); DALI_TEST_CHECK( visual ); @@ -551,7 +621,36 @@ int UtcDaliAnimatedVectorImageVisualPlayRange(void) Property::Map map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); Property::Value* value = map.Find( DevelImageVisual::Property::PLAY_RANGE ); - DALI_TEST_EQUALS( value->Get< Vector2 >(), playRange, TEST_LOCATION ); + + int resultStartFrame, resultEndFrame; + Property::Array* result = value->GetArray(); + result->GetElementAt( 0 ).Get( resultStartFrame ); + result->GetElementAt( 1 ).Get( resultEndFrame ); + + DALI_TEST_EQUALS( startFrame, resultStartFrame, TEST_LOCATION ); + DALI_TEST_EQUALS( endFrame, resultEndFrame, TEST_LOCATION ); + + // Set invalid play range + array.Clear(); + array.PushBack( -1 ); + array.PushBack( 100 ); + + attributes.Clear(); + attributes.Add( DevelImageVisual::Property::PLAY_RANGE, array ); + DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::UPDATE_PROPERTY, attributes ); + + application.SendNotification(); + application.Render(); + + map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); + value = map.Find( DevelImageVisual::Property::PLAY_RANGE ); + + result = value->GetArray(); + result->GetElementAt( 0 ).Get( resultStartFrame ); + result->GetElementAt( 1 ).Get( resultEndFrame ); + + DALI_TEST_EQUALS( startFrame, resultStartFrame, TEST_LOCATION ); // Should not be changed + DALI_TEST_EQUALS( endFrame, resultEndFrame, TEST_LOCATION ); END_TEST; } @@ -591,17 +690,17 @@ int UtcDaliAnimatedVectorImageVisualAnimationFinishedSignal(void) Property::Map map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); Property::Value* value = map.Find( DevelImageVisual::Property::PLAY_STATE ); - DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::STOPPED ) ); + DALI_TEST_CHECK( value->Get< int >() == DevelImageVisual::PlayState::STOPPED ); DALI_TEST_EQUALS( gAnimationFinishedSignalFired, true, TEST_LOCATION ); END_TEST; } -int UtcDaliAnimatedVectorImageVisualJumpToCurrentProgress(void) +int UtcDaliAnimatedVectorImageVisualJumpTo(void) { ToolkitTestApplication application; - tet_infoline( "UtcDaliAnimatedVectorImageVisualJumpToCurrentProgress" ); + tet_infoline( "UtcDaliAnimatedVectorImageVisualJumpTo" ); Property::Map propertyMap; propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE ) @@ -624,33 +723,40 @@ int UtcDaliAnimatedVectorImageVisualJumpToCurrentProgress(void) DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); - DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::JUMP_TO, 0.6f ); + DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::JUMP_TO, 2 ); application.SendNotification(); application.Render(); Property::Map map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); - Property::Value* value = map.Find( DevelImageVisual::Property::CURRENT_PROGRESS ); - DALI_TEST_EQUALS( value->Get< float >(), 0.6f, TEST_LOCATION ); + Property::Value* value = map.Find( DevelImageVisual::Property::CURRENT_FRAME_NUMBER ); + DALI_TEST_EQUALS( value->Get< int >(), 2, TEST_LOCATION ); - Vector2 playRange( 0.0f, 0.4f ); + Property::Array array; + array.PushBack( 0 ); + array.PushBack( 2 ); Property::Map attributes; - attributes.Add( DevelImageVisual::Property::PLAY_RANGE, playRange ); + attributes.Add( DevelImageVisual::Property::PLAY_RANGE, array ); DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::UPDATE_PROPERTY, attributes ); - DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::JUMP_TO, 0.8f ); + DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::JUMP_TO, 3 ); application.SendNotification(); application.Render(); map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); - value = map.Find( DevelImageVisual::Property::CURRENT_PROGRESS ); - DALI_TEST_EQUALS( value->Get< float >(), 0.4f, TEST_LOCATION ); + value = map.Find( DevelImageVisual::Property::CURRENT_FRAME_NUMBER ); + DALI_TEST_EQUALS( value->Get< int >(), 2, TEST_LOCATION ); // Change play range attributes.Clear(); - attributes.Add( DevelImageVisual::Property::PLAY_RANGE, Vector2( 0.0f, 1.0f ) ); + array.Clear(); + + array.PushBack( 0 ); + array.PushBack( 4 ); + + attributes.Add( DevelImageVisual::Property::PLAY_RANGE, array ); DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::UPDATE_PROPERTY, attributes ); attributes.Clear(); @@ -659,17 +765,17 @@ int UtcDaliAnimatedVectorImageVisualJumpToCurrentProgress(void) application.SendNotification(); application.Render(); - // Stop and jump to 0.2 + // Stop and jump to 3 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::STOP, attributes ); - DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::JUMP_TO, 0.2f ); + DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::JUMP_TO, 3 ); application.SendNotification(); application.Render(); map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); - value = map.Find( DevelImageVisual::Property::CURRENT_PROGRESS ); - DALI_TEST_EQUALS( value->Get< float >(), 0.2f, TEST_LOCATION ); + value = map.Find( DevelImageVisual::Property::CURRENT_FRAME_NUMBER ); + DALI_TEST_EQUALS( value->Get< int >(), 3, TEST_LOCATION ); END_TEST; } @@ -679,7 +785,10 @@ int UtcDaliAnimatedVectorImageVisualUpdateProperty(void) ToolkitTestApplication application; tet_infoline( "UtcDaliAnimatedVectorImageVisualJumpToCurrentProgress" ); - Vector2 playRange( 0.2f, 0.5f ); + int startFrame = 1, endFrame = 3; + Property::Array playRange; + playRange.PushBack( startFrame ); + playRange.PushBack( endFrame ); Property::Map propertyMap; propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE ) @@ -708,13 +817,21 @@ int UtcDaliAnimatedVectorImageVisualUpdateProperty(void) Property::Value* value = map.Find( DevelImageVisual::Property::LOOP_COUNT ); DALI_TEST_EQUALS( value->Get< int >(), 3, TEST_LOCATION ); - value = map.Find( DevelImageVisual::Property::PLAY_RANGE ); - DALI_TEST_EQUALS( value->Get< Vector2 >(), playRange, TEST_LOCATION ); + value = map.Find( DevelImageVisual::Property::PLAY_RANGE, Property::ARRAY ); + DALI_TEST_CHECK( value ); + + Property::Array* result = value->GetArray(); + DALI_TEST_CHECK( result ); - Vector2 newPlayRange( 0.6f, 1.0f ); + DALI_TEST_CHECK( result->GetElementAt( 0 ).Get< int >() == startFrame ); + DALI_TEST_CHECK( result->GetElementAt( 1 ).Get< int >() == endFrame ); + + playRange.Clear(); + playRange.PushBack( 0 ); + playRange.PushBack( 2 ); Property::Map attributes; - attributes.Add( DevelImageVisual::Property::PLAY_RANGE, newPlayRange ); + attributes.Add( DevelImageVisual::Property::PLAY_RANGE, playRange ); attributes.Add( DevelImageVisual::Property::LOOP_COUNT, 5 ); DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::UPDATE_PROPERTY, attributes ); @@ -727,9 +844,18 @@ int UtcDaliAnimatedVectorImageVisualUpdateProperty(void) DALI_TEST_EQUALS( value->Get< int >(), 5, TEST_LOCATION ); value = map.Find( DevelImageVisual::Property::PLAY_RANGE ); - DALI_TEST_EQUALS( value->Get< Vector2 >(), newPlayRange, TEST_LOCATION ); + result = value->GetArray(); + DALI_TEST_CHECK( result ); + + DALI_TEST_CHECK( result->GetElementAt( 0 ).Get< int >() == 0 ); + DALI_TEST_CHECK( result->GetElementAt( 1 ).Get< int >() == 2 ); attributes.Clear(); + + playRange.Clear(); + playRange.PushBack( startFrame ); + playRange.PushBack( endFrame ); + attributes.Add( DevelImageVisual::Property::PLAY_RANGE, playRange ); DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::UPDATE_PROPERTY, attributes ); @@ -739,7 +865,185 @@ int UtcDaliAnimatedVectorImageVisualUpdateProperty(void) map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); value = map.Find( DevelImageVisual::Property::PLAY_RANGE ); - DALI_TEST_EQUALS( value->Get< Vector2 >(), playRange, TEST_LOCATION ); + + result = value->GetArray(); + DALI_TEST_CHECK( result ); + + DALI_TEST_CHECK( result->GetElementAt( 0 ).Get< int >() == startFrame ); + DALI_TEST_CHECK( result->GetElementAt( 1 ).Get< int >() == endFrame ); + + END_TEST; +} + +int UtcDaliAnimatedVectorImageVisualStopBehavior(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliAnimatedVectorImageVisualStopBehavior" ); + + Property::Map propertyMap; + propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE ) + .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME ) + .Add( DevelImageVisual::Property::LOOP_COUNT, 3 ) + .Add( DevelImageVisual::Property::STOP_BEHAVIOR, DevelImageVisual::StopBehavior::FIRST_FRAME ); + + Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap ); + DALI_TEST_CHECK( visual ); + + DummyControl actor = DummyControl::New( true ); + DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() ); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); + + Vector2 controlSize( 20.f, 30.f ); + actor.SetSize( controlSize ); + + Stage::GetCurrent().Add( actor ); + + Property::Map attributes; + DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes ); + + application.SendNotification(); + application.Render(); + + // Trigger count is 2 - resource ready and animation finished + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 2 ), true, TEST_LOCATION ); + + Property::Map map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); + Property::Value* value = map.Find( DevelImageVisual::Property::CURRENT_FRAME_NUMBER ); + DALI_TEST_EQUALS( value->Get< int >(), 0, TEST_LOCATION ); // Should be the first frame + + // Change stop behavior + attributes.Add( DevelImageVisual::Property::STOP_BEHAVIOR, DevelImageVisual::StopBehavior::LAST_FRAME ); + + DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::UPDATE_PROPERTY, attributes ); + + attributes.Clear(); + + // Play again + DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes ); + + application.SendNotification(); + application.Render(); + + // Trigger count is 1 - animation finished + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); + + Property::Value* value1 = map.Find( DevelImageVisual::Property::TOTAL_FRAME_NUMBER ); + int totalFrameNumber = value1->Get< int >(); + + value = map.Find( DevelImageVisual::Property::CURRENT_FRAME_NUMBER ); + DALI_TEST_EQUALS( value->Get< int >(), totalFrameNumber - 1, TEST_LOCATION ); // Should be the last frame + + // Change stop behavior + attributes.Add( DevelImageVisual::Property::STOP_BEHAVIOR, DevelImageVisual::StopBehavior::CURRENT_FRAME ); + attributes.Add( DevelImageVisual::Property::LOOP_COUNT, -1 ); + + DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::UPDATE_PROPERTY, attributes ); + + attributes.Clear(); + + // Play again + DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes ); + + application.SendNotification(); + application.Render(); + + // Pause + DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PAUSE, attributes ); + + map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); + value = map.Find( DevelImageVisual::Property::CURRENT_FRAME_NUMBER ); + int currentFrameNumber = value->Get< int >(); + + // Stop + DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::STOP, attributes ); + + // Trigger count is 1 - animation finished + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); + value = map.Find( DevelImageVisual::Property::CURRENT_FRAME_NUMBER ); + DALI_TEST_EQUALS( value->Get< int >(), currentFrameNumber, TEST_LOCATION ); // Should be same with currentFrameNumber + + END_TEST; +} + +int UtcDaliAnimatedVectorImageVisualLoopingMode(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliAnimatedVectorImageVisualLoopingMode" ); + + Property::Map propertyMap; + propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE ) + .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME ) + .Add( DevelImageVisual::Property::LOOP_COUNT, 3 ) + .Add( DevelImageVisual::Property::STOP_BEHAVIOR, DevelImageVisual::StopBehavior::LAST_FRAME ) + .Add( DevelImageVisual::Property::LOOPING_MODE, DevelImageVisual::LoopingMode::AUTO_REVERSE ); + + Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap ); + DALI_TEST_CHECK( visual ); + + DummyControl actor = DummyControl::New( true ); + DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() ); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); + + Vector2 controlSize( 20.f, 30.f ); + actor.SetSize( controlSize ); + + Stage::GetCurrent().Add( actor ); + + Property::Map attributes; + DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes ); + + application.SendNotification(); + application.Render(); + + // Trigger count is 2 - resource ready and animation finished + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 2 ), true, TEST_LOCATION ); + + Property::Map map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); + Property::Value* value = map.Find( DevelImageVisual::Property::CURRENT_FRAME_NUMBER ); + DALI_TEST_EQUALS( value->Get< int >(), 0, TEST_LOCATION ); // Should be the first frame because of auto reverse + + // Change stop behavior + attributes.Add( DevelImageVisual::Property::STOP_BEHAVIOR, DevelImageVisual::StopBehavior::CURRENT_FRAME ); + + DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::UPDATE_PROPERTY, attributes ); + + // Play again + DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes ); + + application.SendNotification(); + application.Render(); + + // Trigger count is 1 - animation finished + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); + value = map.Find( DevelImageVisual::Property::CURRENT_FRAME_NUMBER ); + DALI_TEST_EQUALS( value->Get< int >(), 0, TEST_LOCATION ); // Should be the first frame + + // Change looping mode + attributes.Add( DevelImageVisual::Property::LOOPING_MODE, DevelImageVisual::LoopingMode::RESTART ); + + DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::UPDATE_PROPERTY, attributes ); + + // Play again + DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes ); + + application.SendNotification(); + application.Render(); + + // Trigger count is 1 - animation finished + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + Property::Value* value1 = map.Find( DevelImageVisual::Property::TOTAL_FRAME_NUMBER ); + int totalFrameNumber = value1->Get< int >(); + + map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL ); + value = map.Find( DevelImageVisual::Property::CURRENT_FRAME_NUMBER ); + DALI_TEST_EQUALS( value->Get< int >(), totalFrameNumber - 1, TEST_LOCATION ); // Should be the last frame END_TEST; }