[NUI][NUI.Devel] Update line coverage TCs of NUI.Devel.
[platform/core/csapi/tizenfx.git] / test / Tizen.NUI.Tests / Tizen.NUI.Devel.Tests / testcase / public / Common / TSPropertyNotification.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.Threading.Tasks;
7
8 namespace Tizen.NUI.Devel.Tests
9 {
10     using tlog = Tizen.Log;
11
12     [TestFixture]
13     [Description("public/Common/PropertyNotification")]
14     class PublicPropertyNotificationTest
15     {
16         private const string tag = "NUITEST";
17
18         [SetUp]
19         public void Init()
20         {
21             tlog.Info(tag, "Init() is called!");
22         }
23
24         [TearDown]
25         public void Destroy()
26         {
27             tlog.Info(tag, "Destroy() is called!");
28         }
29
30         [Test]
31         [Category("P1")]
32         [Description("PropertyNotification constructor")]
33         [Property("SPEC", "Tizen.NUI.PropertyNotification.PropertyNotification C")]
34         [Property("SPEC_URL", "-")]
35         [Property("CRITERIA", "CONSTR")]
36         [Property("COVPARAM", "")]
37         [Property("AUTHOR", "guowei.wang@samsung.com")]
38         public void PropertyNotificationConstructor()
39         {
40             tlog.Debug(tag, $"PropertyNotificationConstructor START");
41
42             var testintTarget = new Tizen.NUI.PropertyNotification();
43             Assert.IsNotNull(testintTarget, "should not be null.");
44             Assert.IsInstanceOf<PropertyNotification>(testintTarget, "should be an instance of PropertyNotification class!");
45
46             testintTarget.Dispose();
47             tlog.Debug(tag, $"PropertyNotificationConstructor END (OK)");
48         }
49
50         [Test]
51         [Category("P1")]
52         [Description("PropertyNotification constructor. With PropertyNotification instance")]
53         [Property("SPEC", "Tizen.NUI.PropertyNotification.PropertyNotification C")]
54         [Property("SPEC_URL", "-")]
55         [Property("CRITERIA", "CONSTR")]
56         [Property("COVPARAM", "PropertyNotification")]
57         [Property("AUTHOR", "guowei.wang@samsung.com")]
58         public void PropertyNotificationConstructorWithPropertyNotification()
59         {
60             tlog.Debug(tag, $"PropertyNotificationConstructorWithPropertyNotification START");
61
62             var view = new View();
63             Assert.IsNotNull(view, "should not be null.");
64             Assert.IsInstanceOf<View>(view, "should be an instance of View class!");
65
66             var dummy = view.AddPropertyNotification("PositionX", PropertyCondition.GreaterThan(100.0f));
67             Assert.IsNotNull(dummy, "should not be null.");
68             Assert.IsInstanceOf<PropertyNotification>(dummy, "should be an instance of PropertyNotification class!");
69
70             var testingTarget = new Tizen.NUI.PropertyNotification(dummy);
71             Assert.IsNotNull(testingTarget, "should not be null.");
72             Assert.IsInstanceOf<PropertyNotification>(testingTarget, "should be an instance of PropertyNotification class!");
73
74             testingTarget.Dispose();
75             dummy.Dispose();
76             view.Dispose();
77             tlog.Debug(tag, $"PropertyNotificationConstructorWithPropertyNotification END (OK)");
78         }
79
80         [Test]
81         [Category("P1")]
82         [Description("PropertyNotification GetTarget")]
83         [Property("SPEC", "Tizen.NUI.PropertyNotification.GetTarget M")]
84         [Property("SPEC_URL", "-")]
85         [Property("CRITERIA", "MR")]
86         [Property("AUTHOR", "guowei.wang@samsung.com")]
87         public void PropertyNotificationGetTarget()
88         {
89             tlog.Debug(tag, $"PropertyNotificationGetTarget START");
90
91             var view = new View();
92             Assert.IsNotNull(view, "should not be null.");
93             Assert.IsInstanceOf<View>(view, "should be an instance of View class!");
94
95             var testingTarget = view.AddPropertyNotification("PositionX", PropertyCondition.GreaterThan(100.0f));
96             Assert.IsNotNull(testingTarget, "should not be null.");
97             Assert.IsInstanceOf<PropertyNotification>(testingTarget, "should be an instance of PropertyNotification class!");
98
99             var result = testingTarget.GetTarget();
100             Assert.IsNotNull(result, "Should be not null!");
101             Assert.IsInstanceOf<Animatable>(result, "should be an instance of Animatable class!");
102
103             result.Dispose();
104             testingTarget.Dispose();
105             view.Dispose();
106             tlog.Debug(tag, $"PropertyNotificationGetTarget END (OK)");
107         }
108
109         [Test]
110         [Category("P1")]
111         [Description("PropertyNotification GetCondition")]
112         [Property("SPEC", "Tizen.NUI.PropertyNotification.GetCondition M")]
113         [Property("SPEC_URL", "-")]
114         [Property("CRITERIA", "MR")]
115         [Property("AUTHOR", "guowei.wang@samsung.com")]
116         public void PropertyNotificationGetCondition()
117         {
118             tlog.Debug(tag, $"PropertyNotificationGetCondition START");
119
120             var dummyView = new View();
121             Assert.IsNotNull(dummyView, "should not be null.");
122             Assert.IsInstanceOf<View>(dummyView, "should be an instance of View class!");
123
124             var dummycondition = PropertyCondition.GreaterThan(100.0f);
125             Assert.IsNotNull(dummycondition, "should not be null.");
126             Assert.IsInstanceOf<PropertyCondition>(dummycondition, "should be an instance of PropertyCondition class!");
127
128             var dummyNotification = dummyView.AddPropertyNotification("PositionX", dummycondition);
129             Assert.IsNotNull(dummyNotification, "should not be null.");
130             Assert.IsInstanceOf<PropertyNotification>(dummyNotification, "should be an instance of PropertyNotification class!");
131
132             var result = dummyNotification.GetCondition();
133             Assert.IsNotNull(result, "should not be null.");
134             Assert.IsInstanceOf<PropertyCondition>(result, "should be an instance of PropertyCondition class!");
135
136             Assert.IsTrue(result == dummycondition);
137
138             result.Dispose();
139             dummyNotification.Dispose();
140             dummycondition.Dispose();
141             dummyView.Dispose();
142             tlog.Debug(tag, $"PropertyNotificationGetCondition END (OK)");
143         }
144
145         [Test]
146         [Category("P1")]
147         [Description("PropertyNotification GetTargetProperty")]
148         [Property("SPEC", "Tizen.NUI.PropertyNotification.GetTargetProperty M")]
149         [Property("SPEC_URL", "-")]
150         [Property("CRITERIA", "MR")]
151         [Property("AUTHOR", "guowei.wang@samsung.com")]
152         public void PropertyNotificationGetTargetProperty()
153         {
154             tlog.Debug(tag, $"PropertyNotificationGetTargetProperty START");
155
156             var view = new View();
157             Assert.IsNotNull(view, "should not be null.");
158             Assert.IsInstanceOf<View>(view, "should be an instance of View class!");
159
160             var testingTarget = view.AddPropertyNotification("PositionX", PropertyCondition.GreaterThan(100.0f));
161             Assert.IsNotNull(testingTarget, "should not be null.");
162             Assert.IsInstanceOf<PropertyNotification>(testingTarget, "should be an instance of PropertyNotification class!");
163
164             Assert.AreEqual(13, testingTarget.GetTargetProperty(), "Retrive testingTarget.GetTargetProperty() should equal to 13.");
165
166             testingTarget.Dispose();
167             view.Dispose();
168             tlog.Debug(tag, $"PropertyNotificationGetTargetProperty END (OK)");
169         }
170
171         [Test]
172         [Category("P1")]
173         [Description("PropertyNotification GetNotifyMode")]
174         [Property("SPEC", "Tizen.NUI.PropertyNotification.GetNotifyMode M")]
175         [Property("SPEC_URL", "-")]
176         [Property("CRITERIA", "MR")]
177         [Property("AUTHOR", "guowei.wang@samsung.com")]
178         public void PropertyNotificationGetNotifyMode()
179         {
180             tlog.Debug(tag, $"PropertyNotificationGetNotifyMode START");
181
182             View view = new View();
183             var testingTarget = view.AddPropertyNotification("PositionX", PropertyCondition.GreaterThan(100.0f));
184             Assert.IsNotNull(testingTarget, "should not be null.");
185             Assert.IsInstanceOf<PropertyNotification>(testingTarget, "should be an instance of PropertyNotification class!");
186
187             var result = testingTarget.GetNotifyMode();
188             Assert.IsNotNull(result, "should not be null.");
189             Assert.IsInstanceOf<PropertyNotification.NotifyMode>(result, "should be an instance of PropertyNotification.NotifyMode class!");
190             Assert.IsTrue(PropertyNotification.NotifyMode.NotifyOnTrue == result);
191
192             testingTarget.Dispose();
193             view.Dispose();
194             tlog.Debug(tag, $"PropertyNotificationGetNotifyMode END (OK)");
195         }
196
197         [Test]
198         [Category("P1")]
199         [Description("PropertyNotification SetNotifyMode")]
200         [Property("SPEC", "Tizen.NUI.PropertyNotification.SetNotifyMode M")]
201         [Property("SPEC_URL", "-")]
202         [Property("CRITERIA", "MR")]
203         [Property("AUTHOR", "guowei.wang@samsung.com")]
204         public void PropertyNotificationSetNotifyMode()
205         {
206             tlog.Debug(tag, $"PropertyNotificationSetNotifyMode START");
207
208             View view = new View();
209             var testingTarget = view.AddPropertyNotification("PositionX", PropertyCondition.GreaterThan(100.0f));
210             Assert.IsNotNull(testingTarget, "should not be null.");
211             Assert.IsInstanceOf<PropertyNotification>(testingTarget, "should be an instance of PropertyNotification class!");
212
213             testingTarget.SetNotifyMode(PropertyNotification.NotifyMode.NotifyOnChanged);
214             var result = testingTarget.GetNotifyMode();
215             Assert.IsNotNull(result, "should not be null.");
216             Assert.IsInstanceOf<PropertyNotification.NotifyMode>(result, "should be an instance of PropertyNotification.NotifyMode class!");
217             Assert.IsTrue(PropertyNotification.NotifyMode.NotifyOnChanged == result);
218
219             testingTarget.Dispose();
220             view.Dispose();
221             tlog.Debug(tag, $"PropertyNotificationSetNotifyMode END (OK)");
222         }
223
224         [Test]
225         [Category("P1")]
226         [Description("PropertyNotification GetNotifyResult.")]
227         [Property("SPEC", "Tizen.NUI.PropertyNotification.GetNotifyResult M")]
228         [Property("SPEC_URL", "-")]
229         [Property("CRITERIA", "MR")]
230         [Property("AUTHOR", "guowei.wang@samsung.com")]
231         public void PropertyNotificationGetNotifyResult()
232         {
233             tlog.Debug(tag, $"PropertyNotificationGetNotifyResult START");
234
235             var view = new View();
236             Assert.IsNotNull(view, "should not be null.");
237             Assert.IsInstanceOf<View>(view, "should be an instance of View class!");
238
239             var testingTarget = view.AddPropertyNotification("PositionX", PropertyCondition.GreaterThan(100.0f));
240             Assert.IsNotNull(testingTarget, "should not be null.");
241             Assert.IsInstanceOf<PropertyNotification>(testingTarget, "should be an instance of PropertyNotification class!");
242
243             testingTarget.SetNotifyMode(PropertyNotification.NotifyMode.NotifyOnChanged);
244             testingTarget.Notified += (obj, e) =>
245             {
246                 tlog.Fatal("TCT", "Notified!");
247             };
248             view.Position = new Position(0.0f, 0.0f, 0.0f);
249             Assert.AreEqual(false, testingTarget.GetNotifyResult(), "Should be equal!");
250
251             testingTarget.Dispose();
252             view.Dispose();
253             tlog.Debug(tag, $"PropertyNotificationGetNotifyResult END (OK)");
254         }
255
256         [Test]
257         [Category("P1")]
258         [Description("PropertyNotification Dispose")]
259         [Property("SPEC", "Tizen.NUI.PropertyNotification.Dispose M")]
260         [Property("SPEC_URL", "-")]
261         [Property("CRITERIA", "MR MCST")]
262         [Property("AUTHOR", "guowei.wang@samsung.com")]
263         public void PropertyNotificationDispose()
264         {
265             tlog.Debug(tag, $"PropertyNotificationDispose START");
266
267             var testingTarget = new PropertyNotification();
268             Assert.IsNotNull(testingTarget, "should not be null.");
269             Assert.IsInstanceOf<PropertyNotification>(testingTarget, "should be an instance of PropertyNotification class!");
270
271             try
272             {
273                 testingTarget.Dispose();
274             }
275             catch (Exception e)
276             {
277                 LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, "Caught Exception" + e.ToString());
278                 Assert.Fail("Caught Exception" + e.ToString());
279             }
280
281             tlog.Debug(tag, $"PropertyNotificationDispose END (OK)");
282         }
283
284         [Test]
285         [Category("P1")]
286         [Description("PropertyNotification DownCast")]
287         [Property("SPEC", "Tizen.NUI.PropertyNotification.DownCast M")]
288         [Property("SPEC_URL", "-")]
289         [Property("CRITERIA", "MR")]
290         [Property("AUTHOR", "guowei.wang@samsung.com")]
291         public void PropertyNotificationDownCast()
292         {
293             tlog.Debug(tag, $"PropertyNotificationDownCast START");
294
295             var view = new View();
296             Assert.IsNotNull(view, "should not be null.");
297             Assert.IsInstanceOf<View>(view, "should be an instance of View class!");
298
299             Window.Instance.Add(view);
300             var testingTarget = view.AddPropertyNotification("positionX", PropertyCondition.GreaterThan(100.0f));
301             Assert.IsNotNull(testingTarget, "should not be null.");
302             Assert.IsInstanceOf<PropertyNotification>(testingTarget, "should be an instance of PropertyNotification class!");
303
304             var result = PropertyNotification.DownCast(testingTarget);
305             Assert.IsNotNull(result, "should not be null.");
306             Assert.IsInstanceOf<PropertyNotification>(result, "should be an instance of PropertyNotification class!");
307
308             Window.Instance.Remove(view);
309             testingTarget.Dispose();
310             view.Dispose();
311             tlog.Debug(tag, $"PropertyNotificationDownCast END (OK)");
312         }
313
314         [Test]
315         [Category("P1")]
316         [Description("PropertyNotification NotifySignal")]
317         [Property("SPEC", "Tizen.NUI.PropertyNotification.NotifySignal M")]
318         [Property("SPEC_URL", "-")]
319         [Property("CRITERIA", "MR")]
320         [Property("AUTHOR", "guowei.wang@samsung.com")]
321         public async Task PropertyNotificationNotifySignal()
322         {
323             tlog.Debug(tag, $"PropertyNotificationNotifySignal START");
324
325             var view = new View();
326             Assert.IsNotNull(view, "should not be null.");
327             Assert.IsInstanceOf<View>(view, "should be an instance of View class!");
328
329             Window.Instance.Add(view);
330             var testingTarget = view.AddPropertyNotification("positionX", PropertyCondition.GreaterThan(100.0f));
331             Assert.IsNotNull(testingTarget, "should not be null.");
332             Assert.IsInstanceOf<PropertyNotification>(testingTarget, "should be an instance of PropertyNotification class!");
333
334             testingTarget.SetNotifyMode(PropertyNotification.NotifyMode.NotifyOnChanged);
335             bool flag = false;
336             testingTarget.Notified += (obj, e) =>
337             {
338                 flag = true;
339             };
340
341             testingTarget.Notified -= (obj, e) =>
342             {
343                 flag = false;
344             };
345
346             view.Position = new Position(300.0f, 0.0f, 0.0f);
347             await Task.Delay(200);
348
349             var result = testingTarget.NotifySignal();
350             Assert.IsNotNull(result, "Should be not null");
351             Assert.IsInstanceOf<PropertyNotifySignal>(result, "Should be an instance of propertyNotifySignal");
352
353             Window.Instance.Remove(view);
354             testingTarget.Dispose();
355             view.Dispose();
356             tlog.Debug(tag, $"PropertyNotificationNotifySignal END (OK)");
357         }
358
359         [Test]
360         [Category("P1")]
361         [Description("PropertyNotification Assign")]
362         [Property("SPEC", "Tizen.NUI.PropertyNotification.Assign M")]
363         [Property("SPEC_URL", "-")]
364         [Property("CRITERIA", "MR")]
365         [Property("AUTHOR", "guowei.wang@samsung.com")]
366         public void PropertyNotificationAssign()
367         {
368             tlog.Debug(tag, $"PropertyNotificationAssign START");
369
370             var view = new View();
371             Assert.IsNotNull(view, "should not be null.");
372             Assert.IsInstanceOf<View>(view, "should be an instance of View class!");
373             Window.Instance.Add(view);
374
375             var dummy1 = view.AddPropertyNotification("positionX", PropertyCondition.GreaterThan(100.0f));
376             Assert.IsNotNull(dummy1, "should not be null.");
377             Assert.IsInstanceOf<PropertyNotification>(dummy1, "should be an instance of PropertyNotification class!");
378
379             var dummy2 = view.AddPropertyNotification("positionY", PropertyCondition.GreaterThan(100.0f));
380             Assert.IsNotNull(dummy2, "should not be null.");
381             Assert.IsInstanceOf<PropertyNotification>(dummy2, "should be an instance of PropertyNotification class!");
382
383             var testingTarget = dummy2.Assign(dummy1);
384             Assert.IsNotNull(testingTarget, "should not be null.");
385             Assert.IsInstanceOf<PropertyNotification>(testingTarget, "should be an instance of PropertyNotification class!");
386
387             Window.Instance.Remove(view);
388             testingTarget.Dispose();
389             dummy2.Dispose();
390             dummy1.Dispose();
391             view.Dispose();
392             tlog.Debug(tag, $"PropertyNotificationAssign END (OK)");
393         }
394
395         [Test]
396         [Category("P2")]
397         [Description("PropertyNotification Assign, negative")]
398         [Property("SPEC", "Tizen.NUI.PropertyNotification.Assign M")]
399         [Property("SPEC_URL", "-")]
400         [Property("CRITERIA", "MR")]
401         [Property("AUTHOR", "guowei.wang@samsung.com")]
402         public void PropertyNotificationAssignNegative()
403         {
404             tlog.Debug(tag, $"PropertyNotificationAssignNegative START");
405
406             var view = new View();
407             Assert.IsNotNull(view, "should not be null.");
408             Assert.IsInstanceOf<View>(view, "should be an instance of View class!");
409             Window.Instance.Add(view);
410
411             var testingTarget = view.AddPropertyNotification("positionX", PropertyCondition.GreaterThan(100.0f));
412             Assert.IsNotNull(testingTarget, "should not be null.");
413             Assert.IsInstanceOf<PropertyNotification>(testingTarget, "should be an instance of PropertyNotification class!");
414
415             try
416             {
417                 testingTarget.Assign(null);
418                 Assert.Fail("Should throw the System.ArgumentNullException!");
419             }
420             catch (ArgumentNullException e)
421             {
422                 Assert.True(true);
423             }
424
425             Window.Instance.Remove(view);
426             testingTarget.Dispose();
427             view.Dispose();
428             tlog.Debug(tag, $"PropertyNotificationAssignNegative END (OK)");
429         }
430
431         [Test]
432         [Category("P1")]
433         [Description("PropertyNotification.NotifyEventArgs constructor")]
434         [Property("SPEC", "Tizen.NUI.PropertyNotification.NotifyEventArgs.NotifyEventArgs C")]
435         [Property("SPEC_URL", " - ")]
436         [Property("CRITERIA", "CONSTR")]
437         [Property("AUTHOR", "guowei.wang@samsung.com")]
438         public void PropertyNotificationNotifyEventArgsContructor()
439         {
440             tlog.Debug(tag, $"PropertyNotificationNotifyEventArgsContructor START");
441
442             var testingTarget = new PropertyNotification.NotifyEventArgs();
443             Assert.NotNull(testingTarget, "Should be not null");
444             Assert.IsInstanceOf<PropertyNotification.NotifyEventArgs>(testingTarget, "Should be an instance of PropertyNotification.PropertyNotificationNotifyEventArgs");
445
446             tlog.Debug(tag, $"PropertyNotificationNotifyEventArgsContructor END (OK)");
447         }
448
449         [Test]
450         [Category("P1")]
451         [Description("PropertyNotification.NotifyEventArgs GetTargetProperty")]
452         [Property("SPEC", "Tizen.NUI.PropertyNotification.NotifyEventArgs.PropertyNotification A")]
453         [Property("SPEC_URL", " - ")]
454         [Property("CRITERIA", "PRW")]
455         [Property("AUTHOR", "guowei.wang@samsung.com")]
456         public void PropertyNotificationNotifyEventArgsGetTargetProperty()
457         {
458             tlog.Debug(tag, $"PropertyNotificationNotifyEventArgsGetTargetProperty START");
459
460             var view = new View();
461             Assert.IsNotNull(view, "should not be null.");
462             Assert.IsInstanceOf<View>(view, "should be an instance of View class!");
463
464             var dummy = view.AddPropertyNotification("PositionX", PropertyCondition.GreaterThan(100.0f));
465             Assert.IsNotNull(dummy, "should not be null.");
466             Assert.IsInstanceOf<PropertyNotification>(dummy, "should be an instance of PropertyNotification class!");
467
468             var testingTarget = new PropertyNotification.NotifyEventArgs();
469             Assert.NotNull(testingTarget, "Should be not null");
470             Assert.IsInstanceOf<PropertyNotification.NotifyEventArgs>(testingTarget, "Should be an instance of PropertyNotification.PropertyNotificationNotifyEventArgs");
471
472             testingTarget.PropertyNotification = dummy;
473             Assert.AreEqual(13, testingTarget.PropertyNotification.GetTargetProperty(), "Should be equal!");
474
475             dummy.Dispose();
476             view.Dispose();
477
478             tlog.Debug(tag, $"PropertyNotificationNotifyEventArgsGetTargetProperty END (OK)");
479         }
480     }
481 }