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 UtcDaliVideoViewPropertyUnderlay(void)
463 ToolkitTestApplication application;
464 tet_infoline("UtcDaliVideoViewPropertyUnderlay");
465 ToolkitApplication::DECODED_IMAGES_SUPPORTED = true;
467 VideoView view = VideoView::New();
468 DALI_TEST_CHECK( view );
470 application.GetScene().Add( view );
473 application.SendNotification();
474 application.Render();
476 bool isUnderlay = view.GetProperty( Toolkit::VideoView::Property::UNDERLAY ).Get< bool >();
477 DALI_TEST_CHECK( isUnderlay );
480 view.SetProperty( Toolkit::VideoView::Property::UNDERLAY, false );
481 isUnderlay = view.GetProperty( Toolkit::VideoView::Property::UNDERLAY ).Get< bool >();
482 DALI_TEST_CHECK( !isUnderlay );
485 view.SetProperty( Toolkit::VideoView::Property::UNDERLAY, true );
486 isUnderlay = view.GetProperty( Toolkit::VideoView::Property::UNDERLAY ).Get< bool >();
487 DALI_TEST_CHECK( isUnderlay );
489 // If platform api doesn't provide any API or feature for decoded images of video,
490 // UNDERLAY should be true
491 ToolkitApplication::DECODED_IMAGES_SUPPORTED = false;
493 view.SetProperty( Toolkit::VideoView::Property::UNDERLAY, false );
494 isUnderlay = view.GetProperty( Toolkit::VideoView::Property::UNDERLAY ).Get< bool >();
495 DALI_TEST_CHECK( isUnderlay );
498 ToolkitApplication::DECODED_IMAGES_SUPPORTED = true;
500 view.SetProperty( Toolkit::VideoView::Property::UNDERLAY, true );
501 view.SetProperty( Toolkit::VideoView::Property::UNDERLAY, false );
502 isUnderlay = view.GetProperty( Toolkit::VideoView::Property::UNDERLAY ).Get< bool >();
503 DALI_TEST_CHECK( !isUnderlay );
510 int UtcDaliVideoViewPropertyPlayPosition(void)
512 ToolkitTestApplication application;
513 tet_infoline("UtcDaliVideoViewPropertyPlayPosition");
515 VideoView view = VideoView::New();
516 DALI_TEST_CHECK( view );
518 application.GetScene().Add( view );
521 application.SendNotification();
522 application.Render();
524 int playPos = view.GetProperty( Toolkit::VideoView::Property::PLAY_POSITION ).Get< int >();
525 DALI_TEST_CHECK( playPos == 0 );
527 view.SetProperty( Toolkit::VideoView::Property::PLAY_POSITION, 10 );
528 playPos = view.GetProperty( Toolkit::VideoView::Property::PLAY_POSITION ).Get< int >();
529 // Actually setting play position will be async
530 // Actual platform result may be different.
531 DALI_TEST_CHECK( playPos == 10 );
537 int UtcDaliVideoViewNew2(void)
539 ToolkitTestApplication application;
540 tet_infoline("UtcDaliVideoViewNew2");
542 VideoView view = VideoView::New( true );
543 DALI_TEST_CHECK( view );
545 application.GetScene().Add( view );
548 application.SendNotification();
549 application.Render();
551 VideoView view2 = VideoView::New( "", false );
552 DALI_TEST_CHECK( view2 );
554 application.GetScene().Add( view2 );
557 application.SendNotification();
558 application.Render();
563 int UtcDaliVideoViewRaiseAboveLowerBelow(void)
565 ToolkitTestApplication application;
566 tet_infoline("UtcDaliVideoViewRaiseAboveLowerBelow");
568 VideoView view = VideoView::New( true );
569 DALI_TEST_CHECK( view );
571 application.GetScene().Add( view );
574 application.SendNotification();
575 application.Render();
577 VideoView view2 = VideoView::New( "", false );
578 DALI_TEST_CHECK( view2 );
580 application.GetScene().Add( view2 );
583 application.SendNotification();
584 application.Render();
586 view.RaiseAbove(view2);
587 view.LowerBelow(view2);
592 int UtcDaliVideoViewRaiseTopLowerBottom(void)
594 ToolkitTestApplication application;
595 tet_infoline("UtcDaliVideoViewRaiseTopLowerBottom");
597 VideoView view = VideoView::New( true );
598 DALI_TEST_CHECK( view );
600 application.GetScene().Add( view );
603 application.SendNotification();
604 application.Render();
606 VideoView view2 = VideoView::New( "", false );
607 DALI_TEST_CHECK( view2 );
609 application.GetScene().Add( view2 );
612 application.SendNotification();
613 application.Render();
616 view.LowerToBottom();
622 int UtcDaliVideoViewPropertyDisplayMode(void)
624 ToolkitTestApplication application;
625 tet_infoline("UtcDaliVideoViewPropertyDisplayMode");
627 VideoView view = VideoView::New();
628 DALI_TEST_CHECK( view );
630 application.GetScene().Add( view );
633 application.SendNotification();
634 application.Render();
636 view.SetProperty( Toolkit::VideoView::Property::DISPLAY_MODE, Toolkit::VideoView::DisplayMode::DST_ROI );
637 int displayMode = view.GetProperty( Toolkit::VideoView::Property::DISPLAY_MODE ).Get< int >();
638 DALI_TEST_CHECK( displayMode == Toolkit::VideoView::DisplayMode::DST_ROI );
644 int UtcDaliVideoViewCustomShader(void)
646 ToolkitTestApplication application;
647 tet_infoline( "VideoView with custom shader" );
649 VideoView view = VideoView::New( false );
650 DALI_TEST_CHECK( view );
652 ToolkitApplication::DECODED_IMAGES_SUPPORTED = true;
654 view.SetProperty( Toolkit::VideoView::Property::UNDERLAY, false );
655 bool isUnderlay = view.GetProperty( Toolkit::VideoView::Property::UNDERLAY ).Get< bool >();
656 DALI_TEST_CHECK( !isUnderlay );
658 application.GetScene().Add( view );
659 view.SetProperty( VideoView::Property::VIDEO, "testvideo" );
661 /* insert custom shader */
662 Property::Map customShader;
663 std::string fragmentShaderString;
664 fragmentShaderString.reserve( strlen( fragmentShaderPrefix ) + strlen( FRAGMENT_SHADER ) );
665 fragmentShaderString.append( fragmentShaderPrefix );
666 fragmentShaderString.append( FRAGMENT_SHADER );
667 customShader.Insert( "vertexShader", VERTEX_SHADER );
668 customShader.Insert( "fragmentShader", fragmentShaderString );
671 map.Insert( "shader", customShader );
673 view.SetProperty( VideoView::Property::VIDEO, map );
675 /* do render for check custom shader */
676 application.GetScene().Add( view );
679 application.SendNotification();
680 application.Render();
683 DALI_TEST_CHECK( view.GetRendererCount() == 1u );
684 Renderer renderer = view.GetRendererAt( 0 );
685 Shader shader = renderer.GetShader();
686 DALI_TEST_CHECK( shader );
688 Property::Value value = shader.GetProperty(Shader::Property::PROGRAM);
689 Property::Map* shaderMap = value.GetMap();
690 DALI_TEST_CHECK( shaderMap );
692 Property::Value* fragment = shaderMap->Find( "fragment" ); // fragment key name from shader-impl.cpp
693 DALI_TEST_EQUALS( fragmentShaderString, fragment->Get<std::string>(), TEST_LOCATION );
695 Property::Value* vertex = shaderMap->Find( "vertex" ); // vertex key name from shader-impl.cpp
696 DALI_TEST_EQUALS( VERTEX_SHADER, vertex->Get<std::string>(), TEST_LOCATION );
701 // Functor to test whether a Finish signal is emitted
702 struct AnimationFinishCheck
704 AnimationFinishCheck(bool& signalReceived)
705 : mSignalReceived(signalReceived)
709 void operator()(Animation& animation)
711 mSignalReceived = true;
716 mSignalReceived = false;
719 void CheckSignalReceived()
721 if (!mSignalReceived)
723 tet_printf("Expected Finish signal was not received\n");
724 tet_result(TET_FAIL);
728 tet_result(TET_PASS);
732 void CheckSignalNotReceived()
736 tet_printf("Unexpected Finish signal was received\n");
737 tet_result(TET_FAIL);
741 tet_result(TET_PASS);
745 bool& mSignalReceived; // owned by individual tests
748 int UtcDaliVideoViewSyncAniamtionForCoverage(void)
750 ToolkitTestApplication application;
752 VideoView videoView = DevelVideoView::New( Dali::VideoSyncMode::ENABLED );
753 DALI_TEST_CHECK( videoView );
755 application.GetScene().Add( videoView );
757 // Build the animation
758 float durationSeconds(1.0f);
759 Animation animation = Animation::New(durationSeconds);
761 // Start the animation
762 Vector3 targetPosition(10.0f, 10.0f, 10.0f);
763 animation.AnimateTo(Property(videoView, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
764 DevelVideoView::PlayAnimation( videoView, animation );
766 bool signalReceived(false);
767 AnimationFinishCheck finishCheck(signalReceived);
768 animation.FinishedSignal().Connect(&application, finishCheck);
770 application.SendNotification();
771 application.Render(static_cast<unsigned int>(durationSeconds*1000.0f) - 1u/*just less than the animation duration*/);
773 // We didn't expect the animation to finish yet
774 application.SendNotification();
775 finishCheck.CheckSignalNotReceived();
777 application.Render(2u/*just beyond the animation duration*/);
779 // We did expect the animation to finish
780 application.SendNotification();
781 finishCheck.CheckSignalReceived();
782 DALI_TEST_EQUALS( targetPosition, videoView.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), TEST_LOCATION );
784 // Restart the animation, with a different duration
790 int UtcDaliVideoViewASyncAniamtionForCoverage(void)
792 ToolkitTestApplication application;
794 VideoView videoView = DevelVideoView::New( Dali::VideoSyncMode::DISABLED );
795 DALI_TEST_CHECK( videoView );
797 application.GetScene().Add( videoView );
799 // Build the animation
800 float durationSeconds(1.0f);
801 Animation animation = Animation::New(durationSeconds);
803 // Start the animation
804 Vector3 targetPosition(10.0f, 10.0f, 10.0f);
805 animation.AnimateTo(Property(videoView, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
806 DevelVideoView::PlayAnimation( videoView, animation );
808 bool signalReceived(false);
809 AnimationFinishCheck finishCheck(signalReceived);
810 animation.FinishedSignal().Connect(&application, finishCheck);
812 application.SendNotification();
813 application.Render(static_cast<unsigned int>(durationSeconds*1000.0f) - 1u/*just less than the animation duration*/);
815 // We didn't expect the animation to finish yet
816 application.SendNotification();
817 finishCheck.CheckSignalNotReceived();
819 application.Render(2u/*just beyond the animation duration*/);
821 // We did expect the animation to finish
822 application.SendNotification();
823 finishCheck.CheckSignalReceived();
824 DALI_TEST_EQUALS( targetPosition, videoView.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), TEST_LOCATION );
826 // Restart the animation, with a different duration
832 int UtcDaliVideoViewResizeWithSynchronization(void)
834 ToolkitTestApplication application;
835 VideoView videoView = DevelVideoView::New( Dali::VideoSyncMode::ENABLED );
836 DALI_TEST_CHECK( videoView );
838 application.GetScene().Add( videoView );
840 Vector3 vector(50.0f, 200.0f, 0.0f);
841 videoView.SetProperty( Actor::Property::SIZE, vector );
843 application.SendNotification();
844 application.Render();
846 DALI_TEST_CHECK(vector == videoView.GetCurrentProperty< Vector3 >( Actor::Property::SIZE ));
852 int UtcDaliVideoViewSynchronizationForWindowRotation(void)
854 ToolkitTestApplication application;
855 tet_infoline("UtcDaliVideoViewSynchronizationForWindowRotation");
857 Window window = Window::New(PositionSize(0,0,100,100) ,"", false);
858 DALI_TEST_CHECK( window );
860 VideoView view = VideoView::New( true );
861 DALI_TEST_CHECK( view );
867 DevelWindow::SetPositionSize(window,PositionSize(0,0,480, 240));
869 application.SendNotification();
870 application.Render();