843dc6b8ccb4bf65ebefd52abd9f729c3b2ce629
[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 Notified")]
259         [Property("SPEC", "Tizen.NUI.PropertyNotification.Notified E")]
260         [Property("SPEC_URL", "-")]
261         [Property("CRITERIA", "EVL")]
262         [Property("AUTHOR", "guowei.wang@samsung.com")]
263         public async Task PropertyNotificationNotified()
264         {
265             tlog.Debug(tag, $"PropertyNotificationNotified START");
266
267             View view = new View();
268             Window.Instance.Add(view);
269             var testingTarget = view.AddPropertyNotification("positionX", PropertyCondition.GreaterThan(100.0f));
270             Assert.IsNotNull(testingTarget, "should not be null.");
271             Assert.IsInstanceOf<PropertyNotification>(testingTarget, "should be an instance of PropertyNotification class!");
272
273             testingTarget.SetNotifyMode(PropertyNotification.NotifyMode.NotifyOnChanged);
274             bool flag = false;
275             testingTarget.Notified += (obj, e) =>
276             {
277                 flag = true;
278             };
279
280             view.Position = new Position(300.0f, 0.0f, 0.0f);
281             await Task.Delay(200);
282             Assert.AreEqual(true, flag, "Should be equal!");
283
284             testingTarget.Dispose();
285             view.Dispose();
286             tlog.Debug(tag, $"PropertyNotificationNotified END (OK)");
287         }
288
289         [Test]
290         [Category("P1")]
291         [Description("PropertyNotification Dispose")]
292         [Property("SPEC", "Tizen.NUI.PropertyNotification.Dispose M")]
293         [Property("SPEC_URL", "-")]
294         [Property("CRITERIA", "MR MCST")]
295         [Property("AUTHOR", "guowei.wang@samsung.com")]
296         public void PropertyNotificationDispose()
297         {
298             tlog.Debug(tag, $"PropertyNotificationDispose START");
299
300             var testingTarget = new PropertyNotification();
301             Assert.IsNotNull(testingTarget, "should not be null.");
302             Assert.IsInstanceOf<PropertyNotification>(testingTarget, "should be an instance of PropertyNotification class!");
303
304             try
305             {
306                 testingTarget.Dispose();
307             }
308             catch (Exception e)
309             {
310                 LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, "Caught Exception" + e.ToString());
311                 Assert.Fail("Caught Exception" + e.ToString());
312             }
313
314             tlog.Debug(tag, $"PropertyNotificationDispose END (OK)");
315         }
316
317         [Test]
318         [Category("P1")]
319         [Description("PropertyNotification DownCast")]
320         [Property("SPEC", "Tizen.NUI.PropertyNotification.DownCast M")]
321         [Property("SPEC_URL", "-")]
322         [Property("CRITERIA", "MR")]
323         [Property("AUTHOR", "guowei.wang@samsung.com")]
324         public void PropertyNotificationDownCast()
325         {
326             tlog.Debug(tag, $"PropertyNotificationDownCast START");
327
328             var view = new View();
329             Assert.IsNotNull(view, "should not be null.");
330             Assert.IsInstanceOf<View>(view, "should be an instance of View class!");
331
332             Window.Instance.Add(view);
333             var testingTarget = view.AddPropertyNotification("positionX", PropertyCondition.GreaterThan(100.0f));
334             Assert.IsNotNull(testingTarget, "should not be null.");
335             Assert.IsInstanceOf<PropertyNotification>(testingTarget, "should be an instance of PropertyNotification class!");
336
337             var result = PropertyNotification.DownCast(testingTarget);
338             Assert.IsNotNull(result, "should not be null.");
339             Assert.IsInstanceOf<PropertyNotification>(result, "should be an instance of PropertyNotification class!");
340
341             testingTarget.Dispose();
342             view.Dispose();
343             tlog.Debug(tag, $"PropertyNotificationDownCast END (OK)");
344         }
345
346         [Test]
347         [Category("P1")]
348         [Description("PropertyNotification NotifySignal")]
349         [Property("SPEC", "Tizen.NUI.PropertyNotification.NotifySignal M")]
350         [Property("SPEC_URL", "-")]
351         [Property("CRITERIA", "MR")]
352         [Property("AUTHOR", "guowei.wang@samsung.com")]
353         public async Task PropertyNotificationNotifySignal()
354         {
355             tlog.Debug(tag, $"PropertyNotificationNotifySignal START");
356
357             var view = new View();
358             Assert.IsNotNull(view, "should not be null.");
359             Assert.IsInstanceOf<View>(view, "should be an instance of View class!");
360
361             Window.Instance.Add(view);
362             var testingTarget = view.AddPropertyNotification("positionX", PropertyCondition.GreaterThan(100.0f));
363             Assert.IsNotNull(testingTarget, "should not be null.");
364             Assert.IsInstanceOf<PropertyNotification>(testingTarget, "should be an instance of PropertyNotification class!");
365
366             testingTarget.SetNotifyMode(PropertyNotification.NotifyMode.NotifyOnChanged);
367             bool flag = false;
368             testingTarget.Notified += (obj, e) =>
369             {
370                 flag = true;
371             };
372             view.Position = new Position(300.0f, 0.0f, 0.0f);
373             await Task.Delay(200);
374
375             var result = testingTarget.NotifySignal();
376             Assert.IsNotNull(result, "Should be not null");
377             Assert.IsInstanceOf<PropertyNotifySignal>(result, "Should be an instance of propertyNotifySignal");
378
379             testingTarget.Dispose();
380             view.Dispose();
381             tlog.Debug(tag, $"PropertyNotificationNotifySignal END (OK)");
382         }
383
384         [Test]
385         [Category("P1")]
386         [Description("PropertyNotification Assign")]
387         [Property("SPEC", "Tizen.NUI.PropertyNotification.Assign M")]
388         [Property("SPEC_URL", "-")]
389         [Property("CRITERIA", "MR")]
390         [Property("AUTHOR", "guowei.wang@samsung.com")]
391         public void PropertyNotificationAssign()
392         {
393             tlog.Debug(tag, $"PropertyNotificationAssign START");
394
395             var view = new View();
396             Assert.IsNotNull(view, "should not be null.");
397             Assert.IsInstanceOf<View>(view, "should be an instance of View class!");
398             Window.Instance.Add(view);
399
400             var dummy1 = view.AddPropertyNotification("positionX", PropertyCondition.GreaterThan(100.0f));
401             Assert.IsNotNull(dummy1, "should not be null.");
402             Assert.IsInstanceOf<PropertyNotification>(dummy1, "should be an instance of PropertyNotification class!");
403
404             var dummy2 = view.AddPropertyNotification("positionY", PropertyCondition.GreaterThan(100.0f));
405             Assert.IsNotNull(dummy2, "should not be null.");
406             Assert.IsInstanceOf<PropertyNotification>(dummy2, "should be an instance of PropertyNotification class!");
407
408             var testingTarget = dummy2.Assign(dummy1);
409             Assert.IsNotNull(testingTarget, "should not be null.");
410             Assert.IsInstanceOf<PropertyNotification>(testingTarget, "should be an instance of PropertyNotification class!");
411
412             testingTarget.Dispose();
413             dummy2.Dispose();
414             dummy1.Dispose();
415             view.Dispose();
416             tlog.Debug(tag, $"PropertyNotificationAssign END (OK)");
417         }
418
419         [Test]
420         [Category("P2")]
421         [Description("PropertyNotification Assign, negative")]
422         [Property("SPEC", "Tizen.NUI.PropertyNotification.Assign M")]
423         [Property("SPEC_URL", "-")]
424         [Property("CRITERIA", "MR")]
425         [Property("AUTHOR", "guowei.wang@samsung.com")]
426         public void PropertyNotificationAssignNegative()
427         {
428             tlog.Debug(tag, $"PropertyNotificationAssignNegative START");
429
430             var view = new View();
431             Assert.IsNotNull(view, "should not be null.");
432             Assert.IsInstanceOf<View>(view, "should be an instance of View class!");
433             Window.Instance.Add(view);
434
435             var testingTarget = view.AddPropertyNotification("positionX", PropertyCondition.GreaterThan(100.0f));
436             Assert.IsNotNull(testingTarget, "should not be null.");
437             Assert.IsInstanceOf<PropertyNotification>(testingTarget, "should be an instance of PropertyNotification class!");
438
439             try
440             {
441                 testingTarget.Assign(null);
442                 Assert.Fail("Should throw the System.ArgumentNullException!");
443             }
444             catch (ArgumentNullException e)
445             {
446                 Assert.True(true);
447             }
448
449             testingTarget.Dispose();
450             view.Dispose();
451             tlog.Debug(tag, $"PropertyNotificationAssignNegative END (OK)");
452         }
453
454         [Test]
455         [Category("P1")]
456         [Description("PropertyNotification.NotifyEventArgs constructor")]
457         [Property("SPEC", "Tizen.NUI.PropertyNotification.NotifyEventArgs.NotifyEventArgs C")]
458         [Property("SPEC_URL", " - ")]
459         [Property("CRITERIA", "CONSTR")]
460         [Property("AUTHOR", "guowei.wang@samsung.com")]
461         public void PropertyNotificationNotifyEventArgsContructor()
462         {
463             tlog.Debug(tag, $"PropertyNotificationNotifyEventArgsContructor START");
464
465             var testingTarget = new PropertyNotification.NotifyEventArgs();
466             Assert.NotNull(testingTarget, "Should be not null");
467             Assert.IsInstanceOf<PropertyNotification.NotifyEventArgs>(testingTarget, "Should be an instance of PropertyNotification.PropertyNotificationNotifyEventArgs");
468
469             tlog.Debug(tag, $"PropertyNotificationNotifyEventArgsContructor END (OK)");
470         }
471
472         [Test]
473         [Category("P1")]
474         [Description("PropertyNotification.NotifyEventArgs GetTargetProperty")]
475         [Property("SPEC", "Tizen.NUI.PropertyNotification.NotifyEventArgs.PropertyNotification A")]
476         [Property("SPEC_URL", " - ")]
477         [Property("CRITERIA", "PRW")]
478         [Property("AUTHOR", "guowei.wang@samsung.com")]
479         public void PropertyNotificationNotifyEventArgsGetTargetProperty()
480         {
481             tlog.Debug(tag, $"PropertyNotificationNotifyEventArgsGetTargetProperty START");
482
483             var view = new View();
484             Assert.IsNotNull(view, "should not be null.");
485             Assert.IsInstanceOf<View>(view, "should be an instance of View class!");
486
487             var dummy = view.AddPropertyNotification("PositionX", PropertyCondition.GreaterThan(100.0f));
488             Assert.IsNotNull(dummy, "should not be null.");
489             Assert.IsInstanceOf<PropertyNotification>(dummy, "should be an instance of PropertyNotification class!");
490
491             var testingTarget = new PropertyNotification.NotifyEventArgs();
492             Assert.NotNull(testingTarget, "Should be not null");
493             Assert.IsInstanceOf<PropertyNotification.NotifyEventArgs>(testingTarget, "Should be an instance of PropertyNotification.PropertyNotificationNotifyEventArgs");
494
495             testingTarget.PropertyNotification = dummy;
496             Assert.AreEqual(13, testingTarget.PropertyNotification.GetTargetProperty(), "Should be equal!");
497
498             dummy.Dispose();
499             view.Dispose();
500
501             tlog.Debug(tag, $"PropertyNotificationNotifyEventArgsGetTargetProperty END (OK)");
502         }
503     }
504 }