Add borderline features at transition effect
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-Transition.cpp
1 /*
2  * Copyright (c) 2021 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/devel-api/actors/actor-devel.h>
23 #include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
24 #include <dali-toolkit/public-api/transition/transition-set.h>
25 #include <dali-toolkit/public-api/transition/transition-base.h>
26 #include <dali-toolkit/public-api/transition/transition.h>
27
28 using namespace Dali;
29 using namespace Dali::Toolkit;
30 namespace
31 {
32
33 const char* TEST_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/gallery-small-1.jpg";
34
35 }
36
37 // Functor to test whether a Finish signal is emitted
38 struct TransitionFinishCheck
39 {
40   TransitionFinishCheck(bool& signalReceived)
41   : mSignalReceived(signalReceived)
42   {
43   }
44
45   void operator()(TransitionSet& transitionSet)
46   {
47     mSignalReceived = true;
48   }
49
50   void Reset()
51   {
52     mSignalReceived = false;
53   }
54
55   void CheckSignalReceived()
56   {
57     if(!mSignalReceived)
58     {
59       tet_printf("Expected Finish signal was not received\n");
60       tet_result(TET_FAIL);
61     }
62     else
63     {
64       tet_result(TET_PASS);
65     }
66   }
67
68   void CheckSignalNotReceived()
69   {
70     if(mSignalReceived)
71     {
72       tet_printf("Unexpected Finish signal was received\n");
73       tet_result(TET_FAIL);
74     }
75     else
76     {
77       tet_result(TET_PASS);
78     }
79   }
80
81   bool& mSignalReceived; // owned by individual tests
82 };
83
84 int UtcDaliTransitionSetGetProperty01(void)
85 {
86   ToolkitTestApplication application;
87   tet_infoline(" UtcDaliTransitionSetGetProperty01");
88
89   Control control1 = Control::New();
90   control1.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
91   control1.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
92   control1.SetProperty(Actor::Property::POSITION, Vector3(100, 200, 0));
93   Property::Map controlProperty1;
94   controlProperty1.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
95   controlProperty1.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
96   controlProperty1.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, 50.f);
97   controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, 50.f);
98   controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
99   controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, 1.f);
100   control1.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty1);
101
102   Control control2 = Control::New();
103   control2.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
104   control2.SetProperty(Actor::Property::ANCHOR_POINT, ParentOrigin::TOP_LEFT);
105   control2.SetProperty(Actor::Property::POSITION, Vector3(50, 50, 0));
106   Property::Map controlProperty2;
107   controlProperty2.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
108   controlProperty2.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 1.0f, 0.0f, 0.5f));
109   controlProperty2.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, 30.f);
110   controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, 30.f);
111   controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, Vector4(1.0f, 1.0f, 0.0f, 0.5f));
112   controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, -1.f);
113   control2.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty2);
114
115   application.GetScene().Add(control1);
116   application.GetScene().Add(control2);
117
118   application.SendNotification();
119   application.Render(20);
120
121   Transition transition = Transition::New(control1, control2, TimePeriod(-0.1f, -0.1f));
122   TimePeriod timePeriod = transition.GetTimePeriod();
123   DALI_TEST_EQUALS(0.0f, timePeriod.durationSeconds, TEST_LOCATION);
124   DALI_TEST_EQUALS(0.0f, timePeriod.delaySeconds, TEST_LOCATION);
125
126   transition.SetTimePeriod(TimePeriod(0.5f, 1.0f));
127   timePeriod = transition.GetTimePeriod();
128   DALI_TEST_EQUALS(1.0f, timePeriod.durationSeconds, TEST_LOCATION);
129   DALI_TEST_EQUALS(0.5f, timePeriod.delaySeconds, TEST_LOCATION);
130
131   DALI_TEST_EQUALS(Dali::AlphaFunction::DEFAULT, transition.GetAlphaFunction().GetBuiltinFunction(), TEST_LOCATION);
132   transition.SetAlphaFunction(Dali::AlphaFunction::EASE_IN_OUT);
133   DALI_TEST_EQUALS(Dali::AlphaFunction::EASE_IN_OUT, transition.GetAlphaFunction().GetBuiltinFunction(), TEST_LOCATION);
134
135   TransitionSet transitionSet = TransitionSet::New();
136   transitionSet.AddTransition(transition);
137
138   DALI_TEST_EQUALS(1, transitionSet.GetTransitionCount(), TEST_LOCATION);
139   DALI_TEST_EQUALS(transition, transitionSet.GetTransitionAt(0), TEST_LOCATION);
140
141   END_TEST;
142 }
143
144 int UtcDaliTransitionSetGetProperty02(void)
145 {
146   ToolkitTestApplication application;
147   tet_infoline(" UtcDaliTransitionSetGetProperty02");
148
149   Control control1 = Control::New();
150   control1.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
151   control1.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
152   control1.SetProperty(Actor::Property::POSITION, Vector3(100, 200, 0));
153   Property::Map controlProperty1;
154   controlProperty1.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
155   controlProperty1.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
156   controlProperty1.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, Vector4(50.0f, 30.0f, 40.0f, 20.0f));
157   controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, 50.f);
158   controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
159   controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, -1.f);
160   control1.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty1);
161
162   Control control2 = Control::New();
163   control2.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
164   control2.SetProperty(Actor::Property::ANCHOR_POINT, ParentOrigin::TOP_LEFT);
165   control2.SetProperty(Actor::Property::POSITION, Vector3(50, 50, 0));
166   Property::Map controlProperty2;
167   controlProperty2.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
168   controlProperty2.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 1.0f, 0.0f, 0.5f));
169   controlProperty2.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, Vector4(32.f, 54.0f, 24.0f, 42.0f));
170   controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, 30.f);
171   controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, Vector4(1.0f, 1.0f, 0.0f, 0.5f));
172   controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, -1.f);
173   control2.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty2);
174
175   application.GetScene().Add(control1);
176   application.GetScene().Add(control2);
177
178   application.SendNotification();
179   application.Render(20);
180
181   Transition transition = Transition::New(control1, control2, TimePeriod(-0.1f));
182   TimePeriod timePeriod = transition.GetTimePeriod();
183   DALI_TEST_EQUALS(0.0f, timePeriod.durationSeconds, TEST_LOCATION);
184   DALI_TEST_EQUALS(0.0f, timePeriod.delaySeconds, TEST_LOCATION);
185
186   transition.SetTimePeriod(TimePeriod(0.5f, 1.0f));
187   timePeriod = transition.GetTimePeriod();
188   DALI_TEST_EQUALS(1.0f, timePeriod.durationSeconds, TEST_LOCATION);
189   DALI_TEST_EQUALS(0.5f, timePeriod.delaySeconds, TEST_LOCATION);
190
191   DALI_TEST_EQUALS(Dali::AlphaFunction::DEFAULT, transition.GetAlphaFunction().GetBuiltinFunction(), TEST_LOCATION);
192   transition.SetAlphaFunction(Dali::AlphaFunction::EASE_IN_OUT);
193   DALI_TEST_EQUALS(Dali::AlphaFunction::EASE_IN_OUT, transition.GetAlphaFunction().GetBuiltinFunction(), TEST_LOCATION);
194
195   TransitionSet transitionSet = TransitionSet::New();
196   transitionSet.AddTransition(transition);
197
198   DALI_TEST_EQUALS(1, transitionSet.GetTransitionCount(), TEST_LOCATION);
199   DALI_TEST_EQUALS(transition, transitionSet.GetTransitionAt(0), TEST_LOCATION);
200
201   END_TEST;
202 }
203
204 int UtcDaliTransitionBetweenControlPair(void)
205 {
206   ToolkitTestApplication application;
207   tet_infoline(" UtcDaliTransitionBetweenControlPair");
208
209   Vector3 destinationPosition(50, 50, 0);
210   Vector3 destinationSize(120, 120, 0);
211   Vector3 destinationScale(2, 1, 0);
212   Vector4 destinationColor(1.0f, 0.5f, 1.0f, 0.8f);
213   float destinationOpacity(0.8f);
214   float destinationRadius(50.f);
215   float destinationBorderlineWidth(80.0f);
216   Vector4 destinationBorderlineColor(0.5f, 1.0f, 0.5f, 0.3f);
217   float destinationBorderlineOffset(-1.0f);
218   Vector4 destinationRadiusV4 = Vector4(destinationRadius, destinationRadius, destinationRadius, destinationRadius);
219
220   Control control1 = Control::New();
221   control1.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
222   control1.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
223   control1.SetProperty(Actor::Property::POSITION, Vector3(100, 200, 0));
224   control1.SetProperty(Actor::Property::SIZE, Vector3(150, 150, 0));
225   control1.SetProperty(Actor::Property::SCALE, Vector3(1, 2, 0));
226   control1.SetProperty(Actor::Property::COLOR, Vector4(1.0f, 1.0f, 1.0f, 0.5f));
227   control1.SetProperty(Actor::Property::OPACITY, 0.5f);
228   Property::Map controlProperty1;
229   controlProperty1.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
230   controlProperty1.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
231   controlProperty1.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, 30.f);
232   controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, 60.f);
233   controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
234   controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, 1.f);
235   control1.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty1);
236
237   Control control2 = Control::New();
238   control2.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
239   control2.SetProperty(Actor::Property::ANCHOR_POINT, ParentOrigin::TOP_LEFT);
240   control2.SetProperty(Actor::Property::POSITION, destinationPosition);
241   control2.SetProperty(Actor::Property::SIZE, destinationSize);
242   control2.SetProperty(Actor::Property::SCALE, destinationScale);
243   control2.SetProperty(Actor::Property::COLOR, destinationColor);
244   control2.SetProperty(Actor::Property::OPACITY, destinationOpacity);
245   Property::Map controlProperty2;
246   controlProperty2.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
247   controlProperty2.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 1.0f, 0.0f, 0.5f));
248   controlProperty2.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, destinationRadius);
249   controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, destinationBorderlineWidth);
250   controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, destinationBorderlineColor);
251   controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, destinationBorderlineOffset);
252   control2.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty2);
253
254   DALI_TEST_EQUALS(destinationPosition, control2.GetProperty<Vector3>(Actor::Property::POSITION), TEST_LOCATION);
255   Property::Map backgroundMap = control2.GetProperty<Property::Map>(Toolkit::Control::Property::BACKGROUND);
256   Vector4 cornerRadius = backgroundMap.Find(Toolkit::DevelVisual::Property::CORNER_RADIUS)->Get<Vector4>();
257   DALI_TEST_EQUALS(destinationRadiusV4, cornerRadius, TEST_LOCATION);
258   float borderlineWidth = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH)->Get<float>();
259   DALI_TEST_EQUALS(destinationBorderlineWidth, borderlineWidth, TEST_LOCATION);
260   Vector4 borderlineColor = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_COLOR)->Get<Vector4>();
261   DALI_TEST_EQUALS(destinationBorderlineColor, borderlineColor, TEST_LOCATION);
262   float borderlineOffset = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET)->Get<float>();
263   DALI_TEST_EQUALS(destinationBorderlineOffset, borderlineOffset, TEST_LOCATION);
264
265   application.GetScene().Add(control1);
266   application.GetScene().Add(control2);
267
268   application.SendNotification();
269   application.Render(20);
270
271   Transition transition = Transition::New(control1, control2, TimePeriod(0.5f));
272   TransitionSet transitionSet = TransitionSet::New();
273   transitionSet.AddTransition(transition);
274   transitionSet.Play();
275
276   bool signalReceived(false);
277   TransitionFinishCheck finishCheck(signalReceived);
278   transitionSet.FinishedSignal().Connect(&application, finishCheck);
279
280   application.SendNotification();
281   application.Render(50);
282
283   // We didn't expect the animation to finish yet
284   application.SendNotification();
285   finishCheck.CheckSignalNotReceived();
286
287   DALI_TEST_NOT_EQUALS(destinationPosition, control2.GetCurrentProperty<Vector3>(Actor::Property::POSITION), 0.00001f, TEST_LOCATION);
288   DALI_TEST_EQUALS(1, control2.GetRendererCount(), TEST_LOCATION);
289   Dali::Renderer renderer = control2.GetRendererAt(0);
290   Property::Index index = renderer.GetPropertyIndex(DevelVisual::Property::CORNER_RADIUS);
291   cornerRadius = renderer.GetCurrentProperty<Vector4>(index);
292   DALI_TEST_NOT_EQUALS(destinationRadiusV4, cornerRadius, 0.00001f, TEST_LOCATION);
293   index = renderer.GetPropertyIndex(DevelVisual::Property::BORDERLINE_WIDTH);
294   borderlineWidth = renderer.GetCurrentProperty<float>(index);
295   DALI_TEST_NOT_EQUALS(destinationBorderlineWidth, borderlineWidth, 0.00001f, TEST_LOCATION);
296   index = renderer.GetPropertyIndex(DevelVisual::Property::BORDERLINE_COLOR);
297   borderlineColor = renderer.GetCurrentProperty<Vector4>(index);
298   DALI_TEST_NOT_EQUALS(destinationBorderlineColor, borderlineColor, 0.00001f, TEST_LOCATION);
299   index = renderer.GetPropertyIndex(DevelVisual::Property::BORDERLINE_OFFSET);
300   borderlineOffset = renderer.GetCurrentProperty<float>(index);
301   DALI_TEST_NOT_EQUALS(destinationBorderlineOffset, borderlineOffset, 0.00001f, TEST_LOCATION);
302
303   application.SendNotification();
304   application.Render(700);
305
306   // We did expect the animation to finish
307   application.SendNotification();
308   finishCheck.CheckSignalReceived();
309
310   application.SendNotification();
311   application.Render(20);
312
313   DALI_TEST_EQUALS(destinationPosition, control2.GetCurrentProperty<Vector3>(Actor::Property::POSITION), TEST_LOCATION);
314   DALI_TEST_EQUALS(destinationSize, control2.GetCurrentProperty<Vector3>(Actor::Property::SIZE), TEST_LOCATION);
315   DALI_TEST_EQUALS(destinationScale, control2.GetCurrentProperty<Vector3>(Actor::Property::SCALE), TEST_LOCATION);
316   DALI_TEST_EQUALS(destinationColor, control2.GetCurrentProperty<Vector4>(Actor::Property::COLOR), TEST_LOCATION);
317   DALI_TEST_EQUALS(destinationOpacity, control2.GetCurrentProperty<float>(Actor::Property::OPACITY), TEST_LOCATION);
318   DALI_TEST_EQUALS(1, control2.GetRendererCount(), TEST_LOCATION);
319   renderer = control2.GetRendererAt(0);
320   index = renderer.GetPropertyIndex(DevelVisual::Property::CORNER_RADIUS);
321   cornerRadius = renderer.GetCurrentProperty<Vector4>(index);
322   DALI_TEST_EQUALS(destinationRadiusV4, cornerRadius, TEST_LOCATION);
323   index = renderer.GetPropertyIndex(DevelVisual::Property::BORDERLINE_WIDTH);
324   borderlineWidth = renderer.GetCurrentProperty<float>(index);
325   DALI_TEST_EQUALS(destinationBorderlineWidth, borderlineWidth, TEST_LOCATION);
326   index = renderer.GetPropertyIndex(DevelVisual::Property::BORDERLINE_COLOR);
327   borderlineColor = renderer.GetCurrentProperty<Vector4>(index);
328   DALI_TEST_EQUALS(destinationBorderlineColor, borderlineColor, TEST_LOCATION);
329   index = renderer.GetPropertyIndex(DevelVisual::Property::BORDERLINE_OFFSET);
330   borderlineOffset = renderer.GetCurrentProperty<float>(index);
331   DALI_TEST_EQUALS(destinationBorderlineOffset, borderlineOffset, TEST_LOCATION);
332
333   END_TEST;
334 }
335
336 int UtcDaliTransitionBetweenControlPairWithoutEmptySourceBackground(void)
337 {
338   ToolkitTestApplication application;
339   tet_infoline(" UtcDaliTransitionBetweenControlPair");
340
341   Vector4 destinationRadius(50.f, 30.f, 40.f, 0.f);
342   float   destinationBorderlineWidth(40.f);
343   Vector4 destinationBorderlineColor(1.0f, 0.5f, 0.2f, 0.8f);
344   float   destinationBorderlineOffset(1.f);
345
346   Control control1 = Control::New();
347   control1.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
348   control1.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
349   control1.SetProperty(Actor::Property::POSITION, Vector3(100, 200, 0));
350
351   Control control2 = Control::New();
352   control2.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
353   control2.SetProperty(Actor::Property::ANCHOR_POINT, ParentOrigin::TOP_LEFT);
354   control2.SetProperty(Actor::Property::POSITION, Vector3(50, 50, 0));
355   Property::Map controlProperty2;
356   controlProperty2.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
357   controlProperty2.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 1.0f, 0.0f, 0.5f));
358   controlProperty2.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, destinationRadius);
359   controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, destinationBorderlineWidth);
360   controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, destinationBorderlineColor);
361   controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, destinationBorderlineOffset);
362   control2.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty2);
363
364   Property::Map backgroundMap = control2.GetProperty<Property::Map>(Toolkit::Control::Property::BACKGROUND);
365   Vector4 cornerRadius = backgroundMap.Find(Toolkit::DevelVisual::Property::CORNER_RADIUS)->Get<Vector4>();
366   DALI_TEST_EQUALS(destinationRadius, cornerRadius, TEST_LOCATION);
367   float borderlineWidth = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH)->Get<float>();
368   DALI_TEST_EQUALS(destinationBorderlineWidth, borderlineWidth, TEST_LOCATION);
369   Vector4 borderlineColor = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_COLOR)->Get<Vector4>();
370   DALI_TEST_EQUALS(destinationBorderlineColor, borderlineColor, TEST_LOCATION);
371   float borderlineOffset = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET)->Get<float>();
372   DALI_TEST_EQUALS(destinationBorderlineOffset, borderlineOffset, TEST_LOCATION);
373
374   application.GetScene().Add(control1);
375   application.GetScene().Add(control2);
376
377   application.SendNotification();
378   application.Render(20);
379
380   Transition transition = Transition::New(control1, control2, TimePeriod(0.5f));
381   TransitionSet transitionSet = TransitionSet::New();
382   transitionSet.AddTransition(transition);
383   transitionSet.Play();
384
385   bool signalReceived(false);
386   TransitionFinishCheck finishCheck(signalReceived);
387   transitionSet.FinishedSignal().Connect(&application, finishCheck);
388
389   application.SendNotification();
390   application.Render(50);
391
392   // We didn't expect the animation to finish yet
393   application.SendNotification();
394   finishCheck.CheckSignalNotReceived();
395
396   backgroundMap = control2.GetProperty<Property::Map>(Toolkit::Control::Property::BACKGROUND);
397   cornerRadius = backgroundMap.Find(Toolkit::DevelVisual::Property::CORNER_RADIUS)->Get<Vector4>();
398   DALI_TEST_EQUALS(destinationRadius, cornerRadius, TEST_LOCATION);
399   borderlineWidth = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH)->Get<float>();
400   DALI_TEST_EQUALS(destinationBorderlineWidth, borderlineWidth, TEST_LOCATION);
401   borderlineColor = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_COLOR)->Get<Vector4>();
402   DALI_TEST_EQUALS(destinationBorderlineColor, borderlineColor, TEST_LOCATION);
403   borderlineOffset = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET)->Get<float>();
404   DALI_TEST_EQUALS(destinationBorderlineOffset, borderlineOffset, TEST_LOCATION);
405
406   application.SendNotification();
407   application.Render(700);
408
409   // We did expect the animation to finish
410   application.SendNotification();
411   finishCheck.CheckSignalReceived();
412
413   application.SendNotification();
414   application.Render(20);
415
416   backgroundMap = control2.GetProperty<Property::Map>(Toolkit::Control::Property::BACKGROUND);
417   cornerRadius = backgroundMap.Find(Toolkit::DevelVisual::Property::CORNER_RADIUS)->Get<Vector4>();
418   DALI_TEST_EQUALS(destinationRadius, cornerRadius, TEST_LOCATION);
419   borderlineWidth = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH)->Get<float>();
420   DALI_TEST_EQUALS(destinationBorderlineWidth, borderlineWidth, TEST_LOCATION);
421   borderlineColor = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_COLOR)->Get<Vector4>();
422   DALI_TEST_EQUALS(destinationBorderlineColor, borderlineColor, TEST_LOCATION);
423   borderlineOffset = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET)->Get<float>();
424   DALI_TEST_EQUALS(destinationBorderlineOffset, borderlineOffset, TEST_LOCATION);
425
426   END_TEST;
427 }
428
429 int UtcDaliTransitionBetweenImageViewPair(void)
430 {
431   ToolkitTestApplication application;
432   tet_infoline(" UtcDaliTransitionBetweenControlPair");
433
434   Vector3 destinationPosition(50, 50, 0);
435
436   ImageView control1 = ImageView::New();
437   control1.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
438   control1.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
439   control1.SetProperty(Actor::Property::POSITION, Vector3(100, 200, 0));
440   control1.SetProperty(Actor::Property::SIZE, Vector3(150, 150, 0));
441   Property::Map controlProperty1;
442   controlProperty1.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::IMAGE);
443   controlProperty1.Insert(Toolkit::ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME);
444   controlProperty1.Insert(Toolkit::Visual::Property::MIX_COLOR, Vector4(1.0f, 1.0f, 0.5f, 0.5f));
445   controlProperty1.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, 50.f);
446   controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, 50.f);
447   controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
448   controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, 1.f);
449   control1.SetProperty(Toolkit::ImageView::Property::IMAGE, controlProperty1);
450
451   ImageView control2 = ImageView::New();
452   control2.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
453   control2.SetProperty(Actor::Property::ANCHOR_POINT, ParentOrigin::TOP_LEFT);
454   control2.SetProperty(Actor::Property::POSITION, destinationPosition);
455   control2.SetProperty(Actor::Property::SIZE, Vector3(120, 120, 0));
456   Property::Map controlProperty2;
457   controlProperty2.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::IMAGE);
458   controlProperty2.Insert(Toolkit::ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME);
459   controlProperty2.Insert(Toolkit::Visual::Property::MIX_COLOR, Vector4(1.0f, 1.0f, 1.0f, 1.0f));
460   controlProperty2.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, 30.f);
461   controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, 30.f);
462   controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, Vector4(0.0f, 1.0f, 1.0f, 0.5f));
463   controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, -1.f);
464   control2.SetProperty(Toolkit::ImageView::Property::IMAGE, controlProperty2);
465
466   DALI_TEST_EQUALS(destinationPosition, control2.GetProperty<Vector3>(Actor::Property::POSITION), TEST_LOCATION);
467
468   application.GetScene().Add(control1);
469   application.GetScene().Add(control2);
470
471   application.SendNotification();
472   application.Render(20);
473
474   Vector3 startWorldPosition = control1.GetProperty<Vector3>(Actor::Property::WORLD_POSITION);
475   Vector3 finishWorldPosition = control2.GetProperty<Vector3>(Actor::Property::WORLD_POSITION);
476
477   Transition transition = Transition::New(control1, control2, TimePeriod(0.5f));
478   TransitionSet transitionSet = TransitionSet::New();
479   transitionSet.AddTransition(transition);
480   transitionSet.Play();
481
482   bool signalReceived(false);
483   TransitionFinishCheck finishCheck(signalReceived);
484   transitionSet.FinishedSignal().Connect(&application, finishCheck);
485
486   application.SendNotification();
487   application.Render(400);
488
489   // We didn't expect the animation to finish yet
490   application.SendNotification();
491   finishCheck.CheckSignalNotReceived();
492
493   // control2 moved about 80%
494   Vector3 currentPosition = control2.GetCurrentProperty<Vector3>(Actor::Property::POSITION);
495   Vector3 expectedPosition_0_7 = startWorldPosition + (finishWorldPosition - startWorldPosition) * 0.7;
496   Vector3 expectedPosition_0_9 = startWorldPosition + (finishWorldPosition - startWorldPosition) * 0.9;
497   DALI_TEST_CHECK(currentPosition.x <= expectedPosition_0_7.x && currentPosition.x >= expectedPosition_0_9.x);
498   DALI_TEST_CHECK(currentPosition.y <= expectedPosition_0_7.y && currentPosition.y >= expectedPosition_0_9.y);
499
500   application.SendNotification();
501   application.Render(200);
502
503   // We did expect the animation to finish
504   application.SendNotification();
505   finishCheck.CheckSignalReceived();
506
507   DALI_TEST_NOT_EQUALS(destinationPosition, control2.GetCurrentProperty<Vector3>(Actor::Property::POSITION), 0.00001f, TEST_LOCATION);
508
509   application.SendNotification();
510   application.Render(20);
511
512   DALI_TEST_EQUALS(destinationPosition, control2.GetCurrentProperty<Vector3>(Actor::Property::POSITION), TEST_LOCATION);
513
514   END_TEST;
515 }
516
517 int UtcDaliTransitionBetweenImageViewPairWithDelay(void)
518 {
519   ToolkitTestApplication application;
520   tet_infoline(" UtcDaliTransitionBetweenControlPair");
521
522   Vector3 destinationPosition(50, 50, 0);
523
524   ImageView control1 = ImageView::New();
525   control1.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
526   control1.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
527   control1.SetProperty(Actor::Property::POSITION, Vector3(100, 200, 0));
528   control1.SetProperty(Actor::Property::SIZE, Vector3(150, 150, 0));
529   Property::Map controlProperty1;
530   controlProperty1.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::IMAGE);
531   controlProperty1.Insert(Toolkit::ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME);
532   controlProperty1.Insert(Toolkit::Visual::Property::MIX_COLOR, Vector4(1.0f, 1.0f, 0.5f, 0.5f));
533   controlProperty1.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, 50.f);
534   controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, 50.f);
535   controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
536   controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, 1.f);
537   control1.SetProperty(Toolkit::ImageView::Property::IMAGE, controlProperty1);
538
539   ImageView control2 = ImageView::New();
540   control2.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
541   control2.SetProperty(Actor::Property::ANCHOR_POINT, ParentOrigin::TOP_LEFT);
542   control2.SetProperty(Actor::Property::POSITION, destinationPosition);
543   control2.SetProperty(Actor::Property::SIZE, Vector3(120, 120, 0));
544   Property::Map controlProperty2;
545   controlProperty2.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::IMAGE);
546   controlProperty2.Insert(Toolkit::ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME);
547   controlProperty2.Insert(Toolkit::Visual::Property::MIX_COLOR, Vector4(1.0f, 1.0f, 1.0f, 1.0f));
548   controlProperty2.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, 30.f);
549   controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, 30.f);
550   controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, Vector4(0.0f, 1.0f, 1.0f, 0.5f));
551   controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, -1.f);
552   control2.SetProperty(Toolkit::ImageView::Property::IMAGE, controlProperty2);
553
554   DALI_TEST_EQUALS(destinationPosition, control2.GetProperty<Vector3>(Actor::Property::POSITION), TEST_LOCATION);
555
556   application.GetScene().Add(control1);
557   application.GetScene().Add(control2);
558
559   application.SendNotification();
560   application.Render(20);
561
562   Vector3 startWorldPosition = control1.GetProperty<Vector3>(Actor::Property::WORLD_POSITION);
563   Vector3 finishWorldPosition = control2.GetProperty<Vector3>(Actor::Property::WORLD_POSITION);
564
565   Transition transition = Transition::New(control1, control2, TimePeriod(0.5f, 0.5f));
566   TransitionSet transitionSet = TransitionSet::New();
567   transitionSet.AddTransition(transition);
568   transitionSet.Play();
569
570   bool signalReceived(false);
571   TransitionFinishCheck finishCheck(signalReceived);
572   transitionSet.FinishedSignal().Connect(&application, finishCheck);
573
574   application.SendNotification();
575   application.Render(400);
576
577   // We didn't expect the animation to finish yet
578   application.SendNotification();
579   finishCheck.CheckSignalNotReceived();
580
581   DALI_TEST_EQUALS(startWorldPosition, control2.GetCurrentProperty<Vector3>(Actor::Property::POSITION), TEST_LOCATION);
582
583
584   application.SendNotification();
585   application.Render(400);
586
587   // We didn't expect the animation to finish yet
588   application.SendNotification();
589   finishCheck.CheckSignalNotReceived();
590
591   // control2 moved about 60% (800ms)
592   Vector3 currentPosition = control2.GetCurrentProperty<Vector3>(Actor::Property::POSITION);
593   Vector3 expectedPosition_0_5 = startWorldPosition + (finishWorldPosition - startWorldPosition) * 0.5;
594   Vector3 expectedPosition_0_7 = startWorldPosition + (finishWorldPosition - startWorldPosition) * 0.7;
595   DALI_TEST_CHECK(currentPosition.x <= expectedPosition_0_5.x && currentPosition.x >= expectedPosition_0_7.x);
596   DALI_TEST_CHECK(currentPosition.y <= expectedPosition_0_5.y && currentPosition.y >= expectedPosition_0_7.y);
597
598   application.SendNotification();
599   application.Render(400);
600
601   // We did expect the animation to finish
602   application.SendNotification();
603   finishCheck.CheckSignalReceived();
604
605   DALI_TEST_NOT_EQUALS(destinationPosition, control2.GetCurrentProperty<Vector3>(Actor::Property::POSITION), 0.00001f, TEST_LOCATION);
606
607   application.SendNotification();
608   application.Render(20);
609
610   DALI_TEST_EQUALS(destinationPosition, control2.GetCurrentProperty<Vector3>(Actor::Property::POSITION), TEST_LOCATION);
611
612   END_TEST;
613 }
614
615 int UtcDaliTransitionBetweenControlPairWithTree(void)
616 {
617   ToolkitTestApplication application;
618   tet_infoline(" UtcDaliTransitionBetweenControlPairWithTree");
619
620   Vector3 destinationPosition(50, 50, 0);
621   Vector3 destinationWorldPosition(-130, -290, 0);
622
623   Control control1 = Control::New();
624   control1.SetProperty(Actor::Property::POSITION, Vector3(100, 200, 0));
625   control1.SetProperty(Actor::Property::SIZE, Vector3(150, 150, 0));
626   Property::Map controlProperty1;
627   controlProperty1.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
628   controlProperty1.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
629   control1.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty1);
630
631   Control control2 = Control::New();
632   control2.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
633   control2.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
634   control2.SetProperty(Actor::Property::POSITION, destinationPosition);
635   control2.SetProperty(Actor::Property::SIZE, Vector3(120, 120, 0));
636   Property::Map controlProperty2;
637   controlProperty2.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
638   controlProperty2.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
639   control2.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty2);
640
641   Control control3 = Control::New();
642   control3.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
643   control3.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
644   control3.SetProperty(Actor::Property::POSITION, Vector3(50, 50, 0));
645   control3.SetProperty(Actor::Property::SIZE, Vector3(120, 120, 0));
646   Property::Map controlProperty3;
647   controlProperty3.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
648   controlProperty3.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
649   control3.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty3);
650
651   application.GetScene().Add(control1);
652   application.GetScene().Add(control2);
653   control2.Add(control3);
654
655   application.SendNotification();
656   application.Render(20);
657
658   Transition transition = Transition::New(control1, control2, TimePeriod(0.5f));
659   TransitionSet transitionSet = TransitionSet::New();
660   transitionSet.AddTransition(transition);
661   transitionSet.Play();
662
663   bool signalReceived(false);
664   TransitionFinishCheck finishCheck(signalReceived);
665   transitionSet.FinishedSignal().Connect(&application, finishCheck);
666
667   application.SendNotification();
668   application.Render(600);
669
670   // We didn't expect the animation to finish yet
671   application.SendNotification();
672   finishCheck.CheckSignalReceived();
673
674   application.SendNotification();
675   application.Render(20);
676
677   DALI_TEST_EQUALS(destinationPosition, control2.GetCurrentProperty<Vector3>(Actor::Property::POSITION), TEST_LOCATION);
678   DALI_TEST_EQUALS(destinationWorldPosition, control2.GetProperty<Vector3>(Actor::Property::WORLD_POSITION), TEST_LOCATION);
679
680   END_TEST;
681 }
682
683 int UtcDaliTransitionBetweenControlPairWithTreeWithChild(void)
684 {
685   ToolkitTestApplication application;
686   tet_infoline(" UtcDaliTransitionBetweenControlPairWithTreeWithChild");
687
688   Vector3 destinationWorldPosition(-80, -240, 0);
689
690   Control control1 = Control::New();
691   control1.SetProperty(Actor::Property::POSITION, Vector3(100, 200, 0));
692   control1.SetProperty(Actor::Property::SIZE, Vector3(150, 150, 0));
693   Property::Map controlProperty1;
694   controlProperty1.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
695   controlProperty1.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
696   control1.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty1);
697
698   Control control2 = Control::New();
699   control2.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
700   control2.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
701   control2.SetProperty(Actor::Property::POSITION, Vector3(50, 50, 0));
702   control2.SetProperty(Actor::Property::SIZE, Vector3(120, 120, 0));
703   Property::Map controlProperty2;
704   controlProperty2.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
705   controlProperty2.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
706   control2.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty2);
707
708   Control control3 = Control::New();
709   control3.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
710   control3.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
711   control3.SetProperty(Actor::Property::POSITION, Vector3(50, 50, 0));
712   control3.SetProperty(Actor::Property::SIZE, Vector3(120, 120, 0));
713   Property::Map controlProperty3;
714   controlProperty3.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
715   controlProperty3.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
716   control3.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty3);
717
718   application.GetScene().Add(control1);
719   application.GetScene().Add(control2);
720   control2.Add(control3);
721
722   application.SendNotification();
723   application.Render(20);
724
725   Transition transition = Transition::New(control1, control2, TimePeriod(0.5f));
726   transition.TransitionWithChild(true);
727   TransitionSet transitionSet = TransitionSet::New();
728   transitionSet.AddTransition(transition);
729   transitionSet.Play();
730
731   bool signalReceived(false);
732   TransitionFinishCheck finishCheck(signalReceived);
733   transitionSet.FinishedSignal().Connect(&application, finishCheck);
734
735   application.SendNotification();
736   application.Render(600);
737
738   // We didn't expect the animation to finish yet
739   application.SendNotification();
740   finishCheck.CheckSignalReceived();
741
742   application.SendNotification();
743   application.Render(20);
744
745   DALI_TEST_EQUALS(destinationWorldPosition, control3.GetProperty<Vector3>(Actor::Property::WORLD_POSITION), TEST_LOCATION);
746
747   END_TEST;
748 }
749
750 int UtcDaliTransitionBetweenControlPairWithTreeWithoutPositionInheritance(void)
751 {
752   ToolkitTestApplication application;
753   tet_infoline(" UtcDaliTransitionBetweenControlPairWithTreeWithoutPositionInheritance");
754
755   Vector3 sourcePosition(50, 50, 0);
756   Vector3 destinationPosition(100, 100, 0);
757
758   Control control1 = Control::New();
759   control1.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
760   control1.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
761   control1.SetProperty(Actor::Property::POSITION, sourcePosition);
762   control1.SetProperty(Actor::Property::SIZE, Vector3(150, 150, 0));
763   Property::Map controlProperty1;
764   controlProperty1.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
765   controlProperty1.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
766   control1.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty1);
767
768   Control control2 = Control::New();
769   control2.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
770   control2.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
771   control2.SetProperty(Actor::Property::POSITION, Vector3(150, 150, 0));
772   control2.SetProperty(Actor::Property::SIZE, Vector3(120, 120, 0));
773   Property::Map controlProperty2;
774   controlProperty2.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
775   controlProperty2.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
776   control2.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty2);
777
778   Control control3 = Control::New();
779   control3.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
780   control3.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
781   control3.SetProperty(Actor::Property::POSITION, destinationPosition);
782   control3.SetProperty(Actor::Property::SIZE, Vector3(120, 120, 0));
783   Property::Map controlProperty3;
784   controlProperty3.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
785   controlProperty3.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
786   control3.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty3);
787
788   application.GetScene().Add(control1);
789   application.GetScene().Add(control2);
790   control2.Add(control3);
791
792   application.SendNotification();
793   application.Render(20);
794
795   Transition transition;
796   TransitionSet transitionSet;
797   bool signalReceived(false);
798   TransitionFinishCheck finishCheck(signalReceived);
799
800   // not inherit Position.
801   control3.SetProperty(Actor::Property::INHERIT_POSITION, false);
802   control3.SetProperty(Actor::Property::INHERIT_ORIENTATION, true);
803   control3.SetProperty(Actor::Property::INHERIT_SCALE, true);
804
805   transition = Transition::New(control1, control3, TimePeriod(0.5f));
806   transitionSet = TransitionSet::New();
807   transitionSet.AddTransition(transition);
808   transitionSet.Play();
809   transitionSet.FinishedSignal().Connect(&application, finishCheck);
810
811   application.SendNotification();
812   application.Render(300);
813
814   Vector3 currentPosition = control3.GetProperty<Vector3>(Actor::Property::WORLD_POSITION);
815   DALI_TEST_CHECK(currentPosition.x <= destinationPosition.x && currentPosition.x >= sourcePosition.x);
816   DALI_TEST_CHECK(currentPosition.y <= destinationPosition.y && currentPosition.y >= sourcePosition.y);
817   DALI_TEST_CHECK(currentPosition.z <= destinationPosition.z && currentPosition.z >= sourcePosition.z);
818
819   application.SendNotification();
820   application.Render(300);
821
822   // We didn't expect the animation to finish yet
823   application.SendNotification();
824   finishCheck.CheckSignalReceived();
825
826   application.SendNotification();
827   application.Render(20);
828
829   DALI_TEST_EQUALS(destinationPosition, control3.GetProperty<Vector3>(Actor::Property::WORLD_POSITION), TEST_LOCATION);
830   END_TEST;
831 }
832
833 int UtcDaliTransitionBetweenControlPairWithTreeWithoutOrientationInheritance(void)
834 {
835   ToolkitTestApplication application;
836   tet_infoline(" UtcDaliTransitionBetweenControlPairWithTreeWithoutOrientationInheritance");
837
838   Radian sourceAngle(1.0f);
839   Radian destinationAngle(2.0f);
840   Quaternion sourceOrientation(sourceAngle, Vector3::XAXIS);
841   Quaternion destinationOrientation(destinationAngle, Vector3::XAXIS);
842
843   Control control1 = Control::New();
844   control1.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
845   control1.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
846   control1.SetProperty(Actor::Property::ORIENTATION, sourceOrientation);
847   control1.SetProperty(Actor::Property::SIZE, Vector3(150, 150, 0));
848   Property::Map controlProperty1;
849   controlProperty1.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
850   controlProperty1.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
851   control1.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty1);
852
853   Control control2 = Control::New();
854   control2.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
855   control2.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
856   control2.SetProperty(Actor::Property::ORIENTATION, Quaternion(Radian(2.0f), Vector3::XAXIS));
857   control2.SetProperty(Actor::Property::SIZE, Vector3(120, 120, 0));
858   Property::Map controlProperty2;
859   controlProperty2.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
860   controlProperty2.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
861   control2.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty2);
862
863   Control control3 = Control::New();
864   control3.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
865   control3.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
866   control3.SetProperty(Actor::Property::ORIENTATION, destinationOrientation);
867   control3.SetProperty(Actor::Property::SIZE, Vector3(120, 120, 0));
868   Property::Map controlProperty3;
869   controlProperty3.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
870   controlProperty3.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
871   control3.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty3);
872
873   // not inherit Orientation.
874   control3.SetProperty(Actor::Property::INHERIT_POSITION, true);
875   control3.SetProperty(Actor::Property::INHERIT_ORIENTATION, false);
876   control3.SetProperty(Actor::Property::INHERIT_SCALE, true);
877
878   Vector3 currentAxis;
879   Radian currentRadian;
880
881   application.GetScene().Add(control1);
882   application.GetScene().Add(control2);
883   control2.Add(control3);
884
885   application.SendNotification();
886   application.Render(20);
887
888   Quaternion currentOrientation = control3.GetProperty<Quaternion>(Actor::Property::WORLD_ORIENTATION);
889   DALI_TEST_EQUALS(currentOrientation, destinationOrientation, 0.0001f, TEST_LOCATION);
890
891   Transition transition;
892   TransitionSet transitionSet;
893   bool signalReceived(false);
894   TransitionFinishCheck finishCheck(signalReceived);
895
896   transition = Transition::New(control1, control3, TimePeriod(0.5f));
897   transitionSet = TransitionSet::New();
898   transitionSet.AddTransition(transition);
899   transitionSet.Play();
900   transitionSet.FinishedSignal().Connect(&application, finishCheck);
901
902   application.SendNotification();
903   application.Render(300);
904
905   currentOrientation = control3.GetProperty<Quaternion>(Actor::Property::WORLD_ORIENTATION);
906   DALI_TEST_NOT_EQUALS(currentOrientation, destinationOrientation, 0.0001f, TEST_LOCATION);
907
908   application.SendNotification();
909   application.Render(300);
910
911   // We didn't expect the animation to finish yet
912   application.SendNotification();
913   finishCheck.CheckSignalReceived();
914
915   application.SendNotification();
916   application.Render(20);
917
918   currentOrientation = control3.GetProperty<Quaternion>(Actor::Property::WORLD_ORIENTATION);
919   DALI_TEST_EQUALS(currentOrientation, destinationOrientation, 0.0001f, TEST_LOCATION);
920
921   END_TEST;
922 }
923
924 int UtcDaliTransitionBetweenControlPairWithTreeWithoutScaleInheritance(void)
925 {
926   ToolkitTestApplication application;
927   tet_infoline(" UtcDaliTransitionBetweenControlPairWithTreeWithoutOrientationInheritance");
928
929   Vector3 sourceScale(1, 1, 1);
930   Vector3 destinationScale(2, 2, 1);
931
932   Control control1 = Control::New();
933   control1.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
934   control1.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
935   control1.SetProperty(Actor::Property::SCALE, sourceScale);
936   control1.SetProperty(Actor::Property::SIZE, Vector3(150, 150, 0));
937   Property::Map controlProperty1;
938   controlProperty1.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
939   controlProperty1.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
940   control1.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty1);
941
942   Control control2 = Control::New();
943   control2.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
944   control2.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
945   control2.SetProperty(Actor::Property::SCALE, Vector3(3, 3, 1));
946   control2.SetProperty(Actor::Property::SIZE, Vector3(120, 120, 0));
947   Property::Map controlProperty2;
948   controlProperty2.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
949   controlProperty2.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
950   control2.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty2);
951
952   Control control3 = Control::New();
953   control3.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
954   control3.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
955   control3.SetProperty(Actor::Property::SCALE, destinationScale);
956   control3.SetProperty(Actor::Property::SIZE, Vector3(120, 120, 0));
957   Property::Map controlProperty3;
958   controlProperty3.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
959   controlProperty3.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
960   control3.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty3);
961
962   // not inherit Orientation.
963   control3.SetProperty(Actor::Property::INHERIT_POSITION, true);
964   control3.SetProperty(Actor::Property::INHERIT_ORIENTATION, true);
965   control3.SetProperty(Actor::Property::INHERIT_SCALE, false);
966
967   application.GetScene().Add(control1);
968   application.GetScene().Add(control2);
969   control2.Add(control3);
970
971   application.SendNotification();
972   application.Render(20);
973
974   Vector3 currentScale = control3.GetProperty<Vector3>(Actor::Property::WORLD_SCALE);
975   DALI_TEST_EQUALS(currentScale, destinationScale, 0.0001f, TEST_LOCATION);
976
977   Transition transition;
978   TransitionSet transitionSet;
979   bool signalReceived(false);
980   TransitionFinishCheck finishCheck(signalReceived);
981
982   transition = Transition::New(control1, control3, TimePeriod(0.5f));
983   transitionSet = TransitionSet::New();
984   transitionSet.AddTransition(transition);
985   transitionSet.Play();
986   transitionSet.FinishedSignal().Connect(&application, finishCheck);
987
988   application.SendNotification();
989   application.Render(300);
990
991   currentScale = control3.GetProperty<Vector3>(Actor::Property::WORLD_SCALE);
992   DALI_TEST_CHECK(currentScale.x <= destinationScale.x && currentScale.x >= sourceScale.x);
993   DALI_TEST_CHECK(currentScale.y <= destinationScale.y && currentScale.y >= sourceScale.y);
994   DALI_TEST_CHECK(currentScale.z <= destinationScale.z && currentScale.z >= sourceScale.z);
995
996   application.SendNotification();
997   application.Render(300);
998
999   // We didn't expect the animation to finish yet
1000   application.SendNotification();
1001   finishCheck.CheckSignalReceived();
1002
1003   application.SendNotification();
1004   application.Render(20);
1005
1006   currentScale = control3.GetProperty<Vector3>(Actor::Property::WORLD_SCALE);
1007   DALI_TEST_EQUALS(currentScale, destinationScale, 0.0001f, TEST_LOCATION);
1008
1009   END_TEST;
1010 }