Merge "SVACE issue resolved" into devel/master
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-VideoView.cpp
1 /*
2  * Copyright (c) 2015 Samsung Electronics Co., Ltd.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16  */
17
18 #include <iostream>
19 #include <stdlib.h>
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
24 using namespace Dali;
25 using namespace Dali::Toolkit;
26
27 namespace
28 {
29 const char* const TEST_FILE( "test.mp4" );
30 const char* const VOLUME_LEFT( "volumeLeft" );
31 const char* const VOLUME_RIGHT( "volumeRight" );
32 const char* const RENDERING_TYPE( "renderingTarget" );
33
34 }
35
36 void video_view_startup(void)
37 {
38   test_return_value = TET_UNDEF;
39 }
40
41 void video_view_cleanup(void)
42 {
43   test_return_value = TET_PASS;
44 }
45
46 // Negative test case for a method
47 int UtcDaliVideoViewUninitialized(void)
48 {
49   ToolkitTestApplication application;
50   tet_infoline(" UtcDaliVideoViewUninitialized");
51
52   Toolkit::VideoView view;
53
54   try
55   {
56     // New() must be called to create a VideoView or it wont be valid.
57     Actor a = Actor::New();
58     view.Add( a );
59     DALI_TEST_CHECK( false );
60   }
61   catch (Dali::DaliException& e)
62   {
63     // Tests that a negative test of an assertion succeeds
64     DALI_TEST_PRINT_ASSERT( e );
65     DALI_TEST_CHECK(!view);
66   }
67   END_TEST;
68 }
69
70 // Positive test case for a method
71 int UtcDaliVideoViewNew(void)
72 {
73   ToolkitTestApplication application;
74   tet_infoline(" UtcDaliVideoViewNew");
75
76   Toolkit::VideoView view = Toolkit::VideoView::New();
77   DALI_TEST_CHECK( view );
78
79   Toolkit::VideoView view2 = Toolkit::VideoView::New( "" );
80   DALI_TEST_CHECK( view2 );
81   END_TEST;
82 }
83
84 // Positive test case for a method
85 int UtcDaliVideoViewDownCast(void)
86 {
87   ToolkitTestApplication application;
88   tet_infoline(" UtcDaliVideoViewDownCast");
89
90   Toolkit::VideoView view = Toolkit::VideoView::New();
91   BaseHandle handle(view);
92
93   Toolkit::VideoView view2 = Toolkit::VideoView::DownCast( handle );
94   DALI_TEST_CHECK( view );
95   DALI_TEST_CHECK( view2 );
96   DALI_TEST_CHECK( view == view2 );
97   END_TEST;
98 }
99
100 // Positive test case for a method
101 int UtcDaliVideoViewProperty1(void)
102 {
103   ToolkitTestApplication application;
104   tet_infoline(" UtcDaliVideoViewProperty1");
105
106   Toolkit::VideoView view = Toolkit::VideoView::New();
107   DALI_TEST_CHECK( view );
108
109   std::string file;
110   view.SetProperty( VideoView::Property::VIDEO, TEST_FILE );
111   Property::Value val = view.GetProperty( VideoView::Property::VIDEO );
112   DALI_TEST_CHECK( val.Get( file ) );
113   DALI_TEST_CHECK( file == TEST_FILE );
114   END_TEST;
115 }
116
117 // Positive test case for a method
118 int UtcDaliVideoViewProperty1b(void)
119 {
120   ToolkitTestApplication application;
121   tet_infoline(" UtcDaliVideoViewProperty1");
122
123   Toolkit::VideoView view = Toolkit::VideoView::New();
124   DALI_TEST_CHECK( view );
125   Stage stage = Stage::GetCurrent();
126
127   std::string file;
128   Property::Map map;
129
130   view.SetProperty( VideoView::Property::VIDEO, Property::Map()
131                     .Add("rendererType", "IMAGE")
132                     .Add("url", "video.mpg") // Note, videoView doesn't use this url
133                     .Add("RENDERING_TARGET", "windowSurfaceTarget" )
134                     .Add("width", 100)
135                     .Add("height", 100) );
136
137   stage.Add( view );
138
139   Property::Value val = view.GetProperty( VideoView::Property::VIDEO );
140   Property::Map* resultMap = val.GetMap();
141
142   DALI_TEST_CHECK( resultMap );
143   Property::Value* value = resultMap->Find("url");
144   DALI_TEST_CHECK( value );
145   DALI_TEST_EQUALS( value->Get<std::string>(), "video.mpg", TEST_LOCATION );
146
147   stage.Remove( view );
148
149   END_TEST;
150 }
151
152 int UtcDaliVideoViewProperty2(void)
153 {
154   ToolkitTestApplication application;
155   tet_infoline(" UtcDaliVideoViewProperty2");
156
157   Toolkit::VideoView view = Toolkit::VideoView::New();
158   DALI_TEST_CHECK( view );
159
160   bool looping;
161   Property::Value val = view.GetProperty( VideoView::Property::LOOPING );
162   DALI_TEST_CHECK( val.Get( looping ) );
163   DALI_TEST_CHECK( !looping );
164
165   view.SetProperty( VideoView::Property::LOOPING, true );
166   val = view.GetProperty( VideoView::Property::LOOPING );
167   DALI_TEST_CHECK( val.Get( looping ) );
168   DALI_TEST_CHECK( looping );
169   END_TEST;
170 }
171
172 int UtcDaliVideoViewProperty3(void)
173 {
174   ToolkitTestApplication application;
175   tet_infoline(" UtcDaliVideoViewProperty3");
176
177   Toolkit::VideoView view = Toolkit::VideoView::New();
178   DALI_TEST_CHECK( view );
179
180   bool muted;
181   Property::Value val = view.GetProperty( VideoView::Property::MUTED );
182   DALI_TEST_CHECK( val.Get( muted ) );
183   DALI_TEST_CHECK( !muted );
184
185   view.SetProperty( VideoView::Property::MUTED, true );
186   val = view.GetProperty( VideoView::Property::MUTED );
187   DALI_TEST_CHECK( val.Get( muted ) );
188   DALI_TEST_CHECK( muted );
189
190   END_TEST;
191 }
192
193 int UtcDaliVideoViewProperty4(void)
194 {
195   ToolkitTestApplication application;
196   tet_infoline(" UtcDaliVideoViewProperty4");
197
198   Toolkit::VideoView view = Toolkit::VideoView::New();
199   DALI_TEST_CHECK( view );
200
201   float left, right;
202   left = right = 0.f;
203
204   Property::Map map;
205   map.Insert( VOLUME_LEFT, 0.5f );
206   map.Insert( VOLUME_RIGHT, 0.5f );
207
208   view.SetProperty( VideoView::Property::VOLUME, map );
209   Property::Value val = view.GetProperty( VideoView::Property::VOLUME );
210
211   Property::Map map2;
212   DALI_TEST_CHECK( val.Get( map2 ) );
213
214   Property::Value* volumeLeft = map2.Find( VOLUME_LEFT );
215   Property::Value* volumeRight = map2.Find( VOLUME_RIGHT );
216
217   DALI_TEST_CHECK( volumeLeft && volumeLeft->Get( left ) );
218   DALI_TEST_CHECK( volumeRight && volumeRight->Get( right ) );
219   DALI_TEST_CHECK( left == 0.5f );
220   DALI_TEST_CHECK( right == 0.5f );
221
222   END_TEST;
223 }
224
225 int UtcDaliVideoViewCopyAndAssignment(void)
226 {
227   ToolkitTestApplication application;
228
229   VideoView view = Toolkit::VideoView::New();
230   DALI_TEST_CHECK( view );
231
232   VideoView copy( view );
233   DALI_TEST_CHECK( view == copy );
234
235   VideoView assign;
236   DALI_TEST_CHECK( !assign );
237
238   assign = copy;
239   DALI_TEST_CHECK( assign == view );
240
241   END_TEST;
242 }
243
244 int UtcDaliVideoViewTypeRegistry(void)
245 {
246   ToolkitTestApplication application;
247
248   TypeRegistry typeRegistry = TypeRegistry::Get();
249   DALI_TEST_CHECK( typeRegistry );
250
251   TypeInfo typeInfo = typeRegistry.GetTypeInfo( "VideoView" );
252   DALI_TEST_CHECK( typeInfo );
253
254   BaseHandle handle = typeInfo.CreateInstance();
255   DALI_TEST_CHECK( handle );
256
257   VideoView view = VideoView::DownCast( handle );
258   DALI_TEST_CHECK( view );
259
260   END_TEST;
261 }
262
263 int UtcDaliVideoViewMethodsForCoverage(void)
264 {
265   ToolkitTestApplication application;
266
267   VideoView videoView = VideoView::New();
268   DALI_TEST_CHECK( videoView );
269
270   videoView.Play();
271   videoView.Pause();
272   videoView.Stop();
273   videoView.Forward(10);
274   videoView.Backward(10);
275   VideoView::VideoViewSignalType& signal = videoView.FinishedSignal();
276   DALI_TEST_EQUALS( 0, signal.GetConnectionCount(), TEST_LOCATION );
277
278   END_TEST;
279 }
280
281 int UtcDaliVideoViewMethodsForRenderType(void)
282 {
283   ToolkitTestApplication application;
284   VideoView videoView = VideoView::New();
285   DALI_TEST_CHECK( videoView );
286
287   Property::Map windowSurfaceTarget;
288   Property::Map nativeImageTarget;
289
290   windowSurfaceTarget.Insert( RENDERING_TYPE, "windowSurfaceTarget" );
291   nativeImageTarget.Insert( RENDERING_TYPE, "nativeImageTarget" );
292
293   Property::Map map;
294   Property::Value value;
295   videoView.SetProperty( VideoView::Property::VIDEO, windowSurfaceTarget );
296
297   value = videoView.GetProperty( VideoView::Property::VIDEO );
298   DALI_TEST_CHECK( value.Get( map ) );
299
300   Property::Value* type = map.Find( RENDERING_TYPE );
301   DALI_TEST_CHECK( type );
302   DALI_TEST_EQUALS( "windowSurfaceTarget", type->Get<std::string>(), TEST_LOCATION );
303
304   videoView.SetProperty( VideoView::Property::VIDEO, nativeImageTarget );
305
306   value = videoView.GetProperty( VideoView::Property::VIDEO );
307   DALI_TEST_CHECK( value.Get( map ) );
308   type = map.Find( RENDERING_TYPE );
309
310   DALI_TEST_CHECK( type );
311   DALI_TEST_EQUALS( "nativeImageTarget", type->Get<std::string>(), TEST_LOCATION );
312
313   END_TEST;
314 }