2 * Copyright (c) 2020 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.
20 #include <dali-toolkit-test-suite-utils.h>
21 #include <dali-toolkit/dali-toolkit.h>
22 #include <dali-toolkit/public-api/controls/video-view/video-view.h>
23 #include <dali-toolkit/devel-api/controls/video-view/video-view-devel.h>
24 #include <dali/devel-api/adaptor-framework/window-devel.h>
25 #include <dali/devel-api/adaptor-framework/video-sync-mode.h>
28 using namespace Dali::Toolkit;
32 const char* const TEST_FILE( "test.mp4" );
33 const char* const VOLUME_LEFT( "volumeLeft" );
34 const char* const VOLUME_RIGHT( "volumeRight" );
35 const char* const RENDERING_TYPE( "renderingTarget" );
36 const char* const DUMMY_STRING( "dummy string" );
38 const char* VERTEX_SHADER = DALI_COMPOSE_SHADER(
39 attribute mediump vec2 aPosition;\n
40 varying mediump vec2 vTexCoord;\n
41 uniform mediump mat4 uMvpMatrix;\n
42 uniform mediump vec3 uSize;\n
46 mediump vec4 vertexPosition = vec4(aPosition, 0.0, 1.0);\n
47 vertexPosition.xyz *= uSize;\n
48 vertexPosition = uMvpMatrix * vertexPosition;\n
50 vTexCoord = aPosition + vec2(0.5);\n
51 gl_Position = vertexPosition;\n
55 const char* fragmentShaderPrefix( "#extension GL_OES_EGL_image_external:require\n" );
56 const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER(
57 varying mediump vec2 vTexCoord;\n
58 uniform samplerExternalOES sTexture;\n
59 uniform lowp vec4 uColor;\n
63 gl_FragColor = texture2D( sTexture, vTexCoord ) * uColor;\n
69 void video_view_startup(void)
71 test_return_value = TET_UNDEF;
74 void video_view_cleanup(void)
76 test_return_value = TET_PASS;
79 // Negative test case for a method
80 int UtcDaliVideoViewUninitialized(void)
82 ToolkitTestApplication application;
83 tet_infoline(" UtcDaliVideoViewUninitialized");
85 Toolkit::VideoView view;
89 // New() must be called to create a VideoView or it wont be valid.
90 Actor a = Actor::New();
92 DALI_TEST_CHECK( false );
94 catch (Dali::DaliException& e)
96 // Tests that a negative test of an assertion succeeds
97 DALI_TEST_PRINT_ASSERT( e );
98 DALI_TEST_CHECK(!view);
103 // Positive test case for a method
104 int UtcDaliVideoViewNew(void)
106 ToolkitTestApplication application;
107 tet_infoline(" UtcDaliVideoViewNew");
109 Toolkit::VideoView view = Toolkit::VideoView::New();
110 DALI_TEST_CHECK( view );
112 const std::string url( DUMMY_STRING );
113 Toolkit::VideoView view2 = Toolkit::VideoView::New( url );
114 DALI_TEST_CHECK( view2 );
118 // Positive test case for a method
119 int UtcDaliVideoViewDownCast(void)
121 ToolkitTestApplication application;
122 tet_infoline(" UtcDaliVideoViewDownCast");
124 Toolkit::VideoView view = Toolkit::VideoView::New();
125 BaseHandle handle(view);
127 Toolkit::VideoView view2 = Toolkit::VideoView::DownCast( handle );
128 DALI_TEST_CHECK( view );
129 DALI_TEST_CHECK( view2 );
130 DALI_TEST_CHECK( view == view2 );
134 // Positive test case for a method
135 int UtcDaliVideoViewProperty1(void)
137 ToolkitTestApplication application;
138 tet_infoline(" UtcDaliVideoViewProperty1");
140 Toolkit::VideoView view = Toolkit::VideoView::New();
141 DALI_TEST_CHECK( view );
144 view.SetProperty( VideoView::Property::VIDEO, TEST_FILE );
145 Property::Value val = view.GetProperty( VideoView::Property::VIDEO );
146 DALI_TEST_CHECK( val.Get( file ) );
147 DALI_TEST_CHECK( file == TEST_FILE );
151 // Positive test case for a method
152 int UtcDaliVideoViewProperty1b(void)
154 ToolkitTestApplication application;
155 tet_infoline(" UtcDaliVideoViewProperty1");
157 Toolkit::VideoView view = Toolkit::VideoView::New();
158 DALI_TEST_CHECK( view );
159 Integration::Scene stage = application.GetScene();
164 view.SetProperty( VideoView::Property::VIDEO, Property::Map()
165 .Add("rendererType", "IMAGE")
166 .Add("url", "video.mpg") // Note, videoView doesn't use this url
167 .Add("RENDERING_TARGET", "windowSurfaceTarget" )
169 .Add("height", 100) );
173 Property::Value val = view.GetProperty( VideoView::Property::VIDEO );
174 Property::Map* resultMap = val.GetMap();
176 DALI_TEST_CHECK( resultMap );
177 Property::Value* value = resultMap->Find("url");
178 DALI_TEST_CHECK( value );
179 DALI_TEST_EQUALS( value->Get<std::string>(), "video.mpg", TEST_LOCATION );
181 stage.Remove( view );
186 int UtcDaliVideoViewProperty2(void)
188 ToolkitTestApplication application;
189 tet_infoline(" UtcDaliVideoViewProperty2");
191 Toolkit::VideoView view = Toolkit::VideoView::New();
192 DALI_TEST_CHECK( view );
195 Property::Value val = view.GetProperty( VideoView::Property::LOOPING );
196 DALI_TEST_CHECK( val.Get( looping ) );
197 DALI_TEST_CHECK( !looping );
199 view.SetProperty( VideoView::Property::LOOPING, true );
200 val = view.GetProperty( VideoView::Property::LOOPING );
201 DALI_TEST_CHECK( val.Get( looping ) );
202 DALI_TEST_CHECK( looping );
206 int UtcDaliVideoViewProperty3(void)
208 ToolkitTestApplication application;
209 tet_infoline(" UtcDaliVideoViewProperty3");
211 Toolkit::VideoView view = Toolkit::VideoView::New();
212 DALI_TEST_CHECK( view );
215 Property::Value val = view.GetProperty( VideoView::Property::MUTED );
216 DALI_TEST_CHECK( val.Get( muted ) );
217 DALI_TEST_CHECK( !muted );
219 view.SetProperty( VideoView::Property::MUTED, true );
220 val = view.GetProperty( VideoView::Property::MUTED );
221 DALI_TEST_CHECK( val.Get( muted ) );
222 DALI_TEST_CHECK( muted );
227 int UtcDaliVideoViewProperty4(void)
229 ToolkitTestApplication application;
230 tet_infoline(" UtcDaliVideoViewProperty4");
232 Toolkit::VideoView view = Toolkit::VideoView::New();
233 DALI_TEST_CHECK( view );
239 map.Insert( VOLUME_LEFT, 0.5f );
240 map.Insert( VOLUME_RIGHT, 0.5f );
242 view.SetProperty( VideoView::Property::VOLUME, map );
243 Property::Value val = view.GetProperty( VideoView::Property::VOLUME );
246 DALI_TEST_CHECK( val.Get( map2 ) );
248 Property::Value* volumeLeft = map2.Find( VOLUME_LEFT );
249 Property::Value* volumeRight = map2.Find( VOLUME_RIGHT );
251 DALI_TEST_CHECK( volumeLeft && volumeLeft->Get( left ) );
252 DALI_TEST_CHECK( volumeRight && volumeRight->Get( right ) );
253 DALI_TEST_CHECK( left == 0.5f );
254 DALI_TEST_CHECK( right == 0.5f );
259 int UtcDaliVideoViewCopyAndAssignment(void)
261 ToolkitTestApplication application;
263 VideoView view = Toolkit::VideoView::New();
264 DALI_TEST_CHECK( view );
266 VideoView copy( view );
267 DALI_TEST_CHECK( view == copy );
270 DALI_TEST_CHECK( !assign );
273 DALI_TEST_CHECK( assign == view );
278 int UtcDaliVideoViewMoveConstructor(void)
280 ToolkitTestApplication application;
282 VideoView view = Toolkit::VideoView::New();
283 DALI_TEST_EQUALS( 1, view.GetBaseObject().ReferenceCount(), TEST_LOCATION );
284 view.SetProperty( VideoView::Property::LOOPING, true );
285 DALI_TEST_CHECK( view.GetProperty<bool>( VideoView::Property::LOOPING ) );
287 VideoView moved = std::move( view );
288 DALI_TEST_CHECK( moved );
289 DALI_TEST_EQUALS( 1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION );
290 DALI_TEST_CHECK( moved.GetProperty<bool>( VideoView::Property::LOOPING ) );
291 DALI_TEST_CHECK( !view );
296 int UtcDaliVideoViewMoveAssignment(void)
298 ToolkitTestApplication application;
300 VideoView view = Toolkit::VideoView::New();
301 DALI_TEST_EQUALS( 1, view.GetBaseObject().ReferenceCount(), TEST_LOCATION );
302 view.SetProperty( VideoView::Property::LOOPING, true );
303 DALI_TEST_CHECK( view.GetProperty<bool>( VideoView::Property::LOOPING ) );
306 moved = std::move( view );
307 DALI_TEST_CHECK( moved );
308 DALI_TEST_EQUALS( 1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION );
309 DALI_TEST_CHECK( moved.GetProperty<bool>( VideoView::Property::LOOPING ) );
310 DALI_TEST_CHECK( !view );
315 int UtcDaliVideoViewTypeRegistry(void)
317 ToolkitTestApplication application;
319 TypeRegistry typeRegistry = TypeRegistry::Get();
320 DALI_TEST_CHECK( typeRegistry );
322 TypeInfo typeInfo = typeRegistry.GetTypeInfo( "VideoView" );
323 DALI_TEST_CHECK( typeInfo );
325 BaseHandle handle = typeInfo.CreateInstance();
326 DALI_TEST_CHECK( handle );
328 VideoView view = VideoView::DownCast( handle );
329 DALI_TEST_CHECK( view );
334 int UtcDaliVideoViewMethodsForCoverage(void)
336 ToolkitTestApplication application;
338 VideoView videoView = VideoView::New();
339 DALI_TEST_CHECK( videoView );
344 videoView.Forward(10);
345 videoView.Backward(10);
347 Toolkit::DevelVideoView::GetMediaPlayer( videoView );
349 VideoView::VideoViewSignalType& signal = videoView.FinishedSignal();
350 DALI_TEST_EQUALS( 0, signal.GetConnectionCount(), TEST_LOCATION );
355 int UtcDaliVideoViewMethodsForRenderType(void)
357 ToolkitTestApplication application;
358 VideoView videoView = VideoView::New();
359 DALI_TEST_CHECK( videoView );
361 Property::Map windowSurfaceTarget;
362 Property::Map nativeImageTarget;
364 windowSurfaceTarget.Insert( RENDERING_TYPE, "windowSurfaceTarget" );
365 nativeImageTarget.Insert( RENDERING_TYPE, "nativeImageTarget" );
368 Property::Value value;
369 videoView.SetProperty( VideoView::Property::VIDEO, windowSurfaceTarget );
371 value = videoView.GetProperty( VideoView::Property::VIDEO );
372 DALI_TEST_CHECK( value.Get( map ) );
374 Property::Value* type = map.Find( RENDERING_TYPE );
375 DALI_TEST_CHECK( type );
376 DALI_TEST_EQUALS( "windowSurfaceTarget", type->Get<std::string>(), TEST_LOCATION );
378 videoView.SetProperty( VideoView::Property::VIDEO, nativeImageTarget );
380 value = videoView.GetProperty( VideoView::Property::VIDEO );
381 DALI_TEST_CHECK( value.Get( map ) );
382 type = map.Find( RENDERING_TYPE );
384 DALI_TEST_CHECK( type );
385 DALI_TEST_EQUALS( "nativeImageTarget", type->Get<std::string>(), TEST_LOCATION );
390 int UtcDaliVideoViewCustomShaderForCoverage(void)
392 ToolkitTestApplication application;
393 VideoView videoView = VideoView::New();
394 DALI_TEST_CHECK( videoView );
396 ToolkitApplication::DECODED_IMAGES_SUPPORTED = true;
398 videoView.SetProperty( Toolkit::VideoView::Property::UNDERLAY, false );
399 bool isUnderlay = videoView.GetProperty( Toolkit::VideoView::Property::UNDERLAY ).Get< bool >();
400 DALI_TEST_CHECK( !isUnderlay );
402 application.GetScene().Add( videoView );
403 videoView.SetProperty( VideoView::Property::VIDEO, "testvideo" );
405 Property::Map customShader;
406 customShader.Insert( "vertexShader", VERTEX_SHADER );
407 customShader.Insert( "fragmentShader", FRAGMENT_SHADER );
410 map.Insert( "shader", customShader );
412 videoView.SetProperty( VideoView::Property::VIDEO, map );
415 Property::Value value = videoView.GetProperty( VideoView::Property::VIDEO );
417 DALI_TEST_CHECK( !value.Get( map2 ) );
421 int UtcDaliVideoViewMethodsForCoverage2(void)
423 ToolkitTestApplication application;
424 VideoView videoView = VideoView::New();
425 DALI_TEST_CHECK( videoView );
427 Property::Map windowSurfaceTarget;
429 windowSurfaceTarget.Insert( RENDERING_TYPE, "windowSurfaceTarget" );
431 application.GetScene().Add( videoView );
433 application.SendNotification();
434 application.Render();
437 Property::Value value;
438 videoView.SetProperty( VideoView::Property::VIDEO, windowSurfaceTarget );
440 value = videoView.GetProperty( VideoView::Property::VIDEO );
441 DALI_TEST_CHECK( value.Get( map ) );
443 Property::Value* type = map.Find( RENDERING_TYPE );
444 DALI_TEST_CHECK( type );
445 DALI_TEST_EQUALS( "windowSurfaceTarget", type->Get<std::string>(), TEST_LOCATION );
447 Vector3 vector(100.0f, 100.0f, 0.0f);
449 DALI_TEST_CHECK(vector != videoView.GetCurrentProperty< Vector3 >( Actor::Property::SIZE ));
450 videoView.SetProperty( Actor::Property::SIZE, vector );
452 application.SendNotification();
453 application.Render();
455 // Check the size in the new frame
456 DALI_TEST_CHECK(vector == videoView.GetCurrentProperty< Vector3 >( Actor::Property::SIZE ));
461 int UtcDaliVideoViewCustomShaderForCoverage3(void)
463 ToolkitTestApplication application;
464 VideoView videoView = VideoView::New();
465 DALI_TEST_CHECK( videoView );
467 ToolkitApplication::DECODED_IMAGES_SUPPORTED = true;
469 videoView.SetProperty( Toolkit::VideoView::Property::UNDERLAY, false );
470 bool isUnderlay = videoView.GetProperty( Toolkit::VideoView::Property::UNDERLAY ).Get< bool >();
471 DALI_TEST_CHECK( !isUnderlay );
473 application.GetScene().Add( videoView );
474 videoView.SetProperty( VideoView::Property::VIDEO, "testvideo" );
476 Property::Map customShader;
477 customShader.Insert( "vertexShader", VERTEX_SHADER );
480 map.Insert( "shader", customShader );
482 videoView.SetProperty( VideoView::Property::VIDEO, map );
485 Property::Value value = videoView.GetProperty( VideoView::Property::VIDEO );
487 DALI_TEST_CHECK( !value.Get( map2 ) );
491 int UtcDaliVideoViewPropertyUnderlay(void)
493 ToolkitTestApplication application;
494 tet_infoline("UtcDaliVideoViewPropertyUnderlay");
495 ToolkitApplication::DECODED_IMAGES_SUPPORTED = true;
497 VideoView view = VideoView::New();
498 DALI_TEST_CHECK( view );
500 application.GetScene().Add( view );
503 application.SendNotification();
504 application.Render();
506 bool isUnderlay = view.GetProperty( Toolkit::VideoView::Property::UNDERLAY ).Get< bool >();
507 DALI_TEST_CHECK( isUnderlay );
510 view.SetProperty( Toolkit::VideoView::Property::UNDERLAY, false );
511 isUnderlay = view.GetProperty( Toolkit::VideoView::Property::UNDERLAY ).Get< bool >();
512 DALI_TEST_CHECK( !isUnderlay );
515 view.SetProperty( Toolkit::VideoView::Property::UNDERLAY, true );
516 isUnderlay = view.GetProperty( Toolkit::VideoView::Property::UNDERLAY ).Get< bool >();
517 DALI_TEST_CHECK( isUnderlay );
519 // If platform api doesn't provide any API or feature for decoded images of video,
520 // UNDERLAY should be true
521 ToolkitApplication::DECODED_IMAGES_SUPPORTED = false;
523 view.SetProperty( Toolkit::VideoView::Property::UNDERLAY, false );
524 isUnderlay = view.GetProperty( Toolkit::VideoView::Property::UNDERLAY ).Get< bool >();
525 DALI_TEST_CHECK( isUnderlay );
528 ToolkitApplication::DECODED_IMAGES_SUPPORTED = true;
530 view.SetProperty( Toolkit::VideoView::Property::UNDERLAY, true );
531 view.SetProperty( Toolkit::VideoView::Property::UNDERLAY, false );
532 isUnderlay = view.GetProperty( Toolkit::VideoView::Property::UNDERLAY ).Get< bool >();
533 DALI_TEST_CHECK( !isUnderlay );
540 int UtcDaliVideoViewPropertyPlayPosition(void)
542 ToolkitTestApplication application;
543 tet_infoline("UtcDaliVideoViewPropertyPlayPosition");
545 VideoView view = VideoView::New();
546 DALI_TEST_CHECK( view );
548 application.GetScene().Add( view );
551 application.SendNotification();
552 application.Render();
554 int playPos = view.GetProperty( Toolkit::VideoView::Property::PLAY_POSITION ).Get< int >();
555 DALI_TEST_CHECK( playPos == 0 );
557 view.SetProperty( Toolkit::VideoView::Property::PLAY_POSITION, 10 );
558 playPos = view.GetProperty( Toolkit::VideoView::Property::PLAY_POSITION ).Get< int >();
559 // Actually setting play position will be async
560 // Actual platform result may be different.
561 DALI_TEST_CHECK( playPos == 10 );
567 int UtcDaliVideoViewNew2(void)
569 ToolkitTestApplication application;
570 tet_infoline("UtcDaliVideoViewNew2");
572 VideoView view = VideoView::New( true );
573 DALI_TEST_CHECK( view );
575 application.GetScene().Add( view );
578 application.SendNotification();
579 application.Render();
581 VideoView view2 = VideoView::New( "", false );
582 DALI_TEST_CHECK( view2 );
584 application.GetScene().Add( view2 );
587 application.SendNotification();
588 application.Render();
593 int UtcDaliVideoViewRaiseAboveLowerBelow(void)
595 ToolkitTestApplication application;
596 tet_infoline("UtcDaliVideoViewRaiseAboveLowerBelow");
598 VideoView view = VideoView::New( true );
599 DALI_TEST_CHECK( view );
601 application.GetScene().Add( view );
604 application.SendNotification();
605 application.Render();
607 VideoView view2 = VideoView::New( "", false );
608 DALI_TEST_CHECK( view2 );
610 application.GetScene().Add( view2 );
613 application.SendNotification();
614 application.Render();
616 view.RaiseAbove(view2);
617 view.LowerBelow(view2);
622 int UtcDaliVideoViewRaiseTopLowerBottom(void)
624 ToolkitTestApplication application;
625 tet_infoline("UtcDaliVideoViewRaiseTopLowerBottom");
627 VideoView view = VideoView::New( true );
628 DALI_TEST_CHECK( view );
630 application.GetScene().Add( view );
633 application.SendNotification();
634 application.Render();
636 VideoView view2 = VideoView::New( "", false );
637 DALI_TEST_CHECK( view2 );
639 application.GetScene().Add( view2 );
642 application.SendNotification();
643 application.Render();
646 view.LowerToBottom();
652 int UtcDaliVideoViewPropertyDisplayMode(void)
654 ToolkitTestApplication application;
655 tet_infoline("UtcDaliVideoViewPropertyDisplayMode");
657 VideoView view = VideoView::New();
658 DALI_TEST_CHECK( view );
660 application.GetScene().Add( view );
663 application.SendNotification();
664 application.Render();
666 view.SetProperty( Toolkit::VideoView::Property::DISPLAY_MODE, Toolkit::VideoView::DisplayMode::DST_ROI );
667 int displayMode = view.GetProperty( Toolkit::VideoView::Property::DISPLAY_MODE ).Get< int >();
668 DALI_TEST_CHECK( displayMode == Toolkit::VideoView::DisplayMode::DST_ROI );
674 int UtcDaliVideoViewCustomShader(void)
676 ToolkitTestApplication application;
677 tet_infoline( "VideoView with custom shader" );
679 VideoView view = VideoView::New( false );
680 DALI_TEST_CHECK( view );
682 ToolkitApplication::DECODED_IMAGES_SUPPORTED = true;
684 view.SetProperty( Toolkit::VideoView::Property::UNDERLAY, false );
685 bool isUnderlay = view.GetProperty( Toolkit::VideoView::Property::UNDERLAY ).Get< bool >();
686 DALI_TEST_CHECK( !isUnderlay );
688 application.GetScene().Add( view );
689 view.SetProperty( VideoView::Property::VIDEO, "testvideo" );
691 /* insert custom shader */
692 Property::Map customShader;
693 std::string fragmentShaderString;
694 fragmentShaderString.reserve( strlen( fragmentShaderPrefix ) + strlen( FRAGMENT_SHADER ) );
695 fragmentShaderString.append( fragmentShaderPrefix );
696 fragmentShaderString.append( FRAGMENT_SHADER );
697 customShader.Insert( "vertexShader", VERTEX_SHADER );
698 customShader.Insert( "fragmentShader", fragmentShaderString );
701 map.Insert( "shader", customShader );
703 view.SetProperty( VideoView::Property::VIDEO, map );
705 /* do render for check custom shader */
706 application.GetScene().Add( view );
709 application.SendNotification();
710 application.Render();
713 DALI_TEST_CHECK( view.GetRendererCount() == 1u );
714 Renderer renderer = view.GetRendererAt( 0 );
715 Shader shader = renderer.GetShader();
716 DALI_TEST_CHECK( shader );
718 Property::Value value = shader.GetProperty(Shader::Property::PROGRAM);
719 Property::Map* shaderMap = value.GetMap();
720 DALI_TEST_CHECK( shaderMap );
722 Property::Value* fragment = shaderMap->Find( "fragment" ); // fragment key name from shader-impl.cpp
723 DALI_TEST_EQUALS( fragmentShaderString, fragment->Get<std::string>(), TEST_LOCATION );
725 Property::Value* vertex = shaderMap->Find( "vertex" ); // vertex key name from shader-impl.cpp
726 DALI_TEST_EQUALS( VERTEX_SHADER, vertex->Get<std::string>(), TEST_LOCATION );
731 // Functor to test whether a Finish signal is emitted
732 struct AnimationFinishCheck
734 AnimationFinishCheck(bool& signalReceived)
735 : mSignalReceived(signalReceived)
739 void operator()(Animation& animation)
741 mSignalReceived = true;
746 mSignalReceived = false;
749 void CheckSignalReceived()
751 if (!mSignalReceived)
753 tet_printf("Expected Finish signal was not received\n");
754 tet_result(TET_FAIL);
758 tet_result(TET_PASS);
762 void CheckSignalNotReceived()
766 tet_printf("Unexpected Finish signal was received\n");
767 tet_result(TET_FAIL);
771 tet_result(TET_PASS);
775 bool& mSignalReceived; // owned by individual tests
778 int UtcDaliVideoViewSyncAniamtionForCoverage(void)
780 ToolkitTestApplication application;
782 VideoView videoView = DevelVideoView::New( Dali::VideoSyncMode::ENABLED );
783 DALI_TEST_CHECK( videoView );
785 application.GetScene().Add( videoView );
787 // Build the animation
788 float durationSeconds(1.0f);
789 Animation animation = Animation::New(durationSeconds);
791 // Start the animation
792 Vector3 targetPosition(10.0f, 10.0f, 10.0f);
793 animation.AnimateTo(Property(videoView, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
794 DevelVideoView::PlayAnimation( videoView, animation );
796 bool signalReceived(false);
797 AnimationFinishCheck finishCheck(signalReceived);
798 animation.FinishedSignal().Connect(&application, finishCheck);
800 application.SendNotification();
801 application.Render(static_cast<unsigned int>(durationSeconds*1000.0f) - 1u/*just less than the animation duration*/);
803 // We didn't expect the animation to finish yet
804 application.SendNotification();
805 finishCheck.CheckSignalNotReceived();
807 application.Render(2u/*just beyond the animation duration*/);
809 // We did expect the animation to finish
810 application.SendNotification();
811 finishCheck.CheckSignalReceived();
812 DALI_TEST_EQUALS( targetPosition, videoView.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), TEST_LOCATION );
814 // Restart the animation, with a different duration
820 int UtcDaliVideoViewASyncAniamtionForCoverage(void)
822 ToolkitTestApplication application;
824 VideoView videoView = DevelVideoView::New( Dali::VideoSyncMode::DISABLED );
825 DALI_TEST_CHECK( videoView );
827 application.GetScene().Add( videoView );
829 // Build the animation
830 float durationSeconds(1.0f);
831 Animation animation = Animation::New(durationSeconds);
833 // Start the animation
834 Vector3 targetPosition(10.0f, 10.0f, 10.0f);
835 animation.AnimateTo(Property(videoView, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
836 DevelVideoView::PlayAnimation( videoView, animation );
838 bool signalReceived(false);
839 AnimationFinishCheck finishCheck(signalReceived);
840 animation.FinishedSignal().Connect(&application, finishCheck);
842 application.SendNotification();
843 application.Render(static_cast<unsigned int>(durationSeconds*1000.0f) - 1u/*just less than the animation duration*/);
845 // We didn't expect the animation to finish yet
846 application.SendNotification();
847 finishCheck.CheckSignalNotReceived();
849 application.Render(2u/*just beyond the animation duration*/);
851 // We did expect the animation to finish
852 application.SendNotification();
853 finishCheck.CheckSignalReceived();
854 DALI_TEST_EQUALS( targetPosition, videoView.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), TEST_LOCATION );
856 // Restart the animation, with a different duration
862 int UtcDaliVideoViewResizeWithSynchronization(void)
864 ToolkitTestApplication application;
865 VideoView videoView = DevelVideoView::New( Dali::VideoSyncMode::ENABLED );
866 DALI_TEST_CHECK( videoView );
868 application.GetScene().Add( videoView );
870 Vector3 vector(50.0f, 200.0f, 0.0f);
871 videoView.SetProperty( Actor::Property::SIZE, vector );
873 application.SendNotification();
874 application.Render();
876 DALI_TEST_CHECK(vector == videoView.GetCurrentProperty< Vector3 >( Actor::Property::SIZE ));
882 int UtcDaliVideoViewSynchronizationForWindowRotation(void)
884 ToolkitTestApplication application;
885 tet_infoline("UtcDaliVideoViewSynchronizationForWindowRotation");
887 Window window = Window::New(PositionSize(0,0,100,100) ,"", false);
888 DALI_TEST_CHECK( window );
890 VideoView view = VideoView::New( true );
891 DALI_TEST_CHECK( view );
897 DevelWindow::SetPositionSize(window,PositionSize(0,0,480, 240));
899 application.SendNotification();
900 application.Render();