[NUI] Update NUI.Devel to fix block and crash issues.
[platform/core/csapi/tizenfx.git] / test / Tizen.NUI.Tests / Tizen.NUI.Devel.Tests / testcase / public / Utility / TSCubeTransitionEffect.cs
1 using global::System;
2 using NUnit.Framework;
3 using NUnit.Framework.TUnit;
4 using Tizen.NUI.Components;
5 using Tizen.NUI.BaseComponents;
6 using System.Collections.Generic;
7 using System.Threading.Tasks;
8
9 namespace Tizen.NUI.Devel.Tests
10 {
11     using tlog = Tizen.Log;
12
13     [TestFixture]
14     [Description("public/Utility/CubeTransitionEffect")]
15     class PublicCubeTransitionEffectTest
16     {
17         private const string tag = "NUITEST";
18         private string currentpath = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "picture.png";
19         private string targetpath = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "picture.png";
20
21         private bool OnTransitionCompletedFlag = false;
22
23         [SetUp]
24         public void Init()
25         {
26             tlog.Info(tag, "Init() is called!");
27         }
28
29         [TearDown]
30         public void Destroy()
31         {
32             tlog.Info(tag, "Destroy() is called!");
33         }
34
35         [Test]
36         [Category("P1")]
37         [Description("CubeTransitionEffect SetTransitionDuration / GetTransitionDuration.")]
38         [Property("SPEC", "Tizen.NUI.CubeTransitionEffect.SetTransitionDuration / GetTransitionDuration M")]
39         [Property("SPEC_URL", "-")]
40         [Property("CRITERIA", "MR")]
41         [Property("AUTHOR", "guowei.wang@samsung.com")]
42         public void CubeTransitionEffectTransitionDuration()
43         {
44             tlog.Debug(tag, $"CubeTransitionEffectTransitionDuration START");
45
46             var testingTarget = new CubeTransitionWaveEffect(20, 10);
47             Assert.IsNotNull(testingTarget, "Can't create success object CubeTransitionEffect");
48             Assert.IsInstanceOf<CubeTransitionEffect>(testingTarget, "Should be an instance of CubeTransitionEffect type.");
49
50             testingTarget.SetTransitionDuration(1.5f);
51
52             var result = testingTarget.GetTransitionDuration();
53             Assert.AreEqual(1.5f, result, "Should be equal!");
54
55             testingTarget.Dispose();
56             tlog.Debug(tag, $"CubeTransitionEffectTransitionDuration END (OK)");
57         }
58
59         [Test]
60         [Category("P1")]
61         [Description("CubeTransitionEffect SetCubeDisplacement / GetCubeDisplacement.")]
62         [Property("SPEC", "Tizen.NUI.CubeTransitionEffect.SetCubeDisplacement / GetCubeDisplacement M")]
63         [Property("SPEC_URL", "-")]
64         [Property("CRITERIA", "MR")]
65         [Property("AUTHOR", "guowei.wang@samsung.com")]
66         public void CubeTransitionEffectCubeDisplacement()
67         {
68             tlog.Debug(tag, $"CubeTransitionEffectCubeDisplacement START");
69
70             var testingTarget = new CubeTransitionWaveEffect(20, 10);
71             Assert.IsNotNull(testingTarget, "Can't create success object CubeTransitionEffect");
72             Assert.IsInstanceOf<CubeTransitionEffect>(testingTarget, "Should be an instance of CubeTransitionEffect type.");
73
74             testingTarget.SetCubeDisplacement(70.0f);
75
76             var result = testingTarget.GetCubeDisplacement();
77             Assert.AreEqual(70.0f, result, "Should be equal!");
78
79             testingTarget.Dispose();
80             tlog.Debug(tag, $"CubeTransitionEffectCubeDisplacement END (OK)");
81         }
82
83         [Test]
84         [Category("P1")]
85         [Description("CubeTransitionEffect IsTransitioning.")]
86         [Property("SPEC", "Tizen.NUI.CubeTransitionEffect.IsTransitioning M")]
87         [Property("SPEC_URL", "-")]
88         [Property("CRITERIA", "MR")]
89         [Property("AUTHOR", "guowei.wang@samsung.com")]
90         public void CubeTransitionEffectIsTransitioning()
91         {
92             tlog.Debug(tag, $"CubeTransitionEffectIsTransitioning START");
93
94             var testingTarget = new CubeTransitionWaveEffect(20, 10);
95             Assert.IsNotNull(testingTarget, "Can't create success object CubeTransitionEffect");
96             Assert.IsInstanceOf<CubeTransitionEffect>(testingTarget, "Should be an instance of CubeTransitionEffect type.");
97
98             var result = testingTarget.IsTransitioning();
99             Assert.AreEqual(false, result, "Should be equal!");
100
101             testingTarget.Dispose();
102             tlog.Debug(tag, $"CubeTransitionEffectIsTransitioning END (OK)");
103         }
104
105         [Test]
106         [Category("P1")]
107         [Description("CubeTransitionEffect SetCurrentTexture.")]
108         [Property("SPEC", "Tizen.NUI.CubeTransitionEffect.SetCurrentTexture M")]
109         [Property("SPEC_URL", "-")]
110         [Property("CRITERIA", "MR")]
111         [Property("AUTHOR", "guowei.wang@samsung.com")]
112         public void CubeTransitionEffectSetCurrentTexture()
113         {
114             tlog.Debug(tag, $"CubeTransitionEffectSetCurrentTexture START");
115
116             var testingTarget = new CubeTransitionWaveEffect(20, 10);
117             Assert.IsNotNull(testingTarget, "Can't create success object CubeTransitionEffect");
118             Assert.IsInstanceOf<CubeTransitionEffect>(testingTarget, "Should be an instance of CubeTransitionEffect type.");
119
120             try
121             {
122                 testingTarget.SetCurrentTexture(LoadStageFillingTexture(currentpath));
123             }
124             catch (Exception e)
125             {
126                 tlog.Debug(tag, e.Message.ToString());
127                 Assert.Fail("Caught Exception: Failed!");
128             }
129
130             testingTarget.Dispose();
131             tlog.Debug(tag, $"CubeTransitionEffectSetCurrentTexture END (OK)");
132         }
133
134         [Test]
135         [Category("P1")]
136         [Description("CubeTransitionEffect SetTargetTexture.")]
137         [Property("SPEC", "Tizen.NUI.CubeTransitionEffect.SetTargetTexture M")]
138         [Property("SPEC_URL", "-")]
139         [Property("CRITERIA", "MR")]
140         [Property("AUTHOR", "guowei.wang@samsung.com")]
141         public void CubeTransitionEffectSetTargetTexture()
142         {
143             tlog.Debug(tag, $"CubeTransitionEffectSetTargetTexture START");
144
145             var testingTarget = new CubeTransitionWaveEffect(20, 10);
146             Assert.IsNotNull(testingTarget, "Can't create success object CubeTransitionEffect");
147             Assert.IsInstanceOf<CubeTransitionEffect>(testingTarget, "Should be an instance of CubeTransitionEffect type.");
148
149             try
150             {
151                 testingTarget.SetTargetTexture(LoadStageFillingTexture(targetpath));
152             }
153             catch (Exception e)
154             {
155                 tlog.Debug(tag, e.Message.ToString());
156                 Assert.Fail("Caught Exception: Failed!");
157             }
158
159             testingTarget.Dispose();
160             tlog.Debug(tag, $"CubeTransitionEffectSetTargetTexture END (OK)");
161         }
162
163         [Test]
164         [Category("P1")]
165         [Description("CubeTransitionEffect StartTransition.")]
166         [Property("SPEC", "Tizen.NUI.CubeTransitionEffect.StartTransition M")]
167         [Property("SPEC_URL", "-")]
168         [Property("CRITERIA", "MR")]
169         [Property("AUTHOR", "guowei.wang@samsung.com")]
170         public void CubeTransitionEffectStartTransition()
171         {
172             tlog.Debug(tag, $"CubeTransitionEffectStartTransition START");
173
174             var testingTarget = new CubeTransitionWaveEffect(20, 10);
175             Assert.IsNotNull(testingTarget, "Can't create success object CubeTransitionEffect");
176             Assert.IsInstanceOf<CubeTransitionEffect>(testingTarget, "Should be an instance of CubeTransitionEffect type.");
177
178             testingTarget.SetTransitionDuration(1.5f);
179
180             testingTarget.SetCurrentTexture(LoadStageFillingTexture(currentpath));
181             testingTarget.SetTargetTexture(LoadStageFillingTexture(targetpath));
182
183             try
184             {
185                 testingTarget.StartTransition(true);
186             }
187             catch (Exception e)
188             {
189                 tlog.Debug(tag, e.Message.ToString());
190                 Assert.Fail("Caught Exception: Failed!");
191             }
192
193             testingTarget?.Dispose();
194             tlog.Debug(tag, $"CubeTransitionEffectStartTransition END (OK)");
195         }
196
197         //[Test]
198         //[Category("P1")]
199         //[Description("CubeTransitionEffect PauseTransition.")]
200         //[Property("SPEC", "Tizen.NUI.CubeTransitionEffect.PauseTransition M")]
201         //[Property("SPEC_URL", "-")]
202         //[Property("CRITERIA", "MR")]
203         //[Property("AUTHOR", "guowei.wang@samsung.com")]
204         //public async Task CubeTransitionEffectPauseTransition()
205         //{
206         //    tlog.Debug(tag, $"CubeTransitionEffectPauseTransition START");
207
208         //    var testingTarget = new CubeTransitionWaveEffect(20, 10);
209         //    Assert.IsNotNull(testingTarget, "Can't create success object CubeTransitionEffect");
210         //    Assert.IsInstanceOf<CubeTransitionEffect>(testingTarget, "Should be an instance of CubeTransitionEffect type.");
211
212         //    testingTarget.SetTransitionDuration(300);
213
214         //    testingTarget.SetCurrentTexture(LoadStageFillingTexture(currentpath));
215         //    testingTarget.SetTargetTexture(LoadStageFillingTexture(targetpath));
216         //    testingTarget.StartTransition(true);
217
218         //    await Task.Delay(50);
219
220         //    try
221         //    {
222         //        testingTarget.PauseTransition();
223         //    }
224         //    catch (Exception e)
225         //    {
226         //        tlog.Debug(tag, e.Message.ToString());
227         //        Assert.Fail("Caught Exception: Failed!");
228         //    }
229
230         //    testingTarget.ResumeTransition();
231         //    testingTarget.StopTransition();
232
233         //    testingTarget?.Dispose();
234         //    tlog.Debug(tag, $"CubeTransitionEffectPauseTransition END (OK)");
235         //}
236
237         //[Test]
238         //[Category("P1")]
239         //[Description("CubeTransitionEffect ResumeTransition.")]
240         //[Property("SPEC", "Tizen.NUI.CubeTransitionEffect.ResumeTransition M")]
241         //[Property("SPEC_URL", "-")]
242         //[Property("CRITERIA", "MR")]
243         //[Property("AUTHOR", "guowei.wang@samsung.com")]
244         //public async Task CubeTransitionEffectResumeTransition()
245         //{
246         //    tlog.Debug(tag, $"CubeTransitionEffectResumeTransition START");
247
248         //    var testingTarget = new CubeTransitionWaveEffect(20, 10);
249         //    Assert.IsNotNull(testingTarget, "Can't create success object CubeTransitionEffect");
250         //    Assert.IsInstanceOf<CubeTransitionEffect>(testingTarget, "Should be an instance of CubeTransitionEffect type.");
251
252         //    testingTarget.SetTransitionDuration(300);
253
254         //    testingTarget.SetCurrentTexture(LoadStageFillingTexture(currentpath));
255         //    testingTarget.SetTargetTexture(LoadStageFillingTexture(targetpath));
256         //    testingTarget.StartTransition(true);
257
258         //    await Task.Delay(50);
259         //    testingTarget.PauseTransition();
260
261         //    try
262         //    {
263         //        testingTarget.ResumeTransition();
264         //    }
265         //    catch (Exception e)
266         //    {
267         //        tlog.Debug(tag, e.Message.ToString());
268         //        Assert.Fail("Caught Exception: Failed!");
269         //    }
270
271         //    testingTarget.StopTransition();
272
273         //    testingTarget?.Dispose();
274         //    tlog.Debug(tag, $"CubeTransitionEffectResumeTransition END (OK)");
275         //}
276
277         [Test]
278         [Category("P1")]
279         [Description("CubeTransitionEffect TransitionCompleted.")]
280         [Property("SPEC", "Tizen.NUI.CubeTransitionEffect.TransitionCompleted M")]
281         [Property("SPEC_URL", "-")]
282         [Property("CRITERIA", "MR")]
283         [Property("AUTHOR", "guowei.wang@samsung.com")]
284         public void CubeTransitionEffectTransitionCompleted()
285         {
286             tlog.Debug(tag, $"CubeTransitionEffectTransitionCompleted START");
287
288             var testingTarget = new CubeTransitionWaveEffect(20, 10);
289             Assert.IsNotNull(testingTarget, "Can't create success object CubeTransitionEffect");
290             Assert.IsInstanceOf<CubeTransitionEffect>(testingTarget, "Should be an instance of CubeTransitionEffect type.");
291
292             try
293             {
294                 testingTarget.TransitionCompleted += OnCubeEffectCompleted;
295                 testingTarget.TransitionCompleted -= OnCubeEffectCompleted;
296             }
297             catch (Exception e)
298             {
299                 tlog.Debug(tag, e.Message.ToString());
300                 Assert.Fail("Caught Exception: Failed!");
301             }
302
303             testingTarget.Dispose();
304             tlog.Debug(tag, $"CubeTransitionEffectTransitionCompleted END (OK)");
305         }
306
307         [Test]
308         [Category("P1")]
309         [Description("CubeTransitionEffectSignal  GetConnectionCount.")]
310         [Property("SPEC", "Tizen.NUI.CubeTransitionEffectSignal.GetConnectionCount M")]
311         [Property("SPEC_URL", "-")]
312         [Property("CRITERIA", "MR")]
313         [Property("AUTHOR", "guowei.wang@samsung.com")]
314         public void CubeTransitionEffectSignalGetConnectionCount()
315         {
316             tlog.Debug(tag, $"CubeTransitionEffectSignalGetConnectionCount START");
317
318             var testingTarget = new CubeTransitionEffectSignal();
319             Assert.IsNotNull(testingTarget, "Can't create success object CubeTransitionEffectSignal");
320             Assert.IsInstanceOf<CubeTransitionEffectSignal>(testingTarget, "Should be an instance of CubeTransitionEffectSignal type.");
321
322             var result = testingTarget.GetConnectionCount();
323             Assert.IsTrue(result == 0, "result should be 0");
324
325             testingTarget.Dispose();
326             tlog.Debug(tag, $"CubeTransitionEffectSignalGetConnectionCount END (OK)");
327         }
328
329         [Test]
330         [Category("P1")]
331         [Description("CubeTransitionEffectSignal  Emit.")]
332         [Property("SPEC", "Tizen.NUI.CubeTransitionEffectSignal.Emit M")]
333         [Property("SPEC_URL", "-")]
334         [Property("CRITERIA", "MR")]
335         [Property("AUTHOR", "guowei.wang@samsung.com")]
336         public void CubeTransitionEffectSignalEmit()
337         {
338             tlog.Debug(tag, $"CubeTransitionEffectSignalEmit START");
339
340             var currentPid = global::System.Diagnostics.Process.GetCurrentProcess().Id;
341             var currentTid = global::System.Threading.Thread.CurrentThread.ManagedThreadId;
342
343             tlog.Debug(tag, $"thread check! main pid={App.mainPid}, current pid={currentPid}, main tid={App.mainTid}, current tid={currentTid}");
344
345             var testingTarget = new CubeTransitionEffectSignal();
346             Assert.IsNotNull(testingTarget, "Can't create success object CubeTransitionEffectSignal");
347             Assert.IsInstanceOf<CubeTransitionEffectSignal>(testingTarget, "Should be an instance of CubeTransitionEffectSignal type.");
348
349             using (CubeTransitionEffect effect =  new CubeTransitionCrossEffect(10, 8))
350             { 
351                 testingTarget.Emit(effect); 
352             }
353
354             testingTarget.Dispose();
355             tlog.Debug(tag, $"CubeTransitionEffectSignalEmit END (OK)");
356         }
357
358         [Test]
359         [Category("P1")]
360         [Description("CubeTransitionWaveEffect constructor.")]
361         [Property("SPEC", "Tizen.NUI.CubeTransitionWaveEffect.CubeTransitionWaveEffect C")]
362         [Property("SPEC_URL", "-")]
363         [Property("CRITERIA", "CONSTR")]
364         [Property("AUTHOR", "guowei.wang@samsung.com")]
365         public void CubeTransitionWaveEffectConstructor()
366         {
367             tlog.Debug(tag, $"CubeTransitionWaveEffectConstructor START");
368
369             var testingTarget = new CubeTransitionWaveEffect(20, 10);
370             Assert.IsNotNull(testingTarget, "Can't create success object CubeTransitionEffect");
371             Assert.IsInstanceOf<CubeTransitionEffect>(testingTarget, "Should be an instance of CubeTransitionEffect type.");
372
373             testingTarget.Dispose();
374             tlog.Debug(tag, $"CubeTransitionWaveEffectConstructor END (OK)");
375         }
376
377         [Test]
378         [Category("P1")]
379         [Description("CubeTransitionCrossEffect constructor.")]
380         [Property("SPEC", "Tizen.NUI.CubeTransitionCrossEffect.CubeTransitionCrossEffect M")]
381         [Property("SPEC_URL", "-")]
382         [Property("CRITERIA", "MR")]
383         [Property("AUTHOR", "guowei.wang@samsung.com")]
384         public void CubeTransitionCrossEffectConstructor()
385         {
386             tlog.Debug(tag, $"CubeTransitionCrossEffectConstructor START");
387
388             var testingTarget = new CubeTransitionCrossEffect(10, 8);
389             Assert.IsNotNull(testingTarget, "Can't create success object CubeTransitionEffect");
390             Assert.IsInstanceOf<CubeTransitionEffect>(testingTarget, "Should be an instance of CubeTransitionEffect type.");
391
392             testingTarget.Dispose();
393             tlog.Debug(tag, $"CubeTransitionCrossEffectConstructor END (OK)");
394         }
395
396         [Test]
397         [Category("P1")]
398         [Description("CubeTransitionFoldEffect constructor.")]
399         [Property("SPEC", "Tizen.NUI.CubeTransitionFoldEffect.CubeTransitionFoldEffect M")]
400         [Property("SPEC_URL", "-")]
401         [Property("CRITERIA", "MR")]
402         [Property("AUTHOR", "guowei.wang@samsung.com")]
403         public void CubeTransitionFoldEffectConstructor()
404         {
405             tlog.Debug(tag, $"CubeTransitionFoldEffectConstructor START");
406
407             var testingTarget = new CubeTransitionFoldEffect(10, 8);
408             Assert.IsNotNull(testingTarget, "Can't create success object CubeTransitionEffect");
409             Assert.IsInstanceOf<CubeTransitionEffect>(testingTarget, "Should be an instance of CubeTransitionEffect type.");
410
411             testingTarget.Dispose();
412             tlog.Debug(tag, $"CubeTransitionFoldEffectConstructor END (OK)");
413         }
414
415         private void OnCubeEffectCompleted(object sender, CubeTransitionEffect.TransitionCompletedEventArgs args)
416         {
417             OnTransitionCompletedFlag = true;
418         }
419
420         private Texture LoadStageFillingTexture(string filepath)
421         {
422             Size2D dimensions = new Size2D(NUIApplication.GetDefaultWindow().WindowSize.Width, NUIApplication.GetDefaultWindow().WindowSize.Height);
423             PixelBuffer pb = ImageLoading.LoadImageFromFile(filepath, dimensions, FittingModeType.ScaleToFill);
424             PixelData pd = PixelBuffer.Convert(pb);
425
426             Texture texture = new Texture(TextureType.TEXTURE_2D, pd.GetPixelFormat(), pd.GetWidth(), pd.GetHeight());
427             texture.Upload(pd);
428
429             return texture;
430         }
431     }
432 }