2 * Copyright (c) 2017 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
22 #include <dali/public-api/dali-core.h>
23 #include <dali/devel-api/actors/actor-devel.h>
24 #include <dali/devel-api/object/handle-devel.h>
25 #include <dali-test-suite-utils.h>
30 void utc_dali_animation_startuP(void)
32 test_return_value = TET_UNDEF;
35 void utc_dali_animation_cleanuP(void)
37 test_return_value = TET_PASS;
43 static const float ROTATION_EPSILON = 0.0001f;
44 static const float VECTOR4_EPSILON = 0.0001f;
46 // Functor to test whether a Finish signal is emitted
47 struct AnimationFinishCheck
49 AnimationFinishCheck(bool& signalReceived)
50 : mSignalReceived(signalReceived)
54 void operator()(Animation& animation)
56 mSignalReceived = true;
61 mSignalReceived = false;
64 void CheckSignalReceived()
68 tet_printf("Expected Finish signal was not received\n");
77 void CheckSignalNotReceived()
81 tet_printf("Unexpected Finish signal was received\n");
90 bool& mSignalReceived; // owned by individual tests
95 int UtcDaliAnimationConstructorP(void)
97 TestApplication application;
101 DALI_TEST_CHECK( !animation );
105 int UtcDaliAnimationNewP(void)
107 TestApplication application;
109 Animation animation = Animation::New( 1.0f );
111 DALI_TEST_CHECK(animation);
115 int UtcDaliAnimationNewN(void)
117 TestApplication application;
119 Animation animation = Animation::New( -1.0f );
121 DALI_TEST_CHECK(animation);
122 DALI_TEST_EQUALS(animation.GetDuration(), 0.0f, TEST_LOCATION);
126 int UtcDaliAnimationDownCastP(void)
128 TestApplication application;
130 tet_infoline("Testing Dali::Animation::DownCast()");
132 float durationSeconds(1.0f);
133 Animation animation = Animation::New(durationSeconds);
135 BaseHandle object(animation);
137 Animation animation2 = Animation::DownCast(object);
138 DALI_TEST_CHECK(animation2);
140 Animation animation3 = DownCast< Animation >(object);
141 DALI_TEST_CHECK(animation3);
145 int UtcDaliAnimationDownCastN(void)
147 TestApplication application;
149 BaseHandle unInitializedObject;
151 Animation animation1 = Animation::DownCast( unInitializedObject );
152 DALI_TEST_CHECK( !animation1 );
154 Animation animation2 = DownCast< Animation >( unInitializedObject );
155 DALI_TEST_CHECK( !animation2 );
159 int UtcDaliAnimationCopyConstructorP(void)
161 TestApplication application;
163 // Initialize an object, ref count == 1
164 Animation animation = Animation::New( 1.0f );
166 Animation copy( animation );
167 DALI_TEST_CHECK( copy );
169 DALI_TEST_CHECK( copy.GetDuration() == animation.GetDuration() );
173 int UtcDaliAnimationAssignmentOperatorP(void)
175 TestApplication application;
177 Animation animation = Animation::New( 1.0f );
179 Animation copy = animation;
180 DALI_TEST_CHECK( copy );
182 DALI_TEST_CHECK( animation == copy );
184 DALI_TEST_CHECK( copy.GetDuration() == animation.GetDuration() );
188 int UtcDaliAnimationSetDurationP(void)
190 TestApplication application;
192 Actor actor = Actor::New();
193 Stage::GetCurrent().Add(actor);
195 // Build the animation
196 float durationSeconds(1.0f);
197 Animation animation = Animation::New(durationSeconds);
198 DALI_TEST_EQUALS(animation.GetDuration(), durationSeconds, TEST_LOCATION);
200 // Start the animation
201 Vector3 targetPosition(10.0f, 10.0f, 10.0f);
202 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
205 bool signalReceived(false);
206 AnimationFinishCheck finishCheck(signalReceived);
207 animation.FinishedSignal().Connect(&application, finishCheck);
209 application.SendNotification();
210 application.Render(static_cast<unsigned int>(durationSeconds*1000.0f) - 1u/*just less than the animation duration*/);
212 // We didn't expect the animation to finish yet
213 application.SendNotification();
214 finishCheck.CheckSignalNotReceived();
216 application.Render(2u/*just beyond the animation duration*/);
218 // We did expect the animation to finish
219 application.SendNotification();
220 finishCheck.CheckSignalReceived();
221 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
223 // Restart the animation, with a different duration
225 actor.SetPosition(Vector3::ZERO);
226 durationSeconds = 3.5f;
227 animation.SetDuration(durationSeconds);
228 DALI_TEST_EQUALS(animation.GetDuration(), durationSeconds, TEST_LOCATION);
231 application.SendNotification();
232 application.Render(static_cast<unsigned int>(durationSeconds*1000.0f) - 1u/*just less than the animation duration*/);
234 // We didn't expect the animation to finish yet
235 application.SendNotification();
236 finishCheck.CheckSignalNotReceived();
238 application.Render(2u/*just beyond the animation duration*/);
240 // We did expect the animation to finish
241 application.SendNotification();
242 finishCheck.CheckSignalReceived();
243 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
245 // Check that nothing has changed after a couple of buffer swaps
246 application.Render(0);
247 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
248 application.Render(0);
249 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
253 int UtcDaliAnimationSetDurationN(void)
255 TestApplication application;
257 Animation animation = Animation::New( 1.0f );
258 DALI_TEST_EQUALS( animation.GetDuration(), 1.0f, TEST_LOCATION );
260 animation.SetDuration( -1.0f );
261 DALI_TEST_EQUALS( animation.GetDuration(), 0.0f, TEST_LOCATION );
265 int UtcDaliAnimationGetDurationP(void)
267 TestApplication application;
269 Animation animation = Animation::New(1.0f);
270 DALI_TEST_EQUALS(animation.GetDuration(), 1.0f, TEST_LOCATION);
272 animation.SetDuration(2.0f);
273 DALI_TEST_EQUALS(animation.GetDuration(), 2.0f, TEST_LOCATION);
277 int UtcDaliAnimationSetLoopingP(void)
279 TestApplication application;
281 Actor actor = Actor::New();
282 Stage::GetCurrent().Add(actor);
284 // Build the animation
285 float durationSeconds(1.0f);
286 Animation animation = Animation::New(durationSeconds);
287 Vector3 targetPosition(10.0f, 10.0f, 10.0f);
288 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
290 // Start the animation
291 animation.SetLooping(true);
292 DALI_TEST_CHECK(animation.IsLooping());
295 bool signalReceived(false);
296 AnimationFinishCheck finishCheck(signalReceived);
297 animation.FinishedSignal().Connect(&application, finishCheck);
299 application.SendNotification();
302 float intervalSeconds = 0.25f;
303 float progress = 0.0f;
304 for (int iterations = 0; iterations < 5;)
306 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
308 progress += intervalSeconds;
309 DALI_TEST_EQUALS( targetPosition*progress, actor.GetCurrentPosition(), 0.001f, TEST_LOCATION );
311 if (progress >= 1.0f)
313 progress = progress - 1.0f;
318 // We didn't expect the animation to finish yet
319 application.SendNotification();
320 finishCheck.CheckSignalNotReceived();
322 animation.SetLooping(false);
323 DALI_TEST_CHECK(!animation.IsLooping());
325 application.SendNotification();
326 application.Render(static_cast<unsigned int>(durationSeconds*1000.0f) + 1u/*just beyond the animation duration*/);
328 // We did expect the animation to finish
329 application.SendNotification();
330 finishCheck.CheckSignalReceived();
331 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
333 // Check that nothing has changed after a couple of buffer swaps
334 application.Render(0);
335 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
336 application.Render(0);
337 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
341 int UtcDaliAnimationSetLoopCountP(void)
343 TestApplication application;
345 Actor actor = Actor::New();
346 Stage::GetCurrent().Add(actor);
348 // Build the animation
349 float durationSeconds(1.0f);
350 Animation animation = Animation::New(durationSeconds);
351 Vector3 targetPosition(10.0f, 10.0f, 10.0f);
352 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
354 // Start the animation
355 animation.SetLoopCount(3);
356 DALI_TEST_CHECK(animation.IsLooping());
359 bool signalReceived(false);
360 AnimationFinishCheck finishCheck(signalReceived);
361 animation.FinishedSignal().Connect(&application, finishCheck);
363 application.Render(0);
364 application.SendNotification();
365 application.Render(0);
366 application.SendNotification();
367 application.Render(0);
368 application.SendNotification();
369 application.Render(0);
370 application.SendNotification();
373 float intervalSeconds = 3.0f;
375 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
376 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
378 application.Render(0);
379 application.SendNotification();
380 application.Render(0);
381 application.SendNotification();
382 application.Render(0);
383 application.SendNotification();
384 application.Render(0);
385 application.SendNotification();
386 finishCheck.CheckSignalNotReceived();
388 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
390 application.SendNotification();
391 finishCheck.CheckSignalReceived();
392 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
396 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
397 application.SendNotification();
398 finishCheck.CheckSignalNotReceived();
400 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
401 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
402 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
403 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
404 application.SendNotification();
405 finishCheck.CheckSignalNotReceived();
410 int UtcDaliAnimationSetLoopCountP2(void)
412 TestApplication application;
415 // switching between forever and loop count
418 Actor actor = Actor::New();
419 Stage::GetCurrent().Add(actor);
421 // Build the animation
422 float durationSeconds(1.0f);
423 Animation animation = Animation::New(durationSeconds);
424 Vector3 targetPosition(10.0f, 10.0f, 10.0f);
425 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
426 animation.SetEndAction(Animation::Discard);
428 // Start the animation
429 animation.SetLoopCount(3);
430 DALI_TEST_CHECK(animation.IsLooping());
433 bool signalReceived(false);
434 AnimationFinishCheck finishCheck(signalReceived);
435 animation.FinishedSignal().Connect(&application, finishCheck);
437 float intervalSeconds = 3.0f;
439 application.SendNotification();
440 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
441 application.SendNotification();
442 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
443 application.SendNotification();
444 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
445 application.SendNotification();
447 application.SendNotification();
448 finishCheck.CheckSignalReceived();
453 animation.SetLooping(true);
454 DALI_TEST_CHECK(animation.IsLooping());
456 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
457 application.SendNotification();
458 finishCheck.CheckSignalNotReceived();
460 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
461 application.SendNotification();
462 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
463 application.SendNotification();
464 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
465 application.SendNotification();
466 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
467 application.SendNotification();
468 application.SendNotification();
469 finishCheck.CheckSignalNotReceived();
474 animation.SetLoopCount(3);
475 DALI_TEST_CHECK(animation.IsLooping());
478 application.SendNotification();
479 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
480 application.SendNotification();
481 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
482 application.SendNotification();
483 finishCheck.CheckSignalNotReceived();
485 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
486 application.SendNotification();
487 finishCheck.CheckSignalReceived();
492 animation.SetLooping(true);
493 DALI_TEST_CHECK(animation.IsLooping());
495 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
496 application.SendNotification();
497 finishCheck.CheckSignalNotReceived();
499 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
500 application.SendNotification();
501 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
502 application.SendNotification();
503 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
504 application.SendNotification();
505 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
506 application.SendNotification();
507 finishCheck.CheckSignalNotReceived();
512 animation.SetLoopCount(3);
513 DALI_TEST_CHECK(animation.IsLooping());
515 application.SendNotification();
516 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
517 application.SendNotification();
518 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
519 application.SendNotification();
520 finishCheck.CheckSignalNotReceived();
522 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
523 application.SendNotification();
524 finishCheck.CheckSignalNotReceived(); // we never hit play
532 int UtcDaliAnimationSetLoopCountP3(void)
534 TestApplication application;
537 // switching between forever and loop count
539 Actor actor = Actor::New();
540 Stage::GetCurrent().Add(actor);
542 // Build the animation
543 float durationSeconds(1.0f);
544 Animation animation = Animation::New(durationSeconds);
545 Vector3 targetPosition(10.0f, 10.0f, 10.0f);
546 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
547 animation.SetEndAction(Animation::Discard);
549 float intervalSeconds = 3.0f;
551 bool signalReceived(false);
552 AnimationFinishCheck finishCheck(signalReceived);
553 animation.FinishedSignal().Connect(&application, finishCheck);
556 animation.SetLooping(true);
557 DALI_TEST_CHECK(animation.IsLooping());
559 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
560 application.SendNotification();
561 finishCheck.CheckSignalNotReceived();
563 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
564 application.SendNotification();
565 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
566 application.SendNotification();
567 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
568 application.SendNotification();
569 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
570 application.SendNotification();
571 finishCheck.CheckSignalNotReceived();
576 animation.SetLoopCount(3);
577 DALI_TEST_CHECK(animation.IsLooping());
579 application.SendNotification();
580 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
581 application.SendNotification();
582 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
583 application.SendNotification();
584 finishCheck.CheckSignalNotReceived();
586 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
587 application.SendNotification();
588 finishCheck.CheckSignalNotReceived(); // we never hit play
596 int UtcDaliAnimationSetLoopCountP4(void)
598 TestApplication application;
603 Actor actor = Actor::New();
604 Stage::GetCurrent().Add(actor);
606 // Build the animation
607 float durationSeconds(1.0f);
608 Animation animation = Animation::New(durationSeconds);
609 Vector3 targetPosition(10.0f, 10.0f, 10.0f);
610 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
611 animation.SetEndAction(Animation::Bake);
613 float intervalSeconds = 3.0f;
615 bool signalReceived(false);
616 AnimationFinishCheck finishCheck(signalReceived);
617 animation.FinishedSignal().Connect(&application, finishCheck);
619 animation.SetLoopCount(1);
621 DALI_TEST_CHECK(!animation.IsLooping());
623 application.SendNotification();
624 finishCheck.CheckSignalNotReceived();
625 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
626 application.SendNotification();
627 finishCheck.CheckSignalReceived();
629 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
630 actor.SetProperty( Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f) );
634 animation.Play(); // again
635 DALI_TEST_CHECK(!animation.IsLooping());
637 application.SendNotification();
638 finishCheck.CheckSignalNotReceived();
639 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
640 application.SendNotification();
641 finishCheck.CheckSignalReceived();
643 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
648 int UtcDaliAnimationGetLoopCountP(void)
650 TestApplication application;
652 Actor actor = Actor::New();
653 Stage::GetCurrent().Add(actor);
655 // Build the animation
656 float durationSeconds(1.0f);
657 Animation animation = Animation::New(durationSeconds);
658 Vector3 targetPosition(10.0f, 10.0f, 10.0f);
659 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
661 DALI_TEST_CHECK(1 == animation.GetLoopCount());
663 // Start the animation
664 animation.SetLoopCount(3);
665 DALI_TEST_CHECK(animation.IsLooping());
666 DALI_TEST_CHECK(3 == animation.GetLoopCount());
670 application.Render(0);
671 application.SendNotification();
674 float intervalSeconds = 3.0f;
676 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
677 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
679 application.Render(0);
680 application.SendNotification();
682 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
683 application.SendNotification();
685 animation.SetLoopCount(0);
686 DALI_TEST_CHECK(animation.IsLooping());
687 DALI_TEST_CHECK(0 == animation.GetLoopCount());
689 animation.SetLoopCount(1);
690 DALI_TEST_CHECK(!animation.IsLooping());
691 DALI_TEST_CHECK(1 == animation.GetLoopCount());
697 int UtcDaliAnimationGetCurrentLoopP(void)
699 TestApplication application;
701 Actor actor = Actor::New();
702 Stage::GetCurrent().Add(actor);
704 // Build the animation
705 float durationSeconds(1.0f);
706 Animation animation = Animation::New(durationSeconds);
707 Vector3 targetPosition(10.0f, 10.0f, 10.0f);
708 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
710 // Start the animation
711 animation.SetLoopCount(3);
712 DALI_TEST_CHECK(animation.IsLooping());
713 DALI_TEST_CHECK(0 == animation.GetCurrentLoop());
716 bool signalReceived(false);
717 AnimationFinishCheck finishCheck(signalReceived);
718 animation.FinishedSignal().Connect(&application, finishCheck);
720 application.SendNotification();
723 float intervalSeconds = 3.0f;
725 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
726 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
728 application.SendNotification();
729 finishCheck.CheckSignalNotReceived();
730 DALI_TEST_CHECK(2 == animation.GetCurrentLoop());
732 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
734 application.SendNotification();
735 finishCheck.CheckSignalReceived();
736 DALI_TEST_CHECK(3 == animation.GetCurrentLoop());
737 DALI_TEST_CHECK(animation.GetLoopCount() == animation.GetCurrentLoop());
741 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
742 application.SendNotification();
743 finishCheck.CheckSignalNotReceived();
744 DALI_TEST_CHECK(3 == animation.GetCurrentLoop());
746 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
747 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
748 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
749 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
750 application.SendNotification();
751 finishCheck.CheckSignalNotReceived();
752 DALI_TEST_CHECK(3 == animation.GetCurrentLoop());
757 int UtcDaliAnimationIsLoopingP(void)
759 TestApplication application;
761 Animation animation = Animation::New(1.0f);
762 DALI_TEST_CHECK(!animation.IsLooping());
764 animation.SetLooping(true);
765 DALI_TEST_CHECK(animation.IsLooping());
769 int UtcDaliAnimationSetEndActioN(void)
771 TestApplication application;
773 Actor actor = Actor::New();
774 Stage::GetCurrent().Add(actor);
776 // Build the animation
777 float durationSeconds(1.0f);
778 Animation animation = Animation::New(durationSeconds);
779 DALI_TEST_CHECK(animation.GetEndAction() == Animation::Bake);
781 Vector3 targetPosition(10.0f, 10.0f, 10.0f);
782 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
784 // Start the animation
787 bool signalReceived(false);
788 AnimationFinishCheck finishCheck(signalReceived);
789 animation.FinishedSignal().Connect(&application, finishCheck);
791 application.SendNotification();
792 application.Render(static_cast<unsigned int>(durationSeconds*1000.0f) + 1u/*just beyond the animation duration*/);
794 // We did expect the animation to finish
795 application.SendNotification();
796 finishCheck.CheckSignalReceived();
797 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
799 // Go back to the start
800 actor.SetPosition(Vector3::ZERO);
801 application.SendNotification();
802 application.Render(0);
803 DALI_TEST_EQUALS( Vector3::ZERO, actor.GetCurrentPosition(), TEST_LOCATION );
805 // Test BakeFinal, animate again, for half the duration
807 animation.SetEndAction(Animation::BakeFinal);
808 DALI_TEST_CHECK(animation.GetEndAction() == Animation::BakeFinal);
811 application.SendNotification();
812 application.Render(static_cast<unsigned int>(durationSeconds*1000.0f*0.5f) /*half of the animation duration*/);
814 // Stop the animation early
817 // We did NOT expect the animation to finish
818 application.SendNotification();
819 finishCheck.CheckSignalNotReceived();
820 DALI_TEST_EQUALS( targetPosition * 0.5f, actor.GetCurrentPosition(), VECTOR4_EPSILON, TEST_LOCATION );
822 // The position should be same with target position in the next frame
823 application.Render(0);
824 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
826 // Go back to the start
827 actor.SetPosition(Vector3::ZERO);
828 application.SendNotification();
829 application.Render(0);
830 DALI_TEST_EQUALS( Vector3::ZERO, actor.GetCurrentPosition(), TEST_LOCATION );
832 // Test EndAction::Discard, animate again, but don't bake this time
834 animation.SetEndAction(Animation::Discard);
835 DALI_TEST_CHECK(animation.GetEndAction() == Animation::Discard);
838 application.SendNotification();
839 application.Render(static_cast<unsigned int>(durationSeconds*1000.0f) + 1u/*just beyond the animation duration*/);
841 // We did expect the animation to finish
842 application.SendNotification();
843 finishCheck.CheckSignalReceived();
844 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
846 // The position should be discarded in the next frame
847 application.Render(0);
848 DALI_TEST_EQUALS( Vector3::ZERO/*discarded*/, actor.GetCurrentPosition(), TEST_LOCATION );
850 // Check that nothing has changed after a couple of buffer swaps
851 application.Render(0);
852 DALI_TEST_EQUALS( Vector3::ZERO, actor.GetCurrentPosition(), TEST_LOCATION );
853 application.Render(0);
854 DALI_TEST_EQUALS( Vector3::ZERO, actor.GetCurrentPosition(), TEST_LOCATION );
858 int UtcDaliAnimationGetEndActionP(void)
860 TestApplication application;
862 Animation animation = Animation::New(1.0f);
863 DALI_TEST_CHECK(animation.GetEndAction() == Animation::Bake);
865 animation.SetEndAction(Animation::Discard);
866 DALI_TEST_CHECK(animation.GetEndAction() == Animation::Discard);
868 animation.SetEndAction(Animation::BakeFinal);
869 DALI_TEST_CHECK(animation.GetEndAction() == Animation::BakeFinal);
874 int UtcDaliAnimationSetDisconnectActionP(void)
876 TestApplication application;
877 Stage stage( Stage::GetCurrent() );
879 // Default: BakeFinal
881 Actor actor = Actor::New();
884 // Build the animation
885 float durationSeconds(1.0f);
886 Animation animation = Animation::New(durationSeconds);
887 DALI_TEST_CHECK(animation.GetDisconnectAction() == Animation::BakeFinal);
889 Vector3 targetPosition(10.0f, 10.0f, 10.0f);
890 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
892 // Start the animation
895 application.SendNotification();
896 application.Render(static_cast<unsigned int>(durationSeconds*0.5f*1000.0f)/*Only half the animation*/);
900 application.SendNotification();
901 application.Render();
903 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
908 Actor actor = Actor::New();
911 // Build the animation
912 float durationSeconds(1.0f);
913 Animation animation = Animation::New(durationSeconds);
914 animation.SetDisconnectAction( Animation::Bake );
916 Vector3 targetPosition(10.0f, 10.0f, 10.0f);
917 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
919 // Start the animation
922 application.SendNotification();
923 application.Render(static_cast<unsigned int>(durationSeconds*0.5f*1000.0f)/*Only half the animation*/);
927 application.SendNotification();
928 application.Render();
930 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition*0.5f, TEST_LOCATION );
935 Actor actor = Actor::New();
938 // Build the animation
939 float durationSeconds(1.0f);
940 Animation animation = Animation::New(durationSeconds);
941 animation.SetDisconnectAction( Animation::Discard );
943 Vector3 targetPosition(10.0f, 10.0f, 10.0f);
944 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
946 // Start the animation
949 application.SendNotification();
950 application.Render(static_cast<unsigned int>(durationSeconds*0.5f*1000.0f)/*Only half the animation*/);
954 application.SendNotification();
955 application.Render();
957 DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3::ZERO, TEST_LOCATION );
960 // Don't play the animation: disconnect action should not be applied
962 Actor actor = Actor::New();
965 // Build the animation
966 float durationSeconds(1.0f);
967 Animation animation = Animation::New(durationSeconds);
969 Vector3 targetPosition(10.0f, 10.0f, 10.0f);
970 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
972 application.SendNotification();
973 application.Render(static_cast<unsigned int>(durationSeconds*0.5f*1000.0f)/*Only half the animation*/);
977 application.SendNotification();
978 application.Render();
980 DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3::ZERO, TEST_LOCATION );
986 int UtcDaliAnimationGetDisconnectActionP(void)
988 TestApplication application;
989 Animation animation = Animation::New(1.0f);
990 DALI_TEST_CHECK(animation.GetDisconnectAction() == Animation::BakeFinal); // default!
992 animation.SetDisconnectAction(Animation::Discard);
993 DALI_TEST_CHECK(animation.GetDisconnectAction() == Animation::Discard);
995 animation.SetDisconnectAction(Animation::Bake);
996 DALI_TEST_CHECK(animation.GetDisconnectAction() == Animation::Bake);
1001 int UtcDaliAnimationSetDefaultAlphaFunctionP(void)
1003 TestApplication application;
1005 Animation animation = Animation::New(1.0f);
1006 AlphaFunction func = animation.GetDefaultAlphaFunction();
1007 DALI_TEST_EQUALS(func.GetBuiltinFunction(), AlphaFunction::DEFAULT, TEST_LOCATION);
1009 animation.SetDefaultAlphaFunction(AlphaFunction::EASE_IN);
1010 AlphaFunction func2 = animation.GetDefaultAlphaFunction();
1011 DALI_TEST_EQUALS(func2.GetBuiltinFunction(), AlphaFunction::EASE_IN, TEST_LOCATION);
1015 int UtcDaliAnimationGetDefaultAlphaFunctionP(void)
1017 TestApplication application;
1019 Animation animation = Animation::New(1.0f);
1020 AlphaFunction func = animation.GetDefaultAlphaFunction();
1022 // Test that the default is linear
1023 DALI_TEST_EQUALS(func.GetBuiltinFunction(), AlphaFunction::DEFAULT, TEST_LOCATION);
1025 animation.SetDefaultAlphaFunction(AlphaFunction::EASE_IN);
1026 AlphaFunction func2 = animation.GetDefaultAlphaFunction();
1027 DALI_TEST_EQUALS(func2.GetBuiltinFunction(), AlphaFunction::EASE_IN, TEST_LOCATION);
1032 int UtcDaliAnimationSetCurrentProgressP(void)
1034 TestApplication application;
1036 Actor actor = Actor::New();
1037 Stage::GetCurrent().Add(actor);
1039 // Build the animation
1040 Animation animation = Animation::New(0.0f);
1043 float durationSeconds(1.0f);
1044 animation.SetDuration(durationSeconds);
1046 bool signalReceived(false);
1047 AnimationFinishCheck finishCheck(signalReceived);
1048 animation.FinishedSignal().Connect(&application, finishCheck);
1049 application.SendNotification();
1051 Vector3 targetPosition(100.0f, 100.0f, 100.0f);
1052 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
1054 // Start the animation from 40% progress
1055 animation.SetCurrentProgress( 0.4f );
1058 application.SendNotification();
1059 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 60% progress */);
1061 // We didn't expect the animation to finish yet
1062 application.SendNotification();
1063 finishCheck.CheckSignalNotReceived();
1064 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.6f), TEST_LOCATION );
1065 DALI_TEST_EQUALS( 0.6f, animation.GetCurrentProgress(), TEST_LOCATION );
1067 animation.Play(); // Test that calling play has no effect, when animation is already playing
1068 application.SendNotification();
1070 //Set the progress to 70%
1071 animation.SetCurrentProgress( 0.7f );
1072 application.SendNotification();
1073 application.Render(static_cast<unsigned int>(durationSeconds*100.0f)/* 80% progress */);
1074 DALI_TEST_EQUALS( 0.8f, animation.GetCurrentProgress(), TEST_LOCATION );
1076 application.SendNotification();
1077 finishCheck.CheckSignalNotReceived();
1078 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.8f), TEST_LOCATION );
1079 DALI_TEST_EQUALS( 0.8f, animation.GetCurrentProgress(), TEST_LOCATION );
1081 application.Render(static_cast<unsigned int>(durationSeconds*200.0f) + 1u/*just beyond the animation duration*/);
1082 // We did expect the animation to finish
1083 application.SendNotification();
1084 finishCheck.CheckSignalReceived();
1085 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
1087 // Check that nothing has changed after a couple of buffer swaps
1088 application.Render(0);
1089 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
1090 application.Render(0);
1091 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
1095 int UtcDaliAnimationSetCurrentProgressN(void)
1097 TestApplication application;
1099 Actor actor = Actor::New();
1100 Stage::GetCurrent().Add(actor);
1102 // Build the animation
1103 Animation animation = Animation::New(0.0f);
1106 float durationSeconds(1.0f);
1107 animation.SetDuration(durationSeconds);
1109 bool signalReceived(false);
1110 AnimationFinishCheck finishCheck(signalReceived);
1111 animation.FinishedSignal().Connect(&application, finishCheck);
1112 application.SendNotification();
1114 Vector3 targetPosition(100.0f, 100.0f, 100.0f);
1115 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
1117 //Trying to set the current cursor outside the range [0..1] is ignored
1118 animation.SetCurrentProgress( -1.0f);
1119 application.SendNotification();
1120 DALI_TEST_EQUALS( 0.0f, animation.GetCurrentProgress(), TEST_LOCATION );
1122 animation.SetCurrentProgress( 100.0f);
1123 application.SendNotification();
1124 DALI_TEST_EQUALS( 0.0f, animation.GetCurrentProgress(), TEST_LOCATION );
1128 int UtcDaliAnimationGetCurrentProgressP(void)
1130 TestApplication application;
1132 Actor actor = Actor::New();
1133 Stage::GetCurrent().Add(actor);
1135 // Build the animation
1136 Animation animation = Animation::New(0.0f);
1139 //Test GetCurrentProgress return 0.0 as the duration is 0.0
1140 DALI_TEST_EQUALS( 0.0f, animation.GetCurrentProgress(), TEST_LOCATION );
1142 animation.SetCurrentProgress( 0.5f );
1143 application.SendNotification();
1144 application.Render(static_cast<unsigned int>(100.0f));
1146 //Progress should still be 0.0
1147 DALI_TEST_EQUALS( 0.0f, animation.GetCurrentProgress(), TEST_LOCATION );
1150 float durationSeconds(1.0f);
1151 animation.SetDuration(durationSeconds);
1152 application.SendNotification();
1154 bool signalReceived(false);
1155 AnimationFinishCheck finishCheck(signalReceived);
1156 animation.FinishedSignal().Connect(&application, finishCheck);
1157 application.SendNotification();
1159 Vector3 targetPosition(100.0f, 100.0f, 100.0f);
1160 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
1162 // Start the animation from 40% progress
1163 animation.SetCurrentProgress( 0.4f );
1166 application.SendNotification();
1167 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 60% progress */);
1169 // We didn't expect the animation to finish yet
1170 application.SendNotification();
1171 finishCheck.CheckSignalNotReceived();
1172 DALI_TEST_EQUALS( 0.6f, animation.GetCurrentProgress(), TEST_LOCATION );
1174 animation.Play(); // Test that calling play has no effect, when animation is already playing
1175 application.SendNotification();
1177 //Set the progress to 70%
1178 animation.SetCurrentProgress( 0.7f );
1179 application.SendNotification();
1180 application.Render(static_cast<unsigned int>(durationSeconds*100.0f)/* 80% progress */);
1181 DALI_TEST_EQUALS( 0.8f, animation.GetCurrentProgress(), TEST_LOCATION );
1183 application.SendNotification();
1184 finishCheck.CheckSignalNotReceived();
1185 DALI_TEST_EQUALS( 0.8f, animation.GetCurrentProgress(), TEST_LOCATION );
1187 application.Render(static_cast<unsigned int>(durationSeconds*200.0f) + 1u/*just beyond the animation duration*/);
1188 // We did expect the animation to finish
1189 application.SendNotification();
1190 finishCheck.CheckSignalReceived();
1194 int UtcDaliAnimationSetSpeedFactorP1(void)
1196 TestApplication application;
1198 tet_printf("Testing that setting a speed factor of 2 takes half the time\n");
1200 Actor actor = Actor::New();
1201 Stage::GetCurrent().Add(actor);
1203 // Build the animation
1204 float durationSeconds(1.0f);
1205 Animation animation = Animation::New(durationSeconds);
1207 const Vector3 initialPosition(0.0f, 0.0f, 0.0f);
1208 const Vector3 targetPosition(100.0f, 100.0f, 100.0f);
1210 KeyFrames keyframes = KeyFrames::New();
1211 keyframes.Add( 0.0f, initialPosition);
1212 keyframes.Add( 1.0f, targetPosition );
1213 animation.AnimateBetween( Property(actor, Actor::Property::POSITION), keyframes, AlphaFunction::LINEAR);
1215 //Set speed to be x2
1216 animation.SetSpeedFactor(2.0f);
1218 // Start the animation
1221 bool signalReceived(false);
1222 AnimationFinishCheck finishCheck(signalReceived);
1223 animation.FinishedSignal().Connect(&application, finishCheck);
1225 application.SendNotification();
1226 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 40% progress */);
1228 // We didn't expect the animation to finish yet
1229 application.SendNotification();
1230 finishCheck.CheckSignalNotReceived();
1231 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.4f), TEST_LOCATION );
1233 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 80% progress */);
1235 // We didn't expect the animation to finish yet
1236 application.SendNotification();
1237 finishCheck.CheckSignalNotReceived();
1238 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.8f), TEST_LOCATION );
1240 application.Render(static_cast<unsigned int>(durationSeconds*100.0f) + 1u/*just beyond half the duration*/);
1242 // We did expect the animation to finish
1243 application.SendNotification();
1244 finishCheck.CheckSignalReceived();
1245 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
1247 // Check that nothing has changed after a couple of buffer swaps
1248 application.Render(0);
1249 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
1250 application.Render(0);
1251 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
1256 int UtcDaliAnimationSetSpeedFactorP2(void)
1258 TestApplication application;
1260 Actor actor = Actor::New();
1261 Stage::GetCurrent().Add(actor);
1263 // Build the animation
1264 float durationSeconds(1.0f);
1265 Animation animation = Animation::New(durationSeconds);
1267 const Vector3 initialPosition(0.0f, 0.0f, 0.0f);
1268 const Vector3 targetPosition(100.0f, 100.0f, 100.0f);
1270 KeyFrames keyframes = KeyFrames::New();
1271 keyframes.Add( 0.0f, initialPosition);
1272 keyframes.Add( 1.0f, targetPosition );
1273 animation.AnimateBetween( Property(actor, Actor::Property::POSITION), keyframes, AlphaFunction::LINEAR);
1275 tet_printf("Test -1 speed factor. Animation will play in reverse at normal speed\n");
1276 animation.SetSpeedFactor( -1.0f );
1278 // Start the animation
1281 bool signalReceived(false);
1282 AnimationFinishCheck finishCheck(signalReceived);
1283 animation.FinishedSignal().Connect(&application, finishCheck);
1285 application.SendNotification();
1286 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 80% progress */);
1288 // We didn't expect the animation to finish yet
1289 application.SendNotification();
1290 finishCheck.CheckSignalNotReceived();
1291 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.8f), TEST_LOCATION );
1293 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 60% progress */);
1295 // We didn't expect the animation to finish yet
1296 application.SendNotification();
1297 finishCheck.CheckSignalNotReceived();
1298 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.6f), TEST_LOCATION );
1300 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 40% progress */);
1302 // We didn't expect the animation to finish yet
1303 application.SendNotification();
1304 finishCheck.CheckSignalNotReceived();
1305 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.4f), TEST_LOCATION );
1307 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 20% progress */);
1309 // We didn't expect the animation to finish yet
1310 application.SendNotification();
1311 finishCheck.CheckSignalNotReceived();
1312 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.2f), TEST_LOCATION );
1314 application.Render(static_cast<unsigned int>(durationSeconds*200.0f) + 1u/*just beyond the animation duration*/);
1316 // We did expect the animation to finish
1317 application.SendNotification();
1318 finishCheck.CheckSignalReceived();
1319 DALI_TEST_EQUALS( actor.GetCurrentPosition(), initialPosition, TEST_LOCATION );
1321 // Check that nothing has changed after a couple of buffer swaps
1322 application.Render(0);
1323 DALI_TEST_EQUALS( initialPosition, actor.GetCurrentPosition(), TEST_LOCATION );
1324 application.Render(0);
1325 DALI_TEST_EQUALS( initialPosition, actor.GetCurrentPosition(), TEST_LOCATION );
1330 int UtcDaliAnimationSetSpeedFactorP3(void)
1332 TestApplication application;
1334 Actor actor = Actor::New();
1335 Stage::GetCurrent().Add(actor);
1337 // Build the animation
1338 float durationSeconds(1.0f);
1339 Animation animation = Animation::New(durationSeconds);
1341 const Vector3 initialPosition(0.0f, 0.0f, 0.0f);
1342 const Vector3 targetPosition(100.0f, 100.0f, 100.0f);
1344 KeyFrames keyframes = KeyFrames::New();
1345 keyframes.Add( 0.0f, initialPosition);
1346 keyframes.Add( 1.0f, targetPosition );
1347 animation.AnimateBetween( Property(actor, Actor::Property::POSITION), keyframes, AlphaFunction::LINEAR);
1349 bool signalReceived(false);
1350 AnimationFinishCheck finishCheck(signalReceived);
1351 animation.FinishedSignal().Connect(&application, finishCheck);
1353 tet_printf("Test half speed factor. Animation will take twice the duration\n");
1355 //Set speed to be half of normal speed
1356 animation.SetSpeedFactor( 0.5f );
1358 // Start the animation
1361 application.SendNotification();
1362 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 10% progress */);
1364 // We didn't expect the animation to finish yet
1365 application.SendNotification();
1366 finishCheck.CheckSignalNotReceived();
1367 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.1f), TEST_LOCATION );
1369 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 20% progress */);
1371 // We didn't expect the animation to finish yet
1372 application.SendNotification();
1373 finishCheck.CheckSignalNotReceived();
1374 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.2f), TEST_LOCATION );
1376 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 30% progress */);
1378 // We didn't expect the animation to finish yet
1379 application.SendNotification();
1380 finishCheck.CheckSignalNotReceived();
1381 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.3f), TEST_LOCATION );
1383 application.SendNotification();
1384 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 40% progress */);
1386 // We didn't expect the animation to finish yet
1387 application.SendNotification();
1388 finishCheck.CheckSignalNotReceived();
1389 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.4f), TEST_LOCATION );
1391 application.Render(static_cast<unsigned int>(durationSeconds*1200.0f) + 1u/*just beyond the animation duration*/);
1393 // We did expect the animation to finish
1394 application.SendNotification();
1395 finishCheck.CheckSignalReceived();
1396 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
1398 // Check that nothing has changed after a couple of buffer swaps
1399 application.Render(0);
1400 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
1401 application.Render(0);
1402 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
1407 int UtcDaliAnimationSetSpeedFactorP4(void)
1409 TestApplication application;
1411 Actor actor = Actor::New();
1412 Stage::GetCurrent().Add(actor);
1414 // Build the animation
1415 float durationSeconds(1.0f);
1416 Animation animation = Animation::New(durationSeconds);
1418 const Vector3 initialPosition(0.0f, 0.0f, 0.0f);
1419 const Vector3 targetPosition(100.0f, 100.0f, 100.0f);
1421 KeyFrames keyframes = KeyFrames::New();
1422 keyframes.Add( 0.0f, initialPosition);
1423 keyframes.Add( 1.0f, targetPosition );
1424 animation.AnimateBetween( Property(actor, Actor::Property::POSITION), keyframes, AlphaFunction::LINEAR);
1426 bool signalReceived(false);
1427 AnimationFinishCheck finishCheck(signalReceived);
1428 animation.FinishedSignal().Connect(&application, finishCheck);
1430 tet_printf("Test half speed factor. Animation will take twice the duration\n");
1432 tet_printf("Set speed to be half of normal speed\n");
1433 tet_printf("SetSpeedFactor(0.5f)\n");
1434 animation.SetSpeedFactor( 0.5f );
1436 // Start the animation
1439 application.SendNotification();
1440 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 10% progress */);
1442 // We didn't expect the animation to finish yet
1443 application.SendNotification();
1444 finishCheck.CheckSignalNotReceived();
1445 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.1f), TEST_LOCATION );
1447 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 20% progress */);
1449 // We didn't expect the animation to finish yet
1450 application.SendNotification();
1451 finishCheck.CheckSignalNotReceived();
1452 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.2f), TEST_LOCATION );
1454 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 30% progress */);
1456 // We didn't expect the animation to finish yet
1457 application.SendNotification();
1458 finishCheck.CheckSignalNotReceived();
1459 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.3f), TEST_LOCATION );
1461 tet_printf("Reverse direction of animation whilst playing\n");
1462 tet_printf("SetSpeedFactor(-0.5f)\n");
1463 animation.SetSpeedFactor(-0.5f);
1465 application.SendNotification();
1466 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 20% progress */);
1468 // We didn't expect the animation to finish yet
1469 application.SendNotification();
1470 finishCheck.CheckSignalNotReceived();
1471 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.2f), TEST_LOCATION );
1473 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 10% progress */);
1475 // We didn't expect the animation to finish yet
1476 application.SendNotification();
1477 finishCheck.CheckSignalNotReceived();
1478 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.1f), 0.0001, TEST_LOCATION );
1480 application.Render(static_cast<unsigned int>(durationSeconds*200.0f) + 1u/*just beyond the animation duration*/);
1482 // We did expect the animation to finish
1483 application.SendNotification();
1484 finishCheck.CheckSignalReceived();
1485 DALI_TEST_EQUALS( actor.GetCurrentPosition(), initialPosition, TEST_LOCATION );
1487 // Check that nothing has changed after a couple of buffer swaps
1488 application.Render(0);
1489 DALI_TEST_EQUALS( initialPosition, actor.GetCurrentPosition(), TEST_LOCATION );
1490 application.Render(0);
1491 DALI_TEST_EQUALS( initialPosition, actor.GetCurrentPosition(), TEST_LOCATION );
1495 int UtcDaliAnimationSetSpeedFactorAndRange(void)
1497 TestApplication application;
1499 const unsigned int NUM_FRAMES(15);
1507 float expected[NUM_FRAMES];
1510 TestData testData[] = {
1512 /*0.0f, 0.1f 0.2f 0.3f 0.4f 0.5f 0.6f 0.7f 0.8f 0.9f 1.0f */
1513 /* |----------PlayRange---------------| */
1515 { 0.0f, 1.0f, // TimePeriod
1516 0.0f, 100.0f, // POS
1517 {/**/ 30.0f, 40.0f, 50.0f, 60.0f, 70.0f, /* Loop */
1518 /**/ 30.0f, 40.0f, 50.0f, 60.0f, /* Reverse direction */
1529 // ACTOR 1 - Across start of range
1530 /*0.0f, 0.1f 0.2f 0.3f 0.4f 0.5f 0.6f 0.7f 0.8f 0.9f 1.0f */
1531 /* |----------PlayRange---------------| */
1533 { 0.2f, 0.5f, // TimePeriod
1534 20.0f, 50.0f, // POS
1535 {/**/ 30.0f, 40.0f, 50.0f, 50.0f, 50.0f, /* Loop */
1536 /**/ 30.0f, 40.0f, 50.0f, 50.0f, /* Reverse direction @ frame #9 */
1546 // ACTOR 2 - Across end of range
1547 /*0.0f, 0.1f 0.2f 0.3f 0.4f 0.5f 0.6f 0.7f 0.8f 0.9f 1.0f */
1548 /* |----------PlayRange---------------| */
1550 {/**/ 0.5f, 0.9f, // TimePeriod
1551 /**/ 50.0f, 90.0f, // POS
1552 { /**/ 50.0f, 50.0f, 50.0f, 60.0f, 70.0f, /* Loop */
1553 /**/ 50.0f, 50.0f, 50.0f, 60.0f,/* Reverse direction @ frame #9 */
1562 // ACTOR 3 - Before beginning of range
1563 /*0.0f, 0.1f 0.2f 0.3f 0.4f 0.5f 0.6f 0.7f 0.8f 0.9f 1.0f */
1564 /* |----------PlayRange---------------| */
1566 {/**/ 0.1f, 0.25f, // TimePeriod
1567 /**/ 10.0f, 25.0f, // POS
1569 /**/ 25.0f, 25.0f, 25.0f, 25.0f, 25.0f, 25.0f, 25.0f, 25.0f, 25.0f, 25.0f, 25.0f, 25.0f, 25.0f, 25.0f, 25.0f
1574 // ACTOR 4 - After end of range
1575 /*0.0f, 0.1f 0.2f 0.3f 0.4f 0.5f 0.6f 0.7f 0.8f 0.9f 1.0f */
1576 /* |----------PlayRange---------------| */
1578 {/**/ 0.85f, 1.0f, // TimePeriod
1579 /**/ 85.0f, 100.0f, // POS
1581 /**/ 85.0f, 85.0f, 85.0f, 85.0f, 85.0f, 85.0f, 85.0f, 85.0f, 85.0f, 85.0f, 85.0f, 85.0f, 85.0f, 85.0f, 85.0f
1585 // Actor 5 - Middle of range
1586 /*0.0f, 0.1f 0.2f 0.3f 0.4f 0.5f 0.6f 0.7f 0.8f 0.9f 1.0f */
1587 /* |----------PlayRange---------------| */
1589 {/**/ 0.4f, 0.65f, // Time Period
1590 /**/ 40.0f, 65.0f, // Position
1591 { /**/ 40.0f, 40.0f, 50.0f, 60.0f, 65.0f,
1592 /**/ 40.0f, 40.0f, 50.0f, 60.0f, // Reverse
1603 const size_t NUM_ENTRIES(sizeof(testData)/sizeof(TestData));
1605 // Build the animation
1606 float durationSeconds(1.0f);
1607 Animation animation = Animation::New(durationSeconds);
1608 bool signalReceived(false);
1609 AnimationFinishCheck finishCheck(signalReceived);
1610 animation.FinishedSignal().Connect(&application, finishCheck);
1612 std::vector<Dali::Actor> actors;
1614 for( unsigned int actorIndex = 0; actorIndex < NUM_ENTRIES; ++actorIndex )
1616 Actor actor = Actor::New();
1617 actor.SetPosition( Vector3( testData[actorIndex].startX, 0, 0 ) );
1618 actors.push_back(actor);
1619 Stage::GetCurrent().Add(actor);
1621 if( actorIndex == 0 || actorIndex == NUM_ENTRIES-1 )
1623 KeyFrames keyframes = KeyFrames::New();
1624 keyframes.Add( testData[actorIndex].startTime, Vector3(testData[actorIndex].startX, 0, 0));
1625 keyframes.Add( testData[actorIndex].endTime, Vector3(testData[actorIndex].endX, 0, 0));
1626 animation.AnimateBetween( Property(actor, Actor::Property::POSITION), keyframes, AlphaFunction::LINEAR);
1630 animation.AnimateTo( Property(actor, Actor::Property::POSITION), Vector3( testData[actorIndex].endX, 0, 0 ), TimePeriod( testData[actorIndex].startTime, testData[actorIndex].endTime - testData[actorIndex].startTime) );
1634 tet_printf("Test half speed factor. Animation will take twice the duration\n");
1635 tet_printf("Set play range to be 0.3 - 0.8 of the duration\n");
1636 tet_printf("SetSpeedFactor(0.5f)\n");
1637 animation.SetSpeedFactor( 0.5f );
1638 animation.SetPlayRange( Vector2(0.3f, 0.8f) );
1639 animation.SetLooping(true);
1641 // Start the animation
1643 application.SendNotification();
1644 application.Render(0); // Frame 0 tests initial values
1646 for( unsigned int frame = 0; frame < NUM_FRAMES; ++frame )
1648 unsigned int actorIndex = 0u;
1649 for( actorIndex = 0u; actorIndex < NUM_ENTRIES; ++actorIndex )
1651 DALI_TEST_EQUALS( actors[actorIndex].GetCurrentPosition().x, testData[actorIndex].expected[frame], 0.001, TEST_LOCATION );
1652 if( ! Equals(actors[actorIndex].GetCurrentPosition().x, testData[actorIndex].expected[frame]) )
1654 tet_printf("Failed at frame %u, actorIndex %u\n", frame, actorIndex );
1660 tet_printf("Reverse direction of animation whilst playing after frame 8\n");
1661 tet_printf("SetSpeedFactor(-0.5f)\n");
1662 animation.SetSpeedFactor(-0.5f);
1663 application.SendNotification();
1665 application.Render(200); // 200 ms at half speed corresponds to 0.1 s
1667 // We didn't expect the animation to finish yet
1668 application.SendNotification();
1669 finishCheck.CheckSignalNotReceived();
1675 int UtcDaliAnimationSetSpeedFactorRangeAndLoopCount01(void)
1677 TestApplication application;
1679 const unsigned int NUM_FRAMES(15);
1687 float expected[NUM_FRAMES];
1692 /*0.0f, 0.1f 0.2f 0.3f 0.4f 0.5f 0.6f 0.7f 0.8f 0.9f 1.0f */
1693 /* |----------PlayRange---------------| */
1694 { 0.0f, 1.0f, // TimePeriod
1695 0.0f, 100.0f, // POS
1696 {/**/ 30.0f, 40.0f, 50.0f, 60.0f, 70.0f, /* Loop */
1697 /**/ 30.0f, 40.0f, 50.0f, 60.0f, 70.0f,
1698 /**/ 30.0f, 40.0f, 50.0f, 60.0f, 70.0f,
1704 // Build the animation
1705 float durationSeconds(1.0f);
1706 Animation animation = Animation::New(durationSeconds);
1707 bool signalReceived(false);
1708 AnimationFinishCheck finishCheck(signalReceived);
1709 animation.FinishedSignal().Connect(&application, finishCheck);
1711 std::vector<Dali::Actor> actors;
1713 Actor actor = Actor::New();
1714 actor.SetPosition( Vector3( testData.startX, 0, 0 ) );
1715 actors.push_back(actor);
1716 Stage::GetCurrent().Add(actor);
1718 KeyFrames keyframes = KeyFrames::New();
1719 keyframes.Add( testData.startTime, Vector3(testData.startX, 0, 0));
1720 keyframes.Add( testData.endTime, Vector3(testData.endX, 0, 0));
1721 animation.AnimateBetween( Property(actor, Actor::Property::POSITION), keyframes, AlphaFunction::LINEAR);
1723 tet_printf("Test half speed factor. Animation will take twice the duration\n");
1724 tet_printf("Set play range to be 0.3 - 0.8 of the duration\n");
1725 tet_printf("SetSpeedFactor(0.5f)\n");
1726 tet_printf("SetLoopCount(3)\n");
1727 animation.SetSpeedFactor( 0.5f );
1728 animation.SetPlayRange( Vector2(0.3f, 0.8f) );
1729 animation.SetLoopCount(3);
1731 // Start the animation
1733 application.SendNotification();
1734 application.Render(0); // Frame 0 tests initial values
1736 for( unsigned int frame = 0; frame < NUM_FRAMES; ++frame )
1738 DALI_TEST_EQUALS( actor.GetCurrentPosition().x, testData.expected[frame], 0.001, TEST_LOCATION );
1740 application.Render(200); // 200 ms at half speed corresponds to 0.1 s
1742 if( frame < NUM_FRAMES-1 )
1744 // We didn't expect the animation to finish yet
1745 application.SendNotification();
1746 finishCheck.CheckSignalNotReceived();
1750 // We did expect the animation to finish
1751 application.SendNotification();
1752 finishCheck.CheckSignalReceived();
1753 DALI_TEST_EQUALS( actor.GetCurrentPosition().x, 80.0f, 0.001, TEST_LOCATION );
1758 int UtcDaliAnimationSetSpeedFactorRangeAndLoopCount02(void)
1760 TestApplication application;
1762 const unsigned int NUM_FRAMES(15);
1770 float expected[NUM_FRAMES];
1775 /*0.0f, 0.1f 0.2f 0.3f 0.4f 0.5f 0.6f 0.7f 0.8f 0.9f 1.0f */
1776 /* |----------PlayRange---------------| */
1777 { 0.0f, 1.0f, // TimePeriod
1778 0.0f, 100.0f, // POS
1779 {/**/ 80.0f, 70.0f, 60.0f, 50.0f, 40.0f,
1780 /**/ 80.0f, 70.0f, 60.0f, 50.0f, 40.0f,
1781 /**/ 80.0f, 70.0f, 60.0f, 50.0f, 40.0f,
1786 // Build the animation
1787 float durationSeconds(1.0f);
1788 Animation animation = Animation::New(durationSeconds);
1789 bool signalReceived(false);
1790 AnimationFinishCheck finishCheck(signalReceived);
1791 animation.FinishedSignal().Connect(&application, finishCheck);
1793 std::vector<Dali::Actor> actors;
1795 Actor actor = Actor::New();
1796 actor.SetPosition( Vector3( testData.startX, 0, 0 ) );
1797 actors.push_back(actor);
1798 Stage::GetCurrent().Add(actor);
1800 KeyFrames keyframes = KeyFrames::New();
1801 keyframes.Add( testData.startTime, Vector3(testData.startX, 0, 0));
1802 keyframes.Add( testData.endTime, Vector3(testData.endX, 0, 0));
1803 animation.AnimateBetween( Property(actor, Actor::Property::POSITION), keyframes, AlphaFunction::LINEAR);
1805 tet_printf("Test reverse half speed factor. Animation will take twice the duration\n");
1806 tet_printf("Set play range to be 0.3 - 0.8 of the duration\n");
1807 tet_printf("SetSpeedFactor(-0.5f)\n");
1808 tet_printf("SetLoopCount(3)\n");
1809 animation.SetSpeedFactor( -0.5f );
1810 animation.SetPlayRange( Vector2(0.3f, 0.8f) );
1811 animation.SetLoopCount(3);
1813 // Start the animation
1815 application.SendNotification();
1816 application.Render(0); // Frame 0 tests initial values
1818 for( unsigned int frame = 0; frame < NUM_FRAMES; ++frame )
1820 DALI_TEST_EQUALS( actor.GetCurrentPosition().x, testData.expected[frame], 0.001, TEST_LOCATION );
1822 application.Render(200); // 200 ms at half speed corresponds to 0.1 s
1824 if( frame < NUM_FRAMES-1 )
1826 // We didn't expect the animation to finish yet
1827 application.SendNotification();
1828 finishCheck.CheckSignalNotReceived();
1832 // We did expect the animation to finish
1833 application.SendNotification();
1834 finishCheck.CheckSignalReceived();
1835 DALI_TEST_EQUALS( actor.GetCurrentPosition().x, 30.0f, 0.001, TEST_LOCATION );
1841 int UtcDaliAnimationGetSpeedFactorP(void)
1843 TestApplication application;
1845 Animation animation = Animation::New(1.0f);
1846 animation.SetSpeedFactor(0.5f);
1847 DALI_TEST_EQUALS(animation.GetSpeedFactor(), 0.5f, TEST_LOCATION);
1849 animation.SetSpeedFactor(-2.5f);
1850 DALI_TEST_EQUALS(animation.GetSpeedFactor(), -2.5f, TEST_LOCATION);
1854 int UtcDaliAnimationSetPlayRangeP(void)
1856 TestApplication application;
1858 Actor actor = Actor::New();
1859 Stage::GetCurrent().Add( actor );
1861 // Build the animation
1862 float durationSeconds( 1.0f );
1863 Animation animation = Animation::New( durationSeconds );
1865 bool signalReceived( false );
1866 AnimationFinishCheck finishCheck( signalReceived );
1867 animation.FinishedSignal().Connect( &application, finishCheck );
1868 application.SendNotification();
1870 // Set range between 0.4 and 0.8
1871 animation.SetPlayRange( Vector2( 0.4f, 0.9f ) );
1872 application.SendNotification();
1873 DALI_TEST_EQUALS( Vector2( 0.4f, 0.9f ), animation.GetPlayRange(), TEST_LOCATION );
1875 Vector3 targetPosition( 100.0f, 100.0f, 100.0f );
1876 animation.AnimateTo( Property( actor, Actor::Property::POSITION ), targetPosition, AlphaFunction::LINEAR );
1878 // Start the animation from 40% progress
1881 application.SendNotification();
1882 application.Render( static_cast< unsigned int >( durationSeconds * 200.0f )/* 60% progress */ );
1884 // We didn't expect the animation to finish yet
1885 application.SendNotification();
1886 finishCheck.CheckSignalNotReceived();
1887 DALI_TEST_EQUALS( actor.GetCurrentPosition(), ( targetPosition * 0.6f ), TEST_LOCATION );
1889 application.SendNotification();
1890 application.Render( static_cast< unsigned int >( durationSeconds * 200.0f )/* 80% progress */ );
1892 application.SendNotification();
1893 finishCheck.CheckSignalNotReceived();
1894 DALI_TEST_EQUALS( actor.GetCurrentPosition(), ( targetPosition * 0.8f ), TEST_LOCATION );
1896 application.SendNotification();
1897 application.Render( static_cast< unsigned int >( durationSeconds*100.0f ) + 1u/*just beyond the animation duration*/ );
1899 // We did expect the animation to finish
1900 application.SendNotification();
1901 finishCheck.CheckSignalReceived();
1902 DALI_TEST_EQUALS( actor.GetCurrentPosition(), ( targetPosition * 0.9f ), TEST_LOCATION );
1906 int UtcDaliAnimationSetPlayRangeN(void)
1908 TestApplication application;
1910 Actor actor = Actor::New();
1911 Stage::GetCurrent().Add(actor);
1913 // Build the animation
1914 Animation animation = Animation::New(0);
1915 application.SendNotification();
1917 //PlayRange out of bounds
1918 animation.SetPlayRange( Vector2(-1.0f,1.0f) );
1919 application.SendNotification();
1920 DALI_TEST_EQUALS( Vector2(0.0f,1.0f), animation.GetPlayRange(), TEST_LOCATION );
1921 animation.SetPlayRange( Vector2(0.0f,2.0f) );
1922 application.SendNotification();
1923 DALI_TEST_EQUALS( Vector2(0.0f,1.0f), animation.GetPlayRange(), TEST_LOCATION );
1925 //If playRange is not in the correct order it has to be ordered
1926 animation.SetPlayRange( Vector2(0.8f,0.2f) );
1927 application.SendNotification();
1928 DALI_TEST_EQUALS( Vector2(0.2f,0.8f), animation.GetPlayRange(), TEST_LOCATION );
1933 int UtcDaliAnimationGetPlayRangeP(void)
1935 TestApplication application;
1937 Actor actor = Actor::New();
1938 Stage::GetCurrent().Add( actor );
1940 // Build the animation
1941 Animation animation = Animation::New( 1.0f );
1942 application.SendNotification();
1944 //If PlayRange not specified it should be 0.0-1.0 by default
1945 DALI_TEST_EQUALS( Vector2( 0.0f,1.0f ), animation.GetPlayRange(), TEST_LOCATION );
1947 // Set range between 0.4 and 0.8
1948 animation.SetPlayRange( Vector2( 0.4f, 0.8f ) );
1949 application.SendNotification();
1950 DALI_TEST_EQUALS( Vector2( 0.4f, 0.8f ), animation.GetPlayRange(), TEST_LOCATION );
1955 int UtcDaliAnimationPlayP(void)
1957 TestApplication application;
1959 Actor actor = Actor::New();
1960 Stage::GetCurrent().Add(actor);
1962 // Build the animation
1963 float durationSeconds(1.0f);
1964 Animation animation = Animation::New(durationSeconds);
1965 Vector3 targetPosition(100.0f, 100.0f, 100.0f);
1966 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
1968 // Start the animation
1971 bool signalReceived(false);
1972 AnimationFinishCheck finishCheck(signalReceived);
1973 animation.FinishedSignal().Connect(&application, finishCheck);
1975 application.SendNotification();
1976 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 20% progress */);
1978 // We didn't expect the animation to finish yet
1979 application.SendNotification();
1980 finishCheck.CheckSignalNotReceived();
1981 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.2f), TEST_LOCATION );
1983 animation.Play(); // Test that calling play has no effect, when animation is already playing
1984 application.SendNotification();
1985 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 40% progress */);
1987 // We didn't expect the animation to finish yet
1988 application.SendNotification();
1989 finishCheck.CheckSignalNotReceived();
1990 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.4f), TEST_LOCATION );
1992 animation.Play(); // Test that calling play has no effect, when animation is already playing
1993 application.SendNotification();
1994 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 60% progress */);
1996 // We didn't expect the animation to finish yet
1997 application.SendNotification();
1998 finishCheck.CheckSignalNotReceived();
1999 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.6f), TEST_LOCATION );
2001 animation.Play(); // Test that calling play has no effect, when animation is already playing
2002 application.SendNotification();
2003 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 80% progress */);
2005 // We didn't expect the animation to finish yet
2006 application.SendNotification();
2007 finishCheck.CheckSignalNotReceived();
2008 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.8f), TEST_LOCATION );
2010 animation.Play(); // Test that calling play has no effect, when animation is already playing
2011 application.SendNotification();
2012 application.Render(static_cast<unsigned int>(durationSeconds*200.0f) + 1u/*just beyond the animation duration*/);
2014 // We did expect the animation to finish
2015 application.SendNotification();
2016 finishCheck.CheckSignalReceived();
2017 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
2019 // Check that nothing has changed after a couple of buffer swaps
2020 application.Render(0);
2021 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
2022 application.Render(0);
2023 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
2027 int UtcDaliAnimationPlayOffStageP(void)
2029 // Test that an animation can be played, when the actor is off-stage.
2030 // When the actor is added to the stage, it should appear at the current position
2031 // i.e. where it would have been anyway, if on-stage from the beginning.
2033 TestApplication application;
2035 Actor actor = Actor::New();
2036 Vector3 basePosition(Vector3::ZERO);
2037 DALI_TEST_EQUALS( actor.GetCurrentPosition(), basePosition, TEST_LOCATION );
2038 // Not added to the stage!
2040 // Build the animation
2041 float durationSeconds(1.0f);
2042 Animation animation = Animation::New(durationSeconds);
2043 animation.SetDisconnectAction( Animation::Discard );
2044 Vector3 targetPosition(100.0f, 100.0f, 100.0f);
2045 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
2047 // Start the animation
2050 bool signalReceived(false);
2051 AnimationFinishCheck finishCheck(signalReceived);
2052 animation.FinishedSignal().Connect(&application, finishCheck);
2054 application.SendNotification();
2055 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 20% progress */);
2057 // We didn't expect the animation to finish yet
2058 application.SendNotification();
2059 finishCheck.CheckSignalNotReceived();
2060 DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3::ZERO/*off-stage*/, TEST_LOCATION );
2063 Stage::GetCurrent().Add(actor);
2065 application.SendNotification();
2066 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 40% progress */);
2068 // We didn't expect the animation to finish yet
2069 application.SendNotification();
2070 finishCheck.CheckSignalNotReceived();
2071 Vector3 expectedPosition(basePosition + (targetPosition - basePosition)*0.4f);
2072 DALI_TEST_EQUALS( actor.GetCurrentPosition(), expectedPosition/*on-stage*/, TEST_LOCATION );
2074 // Remove from the stage
2075 Stage::GetCurrent().Remove(actor);
2077 application.SendNotification();
2078 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 60% progress */);
2080 // We didn't expect the animation to finish yet
2081 application.SendNotification();
2082 finishCheck.CheckSignalNotReceived();
2083 DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3::ZERO/*back to start position*/, TEST_LOCATION );
2086 Stage::GetCurrent().Add(actor);
2088 application.SendNotification();
2089 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 80% progress */);
2091 // We didn't expect the animation to finish yet
2092 application.SendNotification();
2093 finishCheck.CheckSignalNotReceived();
2094 expectedPosition = Vector3(basePosition + (targetPosition - basePosition)*0.8f);
2095 DALI_TEST_EQUALS( actor.GetCurrentPosition(), expectedPosition, TEST_LOCATION );
2097 application.SendNotification();
2098 application.Render(static_cast<unsigned int>(durationSeconds*200.0f) + 1u/*just beyond the animation duration*/);
2100 // We did expect the animation to finish
2101 application.SendNotification();
2102 finishCheck.CheckSignalReceived();
2103 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
2105 // Check that nothing has changed after a couple of buffer swaps
2106 application.Render(0);
2107 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
2108 application.Render(0);
2109 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
2113 int UtcDaliAnimationPlayDiscardHandleP(void)
2115 TestApplication application;
2117 Actor actor = Actor::New();
2118 Stage::GetCurrent().Add(actor);
2120 // Build the animation
2121 float durationSeconds(1.0f);
2122 Animation animation = Animation::New(durationSeconds);
2123 Vector3 targetPosition(100.0f, 100.0f, 100.0f);
2124 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
2126 bool signalReceived(false);
2127 AnimationFinishCheck finishCheck(signalReceived);
2128 animation.FinishedSignal().Connect(&application, finishCheck);
2130 // Start the animation
2133 // This is a test of the "Fire and Forget" behaviour
2134 // Discard the animation handle!
2136 DALI_TEST_CHECK( !animation );
2138 application.SendNotification();
2139 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 20% progress */);
2141 // We didn't expect the animation to finish yet
2142 application.SendNotification();
2143 finishCheck.CheckSignalNotReceived();
2144 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.2f), TEST_LOCATION );
2146 application.SendNotification();
2147 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 40% progress */);
2149 // We didn't expect the animation to finish yet
2150 application.SendNotification();
2151 finishCheck.CheckSignalNotReceived();
2152 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.4f), TEST_LOCATION );
2154 application.SendNotification();
2155 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 60% progress */);
2157 // We didn't expect the animation to finish yet
2158 application.SendNotification();
2159 finishCheck.CheckSignalNotReceived();
2160 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.6f), TEST_LOCATION );
2162 application.SendNotification();
2163 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 80% progress */);
2165 // We didn't expect the animation to finish yet
2166 application.SendNotification();
2167 finishCheck.CheckSignalNotReceived();
2168 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.8f), TEST_LOCATION );
2170 application.SendNotification();
2171 application.Render(static_cast<unsigned int>(durationSeconds*200.0f) + 1u/*just beyond the animation duration*/);
2173 // We did expect the animation to finish
2174 application.SendNotification();
2175 finishCheck.CheckSignalReceived();
2176 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
2178 // Check that nothing has changed after a couple of buffer swaps
2179 application.Render(0);
2180 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
2181 application.Render(0);
2182 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
2186 int UtcDaliAnimationPlayStopDiscardHandleP(void)
2188 TestApplication application;
2190 Actor actor = Actor::New();
2191 Stage::GetCurrent().Add(actor);
2193 // Build the animation
2194 float durationSeconds(1.0f);
2195 Animation animation = Animation::New(durationSeconds);
2196 Vector3 targetPosition(100.0f, 100.0f, 100.0f);
2197 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
2199 // Start the animation
2202 bool signalReceived(false);
2203 AnimationFinishCheck finishCheck(signalReceived);
2204 animation.FinishedSignal().Connect(&application, finishCheck);
2206 application.SendNotification();
2207 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 20% progress */);
2209 // We didn't expect the animation to finish yet
2210 application.SendNotification();
2211 finishCheck.CheckSignalNotReceived();
2212 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.2f), TEST_LOCATION );
2214 // This is a test of the "Fire and Forget" behaviour
2215 // Stop the animation, and Discard the animation handle!
2218 DALI_TEST_CHECK( !animation );
2220 application.SendNotification();
2221 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 40% progress */);
2223 // We expect the animation to finish at 20% progress
2224 application.SendNotification();
2225 finishCheck.CheckSignalReceived();
2226 finishCheck.Reset();
2227 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.2f), TEST_LOCATION );
2229 application.SendNotification();
2230 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 60% progress */);
2232 // Check that nothing has changed
2233 application.SendNotification();
2234 finishCheck.CheckSignalNotReceived();
2235 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.2f), TEST_LOCATION );
2237 application.SendNotification();
2238 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 80% progress */);
2240 // Check that nothing has changed
2241 application.SendNotification();
2242 finishCheck.CheckSignalNotReceived();
2243 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.2f), TEST_LOCATION );
2245 application.SendNotification();
2246 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 100% progress */);
2248 // Check that nothing has changed
2249 application.SendNotification();
2250 finishCheck.CheckSignalNotReceived();
2251 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.2f), TEST_LOCATION );
2255 int UtcDaliAnimationPlayRangeP(void)
2257 TestApplication application;
2259 Actor actor = Actor::New();
2260 Stage::GetCurrent().Add(actor);
2262 // Build the animation
2263 float durationSeconds(1.0f);
2264 Animation animation = Animation::New(durationSeconds);
2265 Vector3 targetPosition(100.0f, 100.0f, 100.0f);
2266 KeyFrames keyframes = KeyFrames::New();
2267 keyframes.Add( 0.0f , Vector3(0.0f,0.0f,0.0f ) );
2268 keyframes.Add( 1.0f , Vector3(100.0f,100.0f,100.0f ) );
2270 animation.AnimateBetween( Property( actor, Actor::Property::POSITION), keyframes );
2272 // Set range between 0.4 and 0.8
2273 animation.SetPlayRange( Vector2(0.4f,0.8f) );
2276 bool signalReceived(false);
2277 AnimationFinishCheck finishCheck(signalReceived);
2278 animation.FinishedSignal().Connect(&application, finishCheck);
2280 //Test that setting progress outside the range doesn't work
2281 animation.SetCurrentProgress( 0.9f );
2282 application.SendNotification();
2283 application.Render(0);
2284 DALI_TEST_EQUALS( animation.GetCurrentProgress(), 0.4f, TEST_LOCATION );
2285 animation.SetCurrentProgress( 0.2f );
2286 application.SendNotification();
2287 application.Render(0);
2288 DALI_TEST_EQUALS( animation.GetCurrentProgress(), 0.4f, TEST_LOCATION );
2290 application.SendNotification();
2291 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 60% progress */);
2293 // We didn't expect the animation to finish yet
2294 application.SendNotification();
2295 finishCheck.CheckSignalNotReceived();
2296 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.6f), TEST_LOCATION );
2298 animation.Play(); // Test that calling play has no effect, when animation is already playing
2299 application.SendNotification();
2300 application.Render(static_cast<unsigned int>(durationSeconds*200.0f) + 1u/* 80% progress */);
2302 // We did expect the animation to finish
2303 application.SendNotification();
2304 finishCheck.CheckSignalReceived();
2305 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.8f), TEST_LOCATION );
2307 // Check that nothing has changed after a couple of buffer swaps
2308 application.Render(0);
2309 DALI_TEST_EQUALS( targetPosition * 0.8f, actor.GetCurrentPosition(), TEST_LOCATION );
2310 application.Render(0);
2311 DALI_TEST_EQUALS( targetPosition * 0.8f, actor.GetCurrentPosition(), TEST_LOCATION );
2314 //Loop inside the range
2315 finishCheck.Reset();
2316 animation.SetLooping( true );
2318 application.SendNotification();
2319 float intervalSeconds = 0.1f;
2320 float progress = 0.4f;
2321 for (int iterations = 0; iterations < 10; ++iterations )
2323 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
2325 progress += intervalSeconds;
2326 if (progress > 0.8f)
2328 progress = progress - 0.4f;
2331 DALI_TEST_EQUALS( targetPosition*progress, actor.GetCurrentPosition(), 0.001f, TEST_LOCATION );
2334 // We didn't expect the animation to finish yet
2335 application.SendNotification();
2336 finishCheck.CheckSignalNotReceived();
2339 //Test change range on the fly
2340 animation.SetPlayRange( Vector2( 0.2f, 0.9f ) );
2341 application.SendNotification();
2343 for (int iterations = 0; iterations < 10; ++iterations )
2345 application.Render(static_cast<unsigned int>(durationSeconds*intervalSeconds*1000.0f));
2347 progress += intervalSeconds;
2348 if (progress > 0.9f)
2350 progress = progress - 0.7f;
2353 DALI_TEST_EQUALS( targetPosition*progress, actor.GetCurrentPosition(), 0.001f, TEST_LOCATION );
2359 int UtcDaliAnimationPlayFromP(void)
2361 TestApplication application;
2363 Actor actor = Actor::New();
2364 Stage::GetCurrent().Add(actor);
2366 // Build the animation
2367 float durationSeconds(1.0f);
2368 Animation animation = Animation::New(durationSeconds);
2369 Vector3 targetPosition(100.0f, 100.0f, 100.0f);
2370 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
2372 // Start the animation from 40% progress
2373 animation.PlayFrom( 0.4f );
2375 bool signalReceived(false);
2376 AnimationFinishCheck finishCheck(signalReceived);
2377 animation.FinishedSignal().Connect(&application, finishCheck);
2379 application.SendNotification();
2380 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 60% progress */);
2382 // We didn't expect the animation to finish yet
2383 application.SendNotification();
2384 finishCheck.CheckSignalNotReceived();
2385 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.6f), TEST_LOCATION );
2387 animation.Play(); // Test that calling play has no effect, when animation is already playing
2388 application.SendNotification();
2389 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 80% progress */);
2391 // We didn't expect the animation to finish yet
2392 application.SendNotification();
2393 finishCheck.CheckSignalNotReceived();
2394 DALI_TEST_EQUALS( actor.GetCurrentPosition(), (targetPosition * 0.8f), TEST_LOCATION );
2396 application.Render(static_cast<unsigned int>(durationSeconds*200.0f) + 1u/*just beyond the animation duration*/);
2397 // We did expect the animation to finish
2398 application.SendNotification();
2399 finishCheck.CheckSignalReceived();
2400 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
2402 // Check that nothing has changed after a couple of buffer swaps
2403 application.Render(0);
2404 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
2405 application.Render(0);
2406 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
2410 int UtcDaliAnimationPlayFromN(void)
2412 TestApplication application;
2414 Actor actor = Actor::New();
2415 Stage::GetCurrent().Add(actor);
2417 // Build the animation
2418 float durationSeconds(1.0f);
2419 Animation animation = Animation::New(durationSeconds);
2420 Vector3 targetPosition(100.0f, 100.0f, 100.0f);
2421 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
2423 //PlayFrom with an argument outside the range [0..1] will be ignored
2424 animation.PlayFrom(-1.0f);
2425 application.SendNotification();
2426 DALI_TEST_EQUALS(0.0f, animation.GetCurrentProgress(), TEST_LOCATION );
2428 animation.PlayFrom(100.0f);
2429 application.SendNotification();
2430 DALI_TEST_EQUALS(0.0f, animation.GetCurrentProgress(), TEST_LOCATION );
2434 int UtcDaliAnimationPauseP(void)
2436 TestApplication application;
2438 Actor actor = Actor::New();
2439 Stage::GetCurrent().Add(actor);
2441 // Build the animation
2442 float durationSeconds(1.0f);
2443 Animation animation = Animation::New(durationSeconds);
2444 Vector3 targetPosition(100.0f, 100.0f, 100.0f);
2445 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
2447 Vector3 fiftyPercentProgress(targetPosition * 0.5f);
2449 // Start the animation
2452 bool signalReceived(false);
2453 AnimationFinishCheck finishCheck(signalReceived);
2454 animation.FinishedSignal().Connect(&application, finishCheck);
2456 application.SendNotification();
2457 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% progress */);
2459 // We didn't expect the animation to finish yet
2460 application.SendNotification();
2461 finishCheck.CheckSignalNotReceived();
2462 DALI_TEST_EQUALS( actor.GetCurrentPosition(), fiftyPercentProgress, TEST_LOCATION );
2464 // Pause the animation
2466 application.SendNotification();
2469 for (int i=0; i<5; ++i)
2471 application.Render(static_cast<unsigned int>(durationSeconds*500.0f));
2473 // We didn't expect the animation to finish yet
2474 application.SendNotification();
2475 finishCheck.CheckSignalNotReceived();
2476 DALI_TEST_EQUALS( actor.GetCurrentPosition(), fiftyPercentProgress/* Still 50% progress when paused */, TEST_LOCATION );
2481 application.SendNotification();
2482 application.Render(static_cast<unsigned int>(durationSeconds*490.0f)/*slightly less than the animation duration*/);
2484 // We didn't expect the animation to finish yet
2485 application.SendNotification();
2486 finishCheck.CheckSignalNotReceived();
2488 application.SendNotification();
2489 application.Render(static_cast<unsigned int>(durationSeconds*10.0f) + 1u/*just beyond the animation duration*/);
2491 // We did expect the animation to finish
2492 application.SendNotification();
2493 finishCheck.CheckSignalReceived();
2494 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
2496 // Check that nothing has changed after a couple of buffer swaps
2497 application.Render(0);
2498 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
2499 application.Render(0);
2500 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
2505 int UtcDaliAnimationGetStateP(void)
2507 TestApplication application;
2509 Actor actor = Actor::New();
2510 Stage::GetCurrent().Add(actor);
2512 // Build the animation
2513 float durationSeconds(1.0f);
2514 Animation animation = Animation::New(durationSeconds);
2515 Vector3 targetPosition(100.0f, 100.0f, 100.0f);
2516 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
2517 DALI_TEST_EQUALS( animation.GetState(), Animation::STOPPED, TEST_LOCATION );
2519 Vector3 fiftyPercentProgress(targetPosition * 0.5f);
2521 // Start the animation
2524 DALI_TEST_EQUALS( animation.GetState(), Animation::PLAYING, TEST_LOCATION );
2526 bool signalReceived(false);
2527 AnimationFinishCheck finishCheck(signalReceived);
2528 animation.FinishedSignal().Connect(&application, finishCheck);
2530 application.SendNotification();
2531 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% progress */);
2533 // We didn't expect the animation to finish yet
2534 application.SendNotification();
2535 finishCheck.CheckSignalNotReceived();
2536 DALI_TEST_EQUALS( animation.GetState(), Animation::PLAYING, TEST_LOCATION );
2537 DALI_TEST_EQUALS( actor.GetCurrentPosition(), fiftyPercentProgress, TEST_LOCATION );
2539 // Pause the animation
2541 DALI_TEST_EQUALS( animation.GetState(), Animation::PAUSED, TEST_LOCATION );
2542 application.SendNotification();
2543 application.Render(0.f);
2546 for (int i=0; i<5; ++i)
2548 application.Render(static_cast<unsigned int>(durationSeconds*500.0f));
2550 // We didn't expect the animation to finish yet
2551 application.SendNotification();
2552 finishCheck.CheckSignalNotReceived();
2553 DALI_TEST_EQUALS( actor.GetCurrentPosition(), fiftyPercentProgress/* Still 50% progress when paused */, TEST_LOCATION );
2554 DALI_TEST_EQUALS( animation.GetState(), Animation::PAUSED, TEST_LOCATION );
2558 finishCheck.Reset();
2560 DALI_TEST_EQUALS( animation.GetState(), Animation::PLAYING, TEST_LOCATION );
2561 application.SendNotification();
2562 application.Render(static_cast<unsigned int>(durationSeconds*490.0f)/*slightly less than the animation duration*/);
2563 // We didn't expect the animation to finish yet
2564 application.SendNotification();
2565 finishCheck.CheckSignalNotReceived();
2566 DALI_TEST_EQUALS( animation.GetState(), Animation::PLAYING, TEST_LOCATION );
2568 application.SendNotification();
2569 application.Render(static_cast<unsigned int>(durationSeconds*10.0f) + 1u/*just beyond the animation duration*/);
2571 // We did expect the animation to finish
2572 application.SendNotification();
2573 finishCheck.CheckSignalReceived();
2574 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
2575 DALI_TEST_EQUALS( animation.GetState(), Animation::STOPPED, TEST_LOCATION );
2577 // Check that nothing has changed after a couple of buffer swaps
2578 application.Render(0);
2579 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
2580 application.Render(0);
2581 DALI_TEST_EQUALS( targetPosition, actor.GetCurrentPosition(), TEST_LOCATION );
2582 DALI_TEST_EQUALS( animation.GetState(), Animation::STOPPED, TEST_LOCATION );
2585 finishCheck.Reset();
2587 DALI_TEST_EQUALS( animation.GetState(), Animation::PLAYING, TEST_LOCATION );
2588 application.SendNotification();
2589 application.Render(static_cast<unsigned int>(durationSeconds*490.0f)/*slightly less than the animation duration*/);
2590 application.SendNotification();
2591 finishCheck.CheckSignalNotReceived();
2592 DALI_TEST_EQUALS( animation.GetState(), Animation::PLAYING, TEST_LOCATION );
2598 int UtcDaliAnimationStopP(void)
2600 TestApplication application;
2602 Actor actor = Actor::New();
2603 Stage::GetCurrent().Add(actor);
2605 // Build the animation
2606 float durationSeconds(1.0f);
2607 Animation animation = Animation::New(durationSeconds);
2608 Vector3 targetPosition(100.0f, 100.0f, 100.0f);
2609 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
2611 Vector3 fiftyPercentProgress(targetPosition * 0.5f);
2613 // Start the animation
2616 bool signalReceived(false);
2617 AnimationFinishCheck finishCheck(signalReceived);
2618 animation.FinishedSignal().Connect(&application, finishCheck);
2620 application.SendNotification();
2621 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% progress */);
2623 // We didn't expect the animation to finish yet
2624 application.SendNotification();
2625 finishCheck.CheckSignalNotReceived();
2626 DALI_TEST_EQUALS( actor.GetCurrentPosition(), fiftyPercentProgress, TEST_LOCATION );
2628 // Stop the animation
2630 application.SendNotification();
2633 for (int i=0; i<5; ++i)
2635 application.Render(static_cast<unsigned int>(durationSeconds*500.0f));
2637 // We did expect the animation to finish
2638 application.SendNotification();
2639 finishCheck.CheckSignalReceived();
2640 DALI_TEST_EQUALS( actor.GetCurrentPosition(), fiftyPercentProgress/* Still 50% progress when stopped */, TEST_LOCATION );
2645 int UtcDaliAnimationStopSetPositionP(void)
2647 // Test that Animation::Stop & Actor::SetPosition can be used in conjunction
2648 // i.e. to check that the animation does not interfere with the position set.
2650 TestApplication application;
2652 Actor actor = Actor::New();
2653 Stage::GetCurrent().Add(actor);
2655 // Build the animation
2656 float durationSeconds(1.0f);
2657 Animation animation = Animation::New(durationSeconds);
2658 Vector3 targetPosition(100.0f, 100.0f, 100.0f);
2659 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
2661 Vector3 fiftyPercentProgress(targetPosition * 0.5f);
2663 // Start the animation
2666 bool signalReceived(false);
2667 AnimationFinishCheck finishCheck(signalReceived);
2668 animation.FinishedSignal().Connect(&application, finishCheck);
2670 application.SendNotification();
2671 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% progress */);
2673 // We didn't expect the animation to finish yet
2674 application.SendNotification();
2675 finishCheck.CheckSignalNotReceived();
2676 DALI_TEST_EQUALS( actor.GetCurrentPosition(), fiftyPercentProgress, TEST_LOCATION );
2678 // Stop the animation
2680 Vector3 positionSet(2.0f, 3.0f, 4.0f);
2681 actor.SetPosition(positionSet);
2682 application.SendNotification();
2685 for (int i=0; i<5; ++i)
2687 application.Render(static_cast<unsigned int>(durationSeconds*500.0f));
2689 // We did expect the animation to finish
2690 application.SendNotification();
2691 finishCheck.CheckSignalReceived();
2692 DALI_TEST_EQUALS( actor.GetCurrentPosition(), positionSet/*Animation should not interfere with this*/, TEST_LOCATION );
2697 int UtcDaliAnimationClearP(void)
2699 TestApplication application;
2701 Actor actor = Actor::New();
2702 Stage::GetCurrent().Add(actor);
2704 // Build the animation
2705 float durationSeconds(1.0f);
2706 Animation animation = Animation::New(durationSeconds);
2707 Vector3 targetPosition(100.0f, 100.0f, 100.0f);
2708 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
2710 Vector3 fiftyPercentProgress(targetPosition * 0.5f);
2712 // Start the animation
2715 bool signalReceived(false);
2716 AnimationFinishCheck finishCheck(signalReceived);
2717 animation.FinishedSignal().Connect(&application, finishCheck);
2719 application.SendNotification();
2720 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% progress */);
2722 // We didn't expect the animation to finish yet
2723 application.SendNotification();
2724 finishCheck.CheckSignalNotReceived();
2725 DALI_TEST_EQUALS( actor.GetCurrentPosition(), fiftyPercentProgress, TEST_LOCATION );
2727 // Clear the animation
2729 application.SendNotification();
2731 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
2733 // We don't expect the animation to finish now
2734 application.SendNotification();
2735 finishCheck.CheckSignalNotReceived();
2736 DALI_TEST_EQUALS( actor.GetCurrentPosition(), fiftyPercentProgress/* Still 50% progress since the animator was destroyed */, TEST_LOCATION );
2738 // Restart as a scale animation; this should not move the actor's position
2739 finishCheck.Reset();
2740 actor.SetPosition(Vector3::ZERO);
2741 Vector3 targetScale(3.0f, 3.0f, 3.0f);
2742 animation.AnimateTo( Property( actor, Actor::Property::SCALE ), targetScale, AlphaFunction::LINEAR );
2745 application.SendNotification();
2746 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% progress */);
2748 // We didn't expect the animation to finish yet
2749 application.SendNotification();
2750 finishCheck.CheckSignalNotReceived();
2751 DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3::ZERO/*Check move-animator was destroyed*/, TEST_LOCATION );
2752 DALI_TEST_EQUALS( actor.GetCurrentScale(), Vector3(2.0f, 2.0f, 2.0f), TEST_LOCATION );
2754 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
2756 // We did expect the animation to finish
2757 application.SendNotification();
2758 finishCheck.CheckSignalReceived();
2759 DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3::ZERO/*Check move-animator was destroyed*/, TEST_LOCATION );
2760 DALI_TEST_EQUALS( actor.GetCurrentScale(), targetScale, TEST_LOCATION );
2764 int UtcDaliAnimationFinishedSignalP(void)
2766 TestApplication application;
2768 // Start the empty animation
2769 float durationSeconds(1.0f);
2770 Animation animation = Animation::New(durationSeconds);
2773 bool signalReceived(false);
2774 AnimationFinishCheck finishCheck(signalReceived);
2775 animation.FinishedSignal().Connect(&application, finishCheck);
2777 application.SendNotification();
2778 application.Render(static_cast<unsigned int>(durationSeconds*1000.0f) + 1u/*beyond the animation duration*/);
2780 // We did expect the animation to finish
2781 application.SendNotification();
2782 finishCheck.CheckSignalReceived();
2786 int UtcDaliAnimationAnimateByBooleanP(void)
2788 TestApplication application;
2790 Actor actor = Actor::New();
2792 // Register a boolean property
2793 bool startValue(false);
2794 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
2795 Stage::GetCurrent().Add(actor);
2796 DALI_TEST_CHECK( actor.GetProperty<bool>(index) == startValue );
2797 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == startValue );
2799 // Build the animation
2800 float durationSeconds(2.0f);
2801 Animation animation = Animation::New(durationSeconds);
2802 const bool relativeValue(true);
2803 const bool finalValue( false || relativeValue );
2804 animation.AnimateBy(Property(actor, index), relativeValue);
2806 // Start the animation
2809 bool signalReceived(false);
2810 AnimationFinishCheck finishCheck(signalReceived);
2811 animation.FinishedSignal().Connect(&application, finishCheck);
2813 application.SendNotification();
2814 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
2816 // We didn't expect the animation to finish yet
2817 application.SendNotification();
2818 finishCheck.CheckSignalNotReceived();
2819 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == startValue );
2821 application.SendNotification();
2822 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
2824 // We did expect the animation to finish
2825 application.SendNotification();
2826 finishCheck.CheckSignalReceived();
2827 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
2829 // Check that nothing has changed after a couple of buffer swaps
2830 application.Render(0);
2831 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
2832 application.Render(0);
2833 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
2835 // Repeat with relative value "false" - this should be an NOOP
2836 animation = Animation::New(durationSeconds);
2837 bool noOpValue(false);
2838 animation.AnimateBy(Property(actor, index), noOpValue);
2840 // Start the animation
2843 finishCheck.Reset();
2844 animation.FinishedSignal().Connect(&application, finishCheck);
2846 application.SendNotification();
2847 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
2849 // We didn't expect the animation to finish yet
2850 application.SendNotification();
2851 finishCheck.CheckSignalNotReceived();
2852 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
2854 application.SendNotification();
2855 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
2857 // We did expect the animation to finish
2858 application.SendNotification();
2859 finishCheck.CheckSignalReceived();
2860 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
2862 // Check that nothing has changed after a couple of buffer swaps
2863 application.Render(0);
2864 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
2865 application.Render(0);
2866 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
2870 int UtcDaliAnimationAnimateByBooleanAlphaFunctionP(void)
2872 TestApplication application;
2874 Actor actor = Actor::New();
2876 // Register a boolean property
2877 bool startValue(false);
2878 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
2879 Stage::GetCurrent().Add(actor);
2880 DALI_TEST_CHECK( actor.GetProperty<bool>(index) == startValue );
2881 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == startValue );
2883 // Build the animation
2884 float durationSeconds(2.0f);
2885 Animation animation = Animation::New(durationSeconds);
2886 bool relativeValue(true);
2887 bool finalValue( false || relativeValue );
2888 animation.AnimateBy(Property(actor, index), relativeValue, AlphaFunction::EASE_IN);
2890 // Start the animation
2893 bool signalReceived(false);
2894 AnimationFinishCheck finishCheck(signalReceived);
2895 animation.FinishedSignal().Connect(&application, finishCheck);
2897 application.SendNotification();
2898 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
2900 // We didn't expect the animation to finish yet
2901 application.SendNotification();
2902 finishCheck.CheckSignalNotReceived();
2903 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == startValue );
2905 application.SendNotification();
2906 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
2908 // We did expect the animation to finish
2909 application.SendNotification();
2910 finishCheck.CheckSignalReceived();
2911 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
2913 // Check that nothing has changed after a couple of buffer swaps
2914 application.Render(0);
2915 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
2916 application.Render(0);
2917 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
2919 // Repeat with relative value "false" - this should be an NOOP
2920 animation = Animation::New(durationSeconds);
2921 bool noOpValue(false);
2922 animation.AnimateBy(Property(actor, index), noOpValue, AlphaFunction::EASE_IN);
2924 // Start the animation
2927 finishCheck.Reset();
2928 animation.FinishedSignal().Connect(&application, finishCheck);
2930 application.SendNotification();
2931 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
2933 // We didn't expect the animation to finish yet
2934 application.SendNotification();
2935 finishCheck.CheckSignalNotReceived();
2936 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
2938 application.SendNotification();
2939 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
2941 // We did expect the animation to finish
2942 application.SendNotification();
2943 finishCheck.CheckSignalReceived();
2944 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
2948 int UtcDaliAnimationAnimateByBooleanTimePeriodP(void)
2950 TestApplication application;
2952 Actor actor = Actor::New();
2954 // Register a boolean property
2955 bool startValue(false);
2956 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
2957 Stage::GetCurrent().Add(actor);
2958 DALI_TEST_CHECK( actor.GetProperty<bool>(index) == startValue );
2959 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == startValue );
2961 // Build the animation
2962 float durationSeconds(2.0f);
2963 Animation animation = Animation::New(durationSeconds);
2964 bool relativeValue(true);
2965 bool finalValue( false || relativeValue );
2966 float animatorDurationSeconds(durationSeconds * 0.5f);
2967 animation.AnimateBy( Property(actor, index),
2969 TimePeriod( animatorDurationSeconds ) );
2971 // Start the animation
2974 bool signalReceived(false);
2975 AnimationFinishCheck finishCheck(signalReceived);
2976 animation.FinishedSignal().Connect(&application, finishCheck);
2978 application.SendNotification();
2979 application.Render(static_cast<unsigned int>(animatorDurationSeconds*950.0f)/* 95% animator progress */);
2981 // We didn't expect the animation to finish yet
2982 application.SendNotification();
2983 finishCheck.CheckSignalNotReceived();
2984 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == startValue );
2986 application.SendNotification();
2987 application.Render(static_cast<unsigned int>(animatorDurationSeconds*50.0f) + 1u/*just beyond the animator duration*/);
2989 // We didn't expect the animation to finish yet...
2990 application.SendNotification();
2991 finishCheck.CheckSignalNotReceived();
2993 // ...however we should have reached the final value
2994 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
2996 application.SendNotification();
2997 application.Render(static_cast<unsigned int>(animatorDurationSeconds*1000.0f)/*just beyond the animation duration*/);
2999 // We did expect the animation to finish
3000 application.SendNotification();
3001 finishCheck.CheckSignalReceived();
3002 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
3004 // Check that nothing has changed after a couple of buffer swaps
3005 application.Render(0);
3006 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
3007 application.Render(0);
3008 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
3012 int UtcDaliAnimationAnimateByBooleanAlphaFunctionTimePeriodP(void)
3014 TestApplication application;
3016 Actor actor = Actor::New();
3018 // Register a boolean property
3019 bool startValue(false);
3020 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
3021 Stage::GetCurrent().Add(actor);
3022 DALI_TEST_CHECK( actor.GetProperty<bool>(index) == startValue );
3023 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == startValue );
3025 // Build the animation
3026 float durationSeconds(2.0f);
3027 Animation animation = Animation::New(durationSeconds);
3028 bool relativeValue(true);
3029 bool finalValue( false || relativeValue );
3030 float animatorDurationSeconds(durationSeconds * 0.5f);
3031 animation.AnimateBy( Property(actor, index),
3033 AlphaFunction::EASE_IN_OUT,
3034 TimePeriod( animatorDurationSeconds ) );
3036 // Start the animation
3039 bool signalReceived(false);
3040 AnimationFinishCheck finishCheck(signalReceived);
3041 animation.FinishedSignal().Connect(&application, finishCheck);
3043 application.SendNotification();
3044 application.Render(static_cast<unsigned int>(animatorDurationSeconds*950.0f)/* 95% animator progress */);
3046 // We didn't expect the animation to finish yet
3047 application.SendNotification();
3048 finishCheck.CheckSignalNotReceived();
3049 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == startValue );
3051 application.SendNotification();
3052 application.Render(static_cast<unsigned int>(animatorDurationSeconds*50.0f) + 1u/*just beyond the animator duration*/);
3054 // We didn't expect the animation to finish yet...
3055 application.SendNotification();
3056 finishCheck.CheckSignalNotReceived();
3058 // ...however we should have reached the final value
3059 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
3061 application.SendNotification();
3062 application.Render(static_cast<unsigned int>(animatorDurationSeconds*1000.0f)/*just beyond the animation duration*/);
3064 // We did expect the animation to finish
3065 application.SendNotification();
3066 finishCheck.CheckSignalReceived();
3067 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
3069 // Check that nothing has changed after a couple of buffer swaps
3070 application.Render(0);
3071 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
3072 application.Render(0);
3073 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
3077 int UtcDaliAnimationAnimateByFloatP(void)
3079 TestApplication application;
3081 Actor actor = Actor::New();
3083 // Register a float property
3084 float startValue(10.0f);
3085 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
3086 Stage::GetCurrent().Add(actor);
3087 DALI_TEST_EQUALS( actor.GetProperty<float>(index), startValue, TEST_LOCATION );
3088 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), startValue, TEST_LOCATION );
3090 // Build the animation
3091 float durationSeconds(2.0f);
3092 Animation animation = Animation::New(durationSeconds);
3093 float targetValue(50.0f);
3094 float relativeValue(targetValue - startValue);
3095 animation.AnimateBy(Property(actor, index), relativeValue);
3097 float ninetyFivePercentProgress(startValue + relativeValue*0.95f);
3099 // Start the animation
3102 bool signalReceived(false);
3103 AnimationFinishCheck finishCheck(signalReceived);
3104 animation.FinishedSignal().Connect(&application, finishCheck);
3106 application.SendNotification();
3107 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
3109 // We didn't expect the animation to finish yet
3110 application.SendNotification();
3111 finishCheck.CheckSignalNotReceived();
3112 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), ninetyFivePercentProgress, TEST_LOCATION );
3114 application.SendNotification();
3115 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
3117 // We did expect the animation to finish
3118 application.SendNotification();
3119 finishCheck.CheckSignalReceived();
3120 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), targetValue, TEST_LOCATION );
3122 // Check that nothing has changed after a couple of buffer swaps
3123 application.Render(0);
3124 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), targetValue, TEST_LOCATION );
3125 application.Render(0);
3126 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), targetValue, TEST_LOCATION );
3130 int UtcDaliAnimationAnimateByFloatAlphaFunctionP(void)
3132 TestApplication application;
3134 Actor actor = Actor::New();
3136 // Register a float property
3137 float startValue(10.0f);
3138 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
3139 Stage::GetCurrent().Add(actor);
3140 DALI_TEST_EQUALS( actor.GetProperty<float>(index), startValue, TEST_LOCATION );
3141 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), startValue, TEST_LOCATION );
3143 // Build the animation
3144 float durationSeconds(1.0f);
3145 Animation animation = Animation::New(durationSeconds);
3146 float targetValue(90.0f);
3147 float relativeValue(targetValue - startValue);
3148 animation.AnimateBy(Property(actor, index), relativeValue, AlphaFunction::EASE_OUT);
3150 float ninetyFivePercentProgress(startValue + relativeValue*0.95f);
3152 // Start the animation
3155 bool signalReceived(false);
3156 AnimationFinishCheck finishCheck(signalReceived);
3157 animation.FinishedSignal().Connect(&application, finishCheck);
3159 application.SendNotification();
3160 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
3162 // We didn't expect the animation to finish yet
3163 application.SendNotification();
3164 finishCheck.CheckSignalNotReceived();
3166 // The position should have moved more, than with a linear alpha function
3167 float current( DevelHandle::GetCurrentProperty< float >( actor, index ) );
3168 DALI_TEST_CHECK( current > ninetyFivePercentProgress );
3170 application.SendNotification();
3171 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
3173 // We did expect the animation to finish
3174 application.SendNotification();
3175 finishCheck.CheckSignalReceived();
3176 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), targetValue, TEST_LOCATION );
3178 // Check that nothing has changed after a couple of buffer swaps
3179 application.Render(0);
3180 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), targetValue, TEST_LOCATION );
3181 application.Render(0);
3182 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), targetValue, TEST_LOCATION );
3186 int UtcDaliAnimationAnimateByFloatTimePeriodP(void)
3188 TestApplication application;
3190 Actor actor = Actor::New();
3192 // Register a float property
3193 float startValue(10.0f);
3194 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
3195 Stage::GetCurrent().Add(actor);
3196 DALI_TEST_EQUALS( actor.GetProperty<float>(index), startValue, TEST_LOCATION );
3197 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), startValue, TEST_LOCATION );
3199 // Build the animation
3200 float durationSeconds(1.0f);
3201 Animation animation = Animation::New(durationSeconds);
3202 float targetValue(30.0f);
3203 float relativeValue(targetValue - startValue);
3205 animation.AnimateBy(Property(actor, index),
3207 TimePeriod(delay, durationSeconds - delay));
3209 // Start the animation
3212 bool signalReceived(false);
3213 AnimationFinishCheck finishCheck(signalReceived);
3214 animation.FinishedSignal().Connect(&application, finishCheck);
3216 application.SendNotification();
3217 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
3219 // We didn't expect the animation to finish yet
3220 application.SendNotification();
3221 finishCheck.CheckSignalNotReceived();
3222 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), startValue, TEST_LOCATION );
3224 application.SendNotification();
3225 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
3227 // We didn't expect the animation to finish yet
3228 application.SendNotification();
3229 finishCheck.CheckSignalNotReceived();
3230 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), startValue+(relativeValue*0.5f), TEST_LOCATION );
3232 application.SendNotification();
3233 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
3235 // We did expect the animation to finish
3236 application.SendNotification();
3237 finishCheck.CheckSignalReceived();
3238 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), targetValue, TEST_LOCATION );
3240 // Check that nothing has changed after a couple of buffer swaps
3241 application.Render(0);
3242 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), targetValue, TEST_LOCATION );
3243 application.Render(0);
3244 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), targetValue, TEST_LOCATION );
3248 int UtcDaliAnimationAnimateByFloatAlphaFunctionTimePeriodP(void)
3250 TestApplication application;
3252 Actor actor = Actor::New();
3254 // Register a float property
3255 float startValue(10.0f);
3256 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
3257 Stage::GetCurrent().Add(actor);
3258 DALI_TEST_EQUALS( actor.GetProperty<float>(index), startValue, TEST_LOCATION );
3259 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), startValue, TEST_LOCATION );
3261 // Build the animation
3262 float durationSeconds(1.0f);
3263 Animation animation = Animation::New(durationSeconds);
3264 float targetValue(30.0f);
3265 float relativeValue(targetValue - startValue);
3267 animation.AnimateBy(Property(actor, index),
3269 AlphaFunction::LINEAR,
3270 TimePeriod(delay, durationSeconds - delay));
3272 // Start the animation
3275 bool signalReceived(false);
3276 AnimationFinishCheck finishCheck(signalReceived);
3277 animation.FinishedSignal().Connect(&application, finishCheck);
3279 application.SendNotification();
3280 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
3282 // We didn't expect the animation to finish yet
3283 application.SendNotification();
3284 finishCheck.CheckSignalNotReceived();
3285 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), startValue, TEST_LOCATION );
3287 application.SendNotification();
3288 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
3290 // We didn't expect the animation to finish yet
3291 application.SendNotification();
3292 finishCheck.CheckSignalNotReceived();
3293 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), startValue+(relativeValue*0.5f), TEST_LOCATION );
3295 application.SendNotification();
3296 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
3298 // We did expect the animation to finish
3299 application.SendNotification();
3300 finishCheck.CheckSignalReceived();
3301 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), targetValue, TEST_LOCATION );
3303 // Check that nothing has changed after a couple of buffer swaps
3304 application.Render(0);
3305 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), targetValue, TEST_LOCATION );
3306 application.Render(0);
3307 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), targetValue, TEST_LOCATION );
3311 int UtcDaliAnimationAnimateByIntegerP(void)
3313 TestApplication application;
3315 Actor actor = Actor::New();
3317 // Register an integer property
3319 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
3320 Stage::GetCurrent().Add(actor);
3321 DALI_TEST_EQUALS( actor.GetProperty<int>(index), startValue, TEST_LOCATION );
3322 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), startValue, TEST_LOCATION );
3324 // Build the animation
3325 float durationSeconds(2.0f);
3326 Animation animation = Animation::New(durationSeconds);
3327 int targetValue(50);
3328 int relativeValue(targetValue - startValue);
3329 animation.AnimateBy(Property(actor, index), relativeValue);
3331 int ninetyFivePercentProgress(static_cast<int>(startValue + relativeValue*0.95f + 0.5f));
3333 // Start the animation
3336 bool signalReceived(false);
3337 AnimationFinishCheck finishCheck(signalReceived);
3338 animation.FinishedSignal().Connect(&application, finishCheck);
3340 application.SendNotification();
3341 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
3343 // We didn't expect the animation to finish yet
3344 application.SendNotification();
3345 finishCheck.CheckSignalNotReceived();
3346 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), ninetyFivePercentProgress, TEST_LOCATION );
3348 application.SendNotification();
3349 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
3351 // We did expect the animation to finish
3352 application.SendNotification();
3353 finishCheck.CheckSignalReceived();
3354 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), targetValue, TEST_LOCATION );
3356 // Check that nothing has changed after a couple of buffer swaps
3357 application.Render(0);
3358 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), targetValue, TEST_LOCATION );
3359 application.Render(0);
3360 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), targetValue, TEST_LOCATION );
3364 int UtcDaliAnimationAnimateByIntegerAlphaFunctionP(void)
3366 TestApplication application;
3368 Actor actor = Actor::New();
3370 // Register an integer property
3372 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
3373 Stage::GetCurrent().Add(actor);
3374 DALI_TEST_EQUALS( actor.GetProperty<int>(index), startValue, TEST_LOCATION );
3375 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), startValue, TEST_LOCATION );
3377 // Build the animation
3378 float durationSeconds(1.0f);
3379 Animation animation = Animation::New(durationSeconds);
3380 int targetValue(90);
3381 int relativeValue(targetValue - startValue);
3382 animation.AnimateBy(Property(actor, index), relativeValue, AlphaFunction::EASE_OUT);
3384 int ninetyFivePercentProgress(static_cast<int>(startValue + relativeValue*0.95f + 0.5f));
3386 // Start the animation
3389 bool signalReceived(false);
3390 AnimationFinishCheck finishCheck(signalReceived);
3391 animation.FinishedSignal().Connect(&application, finishCheck);
3393 application.SendNotification();
3394 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
3396 // We didn't expect the animation to finish yet
3397 application.SendNotification();
3398 finishCheck.CheckSignalNotReceived();
3400 // The position should have moved more, than with a linear alpha function
3401 int current( DevelHandle::GetCurrentProperty< int >( actor, index ) );
3402 DALI_TEST_CHECK( current > ninetyFivePercentProgress );
3404 application.SendNotification();
3405 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
3407 // We did expect the animation to finish
3408 application.SendNotification();
3409 finishCheck.CheckSignalReceived();
3410 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), targetValue, TEST_LOCATION );
3412 // Check that nothing has changed after a couple of buffer swaps
3413 application.Render(0);
3414 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), targetValue, TEST_LOCATION );
3415 application.Render(0);
3416 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), targetValue, TEST_LOCATION );
3420 int UtcDaliAnimationAnimateByIntegerTimePeriodP(void)
3422 TestApplication application;
3424 Actor actor = Actor::New();
3426 // Register an integer property
3428 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
3429 Stage::GetCurrent().Add(actor);
3430 DALI_TEST_EQUALS( actor.GetProperty<int>(index), startValue, TEST_LOCATION );
3431 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), startValue, TEST_LOCATION );
3433 // Build the animation
3434 float durationSeconds(1.0f);
3435 Animation animation = Animation::New(durationSeconds);
3436 int targetValue(30);
3437 int relativeValue(targetValue - startValue);
3439 animation.AnimateBy(Property(actor, index),
3441 TimePeriod(delay, durationSeconds - delay));
3443 // Start the animation
3446 bool signalReceived(false);
3447 AnimationFinishCheck finishCheck(signalReceived);
3448 animation.FinishedSignal().Connect(&application, finishCheck);
3450 application.SendNotification();
3451 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
3453 // We didn't expect the animation to finish yet
3454 application.SendNotification();
3455 finishCheck.CheckSignalNotReceived();
3456 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), startValue, TEST_LOCATION );
3458 application.SendNotification();
3459 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
3461 // We didn't expect the animation to finish yet
3462 application.SendNotification();
3463 finishCheck.CheckSignalNotReceived();
3464 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), static_cast<int>(startValue+(relativeValue*0.5f)+0.5f), TEST_LOCATION );
3466 application.SendNotification();
3467 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
3469 // We did expect the animation to finish
3470 application.SendNotification();
3471 finishCheck.CheckSignalReceived();
3472 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), targetValue, TEST_LOCATION );
3474 // Check that nothing has changed after a couple of buffer swaps
3475 application.Render(0);
3476 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), targetValue, TEST_LOCATION );
3477 application.Render(0);
3478 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), targetValue, TEST_LOCATION );
3482 int UtcDaliAnimationAnimateByIntegerAlphaFunctionTimePeriodP(void)
3484 TestApplication application;
3486 Actor actor = Actor::New();
3488 // Register an integer property
3490 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
3491 Stage::GetCurrent().Add(actor);
3492 DALI_TEST_EQUALS( actor.GetProperty<int>(index), startValue, TEST_LOCATION );
3493 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), startValue, TEST_LOCATION );
3495 // Build the animation
3496 float durationSeconds(1.0f);
3497 Animation animation = Animation::New(durationSeconds);
3498 int targetValue(30);
3499 int relativeValue(targetValue - startValue);
3501 animation.AnimateBy(Property(actor, index),
3503 AlphaFunction::LINEAR,
3504 TimePeriod(delay, durationSeconds - delay));
3506 // Start the animation
3509 bool signalReceived(false);
3510 AnimationFinishCheck finishCheck(signalReceived);
3511 animation.FinishedSignal().Connect(&application, finishCheck);
3513 application.SendNotification();
3514 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
3516 // We didn't expect the animation to finish yet
3517 application.SendNotification();
3518 finishCheck.CheckSignalNotReceived();
3519 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), startValue, TEST_LOCATION );
3521 application.SendNotification();
3522 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
3524 // We didn't expect the animation to finish yet
3525 application.SendNotification();
3526 finishCheck.CheckSignalNotReceived();
3527 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), static_cast<int>(startValue+(relativeValue*0.5f)+0.5f), TEST_LOCATION );
3529 application.SendNotification();
3530 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
3532 // We did expect the animation to finish
3533 application.SendNotification();
3534 finishCheck.CheckSignalReceived();
3535 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), targetValue, TEST_LOCATION );
3537 // Check that nothing has changed after a couple of buffer swaps
3538 application.Render(0);
3539 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), targetValue, TEST_LOCATION );
3540 application.Render(0);
3541 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), targetValue, TEST_LOCATION );
3545 int UtcDaliAnimationAnimateByVector2P(void)
3547 TestApplication application;
3549 Actor actor = Actor::New();
3551 // Register a Vector2 property
3552 Vector2 startValue(10.0f, 10.0f);
3553 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
3554 Stage::GetCurrent().Add(actor);
3555 DALI_TEST_EQUALS( actor.GetProperty<Vector2>(index), startValue, TEST_LOCATION );
3556 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), startValue, TEST_LOCATION );
3558 // Build the animation
3559 float durationSeconds(2.0f);
3560 Animation animation = Animation::New(durationSeconds);
3561 Vector2 targetValue(60.0f, 60.0f);
3562 Vector2 relativeValue(targetValue - startValue);
3563 animation.AnimateBy(Property(actor, index), relativeValue);
3565 Vector2 ninetyFivePercentProgress(startValue + relativeValue*0.95f);
3567 // Start the animation
3570 bool signalReceived(false);
3571 AnimationFinishCheck finishCheck(signalReceived);
3572 animation.FinishedSignal().Connect(&application, finishCheck);
3574 application.SendNotification();
3575 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
3577 // We didn't expect the animation to finish yet
3578 application.SendNotification();
3579 finishCheck.CheckSignalNotReceived();
3580 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), ninetyFivePercentProgress, TEST_LOCATION );
3582 application.SendNotification();
3583 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
3585 // We did expect the animation to finish
3586 application.SendNotification();
3587 finishCheck.CheckSignalReceived();
3588 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), targetValue, TEST_LOCATION );
3590 // Check that nothing has changed after a couple of buffer swaps
3591 application.Render(0);
3592 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), targetValue, TEST_LOCATION );
3593 application.Render(0);
3594 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), targetValue, TEST_LOCATION );
3598 int UtcDaliAnimationAnimateByVector2AlphaFunctionP(void)
3600 TestApplication application;
3602 Actor actor = Actor::New();
3604 // Register a Vector2 property
3605 Vector2 startValue(100.0f, 100.0f);
3606 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
3607 Stage::GetCurrent().Add(actor);
3608 DALI_TEST_EQUALS( actor.GetProperty<Vector2>(index), startValue, TEST_LOCATION );
3609 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), startValue, TEST_LOCATION );
3611 // Build the animation
3612 float durationSeconds(1.0f);
3613 Animation animation = Animation::New(durationSeconds);
3614 Vector2 targetValue(20.0f, 20.0f);
3615 Vector2 relativeValue(targetValue - startValue);
3616 animation.AnimateBy(Property(actor, index), relativeValue, AlphaFunction::EASE_OUT);
3618 Vector2 ninetyFivePercentProgress(startValue + relativeValue*0.95f);
3620 // Start the animation
3623 bool signalReceived(false);
3624 AnimationFinishCheck finishCheck(signalReceived);
3625 animation.FinishedSignal().Connect(&application, finishCheck);
3627 application.SendNotification();
3628 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
3630 // We didn't expect the animation to finish yet
3631 application.SendNotification();
3632 finishCheck.CheckSignalNotReceived();
3634 // The position should have moved more, than with a linear alpha function
3635 Vector2 current( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ) );
3636 DALI_TEST_CHECK( current.x < ninetyFivePercentProgress.x );
3637 DALI_TEST_CHECK( current.y < ninetyFivePercentProgress.y );
3639 application.SendNotification();
3640 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
3642 // We did expect the animation to finish
3643 application.SendNotification();
3644 finishCheck.CheckSignalReceived();
3645 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), targetValue, TEST_LOCATION );
3647 // Check that nothing has changed after a couple of buffer swaps
3648 application.Render(0);
3649 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), targetValue, TEST_LOCATION );
3650 application.Render(0);
3651 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), targetValue, TEST_LOCATION );
3655 int UtcDaliAnimationAnimateByVector2TimePeriodP(void)
3657 TestApplication application;
3659 Actor actor = Actor::New();
3661 // Register a Vector2 property
3662 Vector2 startValue(10.0f, 10.0f);
3663 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
3664 Stage::GetCurrent().Add(actor);
3665 DALI_TEST_EQUALS( actor.GetProperty<Vector2>(index), startValue, TEST_LOCATION );
3666 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), startValue, TEST_LOCATION );
3668 // Build the animation
3669 float durationSeconds(1.0f);
3670 Animation animation = Animation::New(durationSeconds);
3671 Vector2 targetValue(30.0f, 30.0f);
3672 Vector2 relativeValue(targetValue - startValue);
3674 animation.AnimateBy(Property(actor, index),
3676 TimePeriod(delay, durationSeconds - delay));
3678 // Start the animation
3681 bool signalReceived(false);
3682 AnimationFinishCheck finishCheck(signalReceived);
3683 animation.FinishedSignal().Connect(&application, finishCheck);
3685 application.SendNotification();
3686 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
3688 // We didn't expect the animation to finish yet
3689 application.SendNotification();
3690 finishCheck.CheckSignalNotReceived();
3691 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), startValue, TEST_LOCATION );
3693 application.SendNotification();
3694 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
3696 // We didn't expect the animation to finish yet
3697 application.SendNotification();
3698 finishCheck.CheckSignalNotReceived();
3699 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), startValue+(relativeValue*0.5f), TEST_LOCATION );
3701 application.SendNotification();
3702 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
3704 // We did expect the animation to finish
3705 application.SendNotification();
3706 finishCheck.CheckSignalReceived();
3707 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), targetValue, TEST_LOCATION );
3709 // Check that nothing has changed after a couple of buffer swaps
3710 application.Render(0);
3711 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), targetValue, TEST_LOCATION );
3712 application.Render(0);
3713 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), targetValue, TEST_LOCATION );
3717 int UtcDaliAnimationAnimateByVector2AlphaFunctionTimePeriodP(void)
3719 TestApplication application;
3721 Actor actor = Actor::New();
3723 // Register a Vector2 property
3724 Vector2 startValue(5.0f, 5.0f);
3725 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
3726 Stage::GetCurrent().Add(actor);
3727 DALI_TEST_EQUALS( actor.GetProperty<Vector2>(index), startValue, TEST_LOCATION );
3728 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), startValue, TEST_LOCATION );
3730 // Build the animation
3731 float durationSeconds(1.0f);
3732 Animation animation = Animation::New(durationSeconds);
3733 Vector2 targetValue(10.0f, 10.0f);
3734 Vector2 relativeValue(targetValue - startValue);
3736 animation.AnimateBy(Property(actor, index),
3738 AlphaFunction::LINEAR,
3739 TimePeriod(delay, durationSeconds - delay));
3741 // Start the animation
3744 bool signalReceived(false);
3745 AnimationFinishCheck finishCheck(signalReceived);
3746 animation.FinishedSignal().Connect(&application, finishCheck);
3748 application.SendNotification();
3749 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
3751 // We didn't expect the animation to finish yet
3752 application.SendNotification();
3753 finishCheck.CheckSignalNotReceived();
3754 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), startValue, TEST_LOCATION );
3756 application.SendNotification();
3757 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
3759 // We didn't expect the animation to finish yet
3760 application.SendNotification();
3761 finishCheck.CheckSignalNotReceived();
3762 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), startValue+(relativeValue*0.5f), TEST_LOCATION );
3764 application.SendNotification();
3765 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
3767 // We did expect the animation to finish
3768 application.SendNotification();
3769 finishCheck.CheckSignalReceived();
3770 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), targetValue, TEST_LOCATION );
3772 // Check that nothing has changed after a couple of buffer swaps
3773 application.Render(0);
3774 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), targetValue, TEST_LOCATION );
3775 application.Render(0);
3776 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), targetValue, TEST_LOCATION );
3780 int UtcDaliAnimationAnimateByVector3P(void)
3782 TestApplication application;
3784 Actor actor = Actor::New();
3786 // Register a Vector3 property
3787 Vector3 startValue(10.0f, 10.0f, 10.0f);
3788 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
3789 Stage::GetCurrent().Add(actor);
3790 DALI_TEST_EQUALS( actor.GetProperty<Vector3>(index), startValue, TEST_LOCATION );
3791 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), startValue, TEST_LOCATION );
3793 // Build the animation
3794 float durationSeconds(2.0f);
3795 Animation animation = Animation::New(durationSeconds);
3796 Vector3 targetValue(60.0f, 60.0f, 60.0f);
3797 Vector3 relativeValue(targetValue - startValue);
3798 animation.AnimateBy(Property(actor, index), relativeValue);
3800 Vector3 ninetyFivePercentProgress(startValue + relativeValue*0.95f);
3802 // Start the animation
3805 bool signalReceived(false);
3806 AnimationFinishCheck finishCheck(signalReceived);
3807 animation.FinishedSignal().Connect(&application, finishCheck);
3809 application.SendNotification();
3810 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
3812 // We didn't expect the animation to finish yet
3813 application.SendNotification();
3814 finishCheck.CheckSignalNotReceived();
3815 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), ninetyFivePercentProgress, TEST_LOCATION );
3817 application.SendNotification();
3818 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
3820 // We did expect the animation to finish
3821 application.SendNotification();
3822 finishCheck.CheckSignalReceived();
3823 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), targetValue, TEST_LOCATION );
3825 // Check that nothing has changed after a couple of buffer swaps
3826 application.Render(0);
3827 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), targetValue, TEST_LOCATION );
3828 application.Render(0);
3829 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), targetValue, TEST_LOCATION );
3833 int UtcDaliAnimationAnimateByVector3AlphaFunctionP(void)
3835 TestApplication application;
3837 Actor actor = Actor::New();
3839 // Register a Vector3 property
3840 Vector3 startValue(100.0f, 100.0f, 100.0f);
3841 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
3842 Stage::GetCurrent().Add(actor);
3843 DALI_TEST_EQUALS( actor.GetProperty<Vector3>(index), startValue, TEST_LOCATION );
3844 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), startValue, TEST_LOCATION );
3846 // Build the animation
3847 float durationSeconds(1.0f);
3848 Animation animation = Animation::New(durationSeconds);
3849 Vector3 targetValue(20.0f, 20.0f, 20.0f);
3850 Vector3 relativeValue(targetValue - startValue);
3851 animation.AnimateBy(Property(actor, index), relativeValue, AlphaFunction::EASE_OUT);
3853 Vector3 ninetyFivePercentProgress(startValue + relativeValue*0.95f);
3855 // Start the animation
3858 bool signalReceived(false);
3859 AnimationFinishCheck finishCheck(signalReceived);
3860 animation.FinishedSignal().Connect(&application, finishCheck);
3862 application.SendNotification();
3863 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
3865 // We didn't expect the animation to finish yet
3866 application.SendNotification();
3867 finishCheck.CheckSignalNotReceived();
3869 // The position should have moved more, than with a linear alpha function
3870 Vector3 current(DevelHandle::GetCurrentProperty< Vector3 >( actor, index ));
3871 DALI_TEST_CHECK( current.x < ninetyFivePercentProgress.x );
3872 DALI_TEST_CHECK( current.y < ninetyFivePercentProgress.y );
3873 DALI_TEST_CHECK( current.z < ninetyFivePercentProgress.z );
3875 application.SendNotification();
3876 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
3878 // We did expect the animation to finish
3879 application.SendNotification();
3880 finishCheck.CheckSignalReceived();
3881 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), targetValue, TEST_LOCATION );
3883 // Check that nothing has changed after a couple of buffer swaps
3884 application.Render(0);
3885 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), targetValue, TEST_LOCATION );
3886 application.Render(0);
3887 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), targetValue, TEST_LOCATION );
3891 int UtcDaliAnimationAnimateByVector3TimePeriodP(void)
3893 TestApplication application;
3895 Actor actor = Actor::New();
3897 // Register a Vector3 property
3898 Vector3 startValue(10.0f, 10.0f, 10.0f);
3899 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
3900 Stage::GetCurrent().Add(actor);
3901 DALI_TEST_EQUALS( actor.GetProperty<Vector3>(index), startValue, TEST_LOCATION );
3902 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), startValue, TEST_LOCATION );
3904 // Build the animation
3905 float durationSeconds(1.0f);
3906 Animation animation = Animation::New(durationSeconds);
3907 Vector3 targetValue(30.0f, 30.0f, 30.0f);
3908 Vector3 relativeValue(targetValue - startValue);
3910 animation.AnimateBy(Property(actor, index),
3912 TimePeriod(delay, durationSeconds - delay));
3914 // Start the animation
3917 bool signalReceived(false);
3918 AnimationFinishCheck finishCheck(signalReceived);
3919 animation.FinishedSignal().Connect(&application, finishCheck);
3921 application.SendNotification();
3922 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
3924 // We didn't expect the animation to finish yet
3925 application.SendNotification();
3926 finishCheck.CheckSignalNotReceived();
3927 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), startValue, TEST_LOCATION );
3929 application.SendNotification();
3930 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
3932 // We didn't expect the animation to finish yet
3933 application.SendNotification();
3934 finishCheck.CheckSignalNotReceived();
3935 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), startValue+(relativeValue*0.5f), TEST_LOCATION );
3937 application.SendNotification();
3938 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
3940 // We did expect the animation to finish
3941 application.SendNotification();
3942 finishCheck.CheckSignalReceived();
3943 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), targetValue, TEST_LOCATION );
3945 // Check that nothing has changed after a couple of buffer swaps
3946 application.Render(0);
3947 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), targetValue, TEST_LOCATION );
3948 application.Render(0);
3949 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), targetValue, TEST_LOCATION );
3953 int UtcDaliAnimationAnimateByVector3AlphaFunctionTimePeriodP(void)
3955 TestApplication application;
3957 Actor actor = Actor::New();
3959 // Register a Vector3 property
3960 Vector3 startValue(5.0f, 5.0f, 5.0f);
3961 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
3962 Stage::GetCurrent().Add(actor);
3963 DALI_TEST_EQUALS( actor.GetProperty<Vector3>(index), startValue, TEST_LOCATION );
3964 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), startValue, TEST_LOCATION );
3966 // Build the animation
3967 float durationSeconds(1.0f);
3968 Animation animation = Animation::New(durationSeconds);
3969 Vector3 targetValue(10.0f, 10.0f, 10.0f);
3970 Vector3 relativeValue(targetValue - startValue);
3972 animation.AnimateBy(Property(actor, index),
3974 AlphaFunction::LINEAR,
3975 TimePeriod(delay, durationSeconds - delay));
3977 // Start the animation
3980 bool signalReceived(false);
3981 AnimationFinishCheck finishCheck(signalReceived);
3982 animation.FinishedSignal().Connect(&application, finishCheck);
3984 application.SendNotification();
3985 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
3987 // We didn't expect the animation to finish yet
3988 application.SendNotification();
3989 finishCheck.CheckSignalNotReceived();
3990 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), startValue, TEST_LOCATION );
3992 application.SendNotification();
3993 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
3995 // We didn't expect the animation to finish yet
3996 application.SendNotification();
3997 finishCheck.CheckSignalNotReceived();
3998 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), startValue+(relativeValue*0.5f), TEST_LOCATION );
4000 application.SendNotification();
4001 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
4003 // We did expect the animation to finish
4004 application.SendNotification();
4005 finishCheck.CheckSignalReceived();
4006 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), targetValue, TEST_LOCATION );
4008 // Check that nothing has changed after a couple of buffer swaps
4009 application.Render(0);
4010 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), targetValue, TEST_LOCATION );
4011 application.Render(0);
4012 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), targetValue, TEST_LOCATION );
4016 int UtcDaliAnimationAnimateByVector4P(void)
4018 TestApplication application;
4020 Actor actor = Actor::New();
4022 // Register a Vector4 property
4023 Vector4 startValue(10.0f, 10.0f, 10.0f, 10.0f);
4024 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
4025 Stage::GetCurrent().Add(actor);
4026 DALI_TEST_EQUALS( actor.GetProperty<Vector4>(index), startValue, TEST_LOCATION );
4027 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), startValue, TEST_LOCATION );
4029 // Build the animation
4030 float durationSeconds(2.0f);
4031 Animation animation = Animation::New(durationSeconds);
4032 Vector4 targetValue(60.0f, 60.0f, 60.0f, 60.0f);
4033 Vector4 relativeValue(targetValue - startValue);
4034 animation.AnimateBy(Property(actor, index), relativeValue);
4036 Vector4 ninetyFivePercentProgress(startValue + relativeValue*0.95f);
4038 // Start the animation
4041 bool signalReceived(false);
4042 AnimationFinishCheck finishCheck(signalReceived);
4043 animation.FinishedSignal().Connect(&application, finishCheck);
4045 application.SendNotification();
4046 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
4048 // We didn't expect the animation to finish yet
4049 application.SendNotification();
4050 finishCheck.CheckSignalNotReceived();
4051 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), ninetyFivePercentProgress, TEST_LOCATION );
4053 application.SendNotification();
4054 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
4056 // We did expect the animation to finish
4057 application.SendNotification();
4058 finishCheck.CheckSignalReceived();
4059 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), targetValue, TEST_LOCATION );
4061 // Check that nothing has changed after a couple of buffer swaps
4062 application.Render(0);
4063 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), targetValue, TEST_LOCATION );
4064 application.Render(0);
4065 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), targetValue, TEST_LOCATION );
4069 int UtcDaliAnimationAnimateByVector4AlphaFunctionP(void)
4071 TestApplication application;
4073 Actor actor = Actor::New();
4075 // Register a Vector4 property
4076 Vector4 startValue(100.0f, 100.0f, 100.0f, 100.0f);
4077 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
4078 Stage::GetCurrent().Add(actor);
4079 DALI_TEST_EQUALS( actor.GetProperty<Vector4>(index), startValue, TEST_LOCATION );
4080 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), startValue, TEST_LOCATION );
4082 // Build the animation
4083 float durationSeconds(1.0f);
4084 Animation animation = Animation::New(durationSeconds);
4085 Vector4 targetValue(20.0f, 20.0f, 20.0f, 20.0f);
4086 Vector4 relativeValue(targetValue - startValue);
4087 animation.AnimateBy(Property(actor, index), relativeValue, AlphaFunction::EASE_OUT);
4089 Vector4 ninetyFivePercentProgress(startValue + relativeValue*0.95f);
4091 // Start the animation
4094 bool signalReceived(false);
4095 AnimationFinishCheck finishCheck(signalReceived);
4096 animation.FinishedSignal().Connect(&application, finishCheck);
4098 application.SendNotification();
4099 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
4101 // We didn't expect the animation to finish yet
4102 application.SendNotification();
4103 finishCheck.CheckSignalNotReceived();
4105 // The position should have moved more, than with a linear alpha function
4106 Vector4 current( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ) );
4107 DALI_TEST_CHECK( current.x < ninetyFivePercentProgress.x );
4108 DALI_TEST_CHECK( current.y < ninetyFivePercentProgress.y );
4109 DALI_TEST_CHECK( current.z < ninetyFivePercentProgress.z );
4110 DALI_TEST_CHECK( current.w < ninetyFivePercentProgress.w );
4112 application.SendNotification();
4113 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
4115 // We did expect the animation to finish
4116 application.SendNotification();
4117 finishCheck.CheckSignalReceived();
4118 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), targetValue, TEST_LOCATION );
4120 // Check that nothing has changed after a couple of buffer swaps
4121 application.Render(0);
4122 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), targetValue, TEST_LOCATION );
4123 application.Render(0);
4124 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), targetValue, TEST_LOCATION );
4128 int UtcDaliAnimationAnimateByVector4TimePeriodP(void)
4130 TestApplication application;
4132 Actor actor = Actor::New();
4134 // Register a Vector4 property
4135 Vector4 startValue(10.0f, 10.0f, 10.0f, 10.0f);
4136 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
4137 Stage::GetCurrent().Add(actor);
4138 DALI_TEST_EQUALS( actor.GetProperty<Vector4>(index), startValue, TEST_LOCATION );
4139 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), startValue, TEST_LOCATION );
4141 // Build the animation
4142 float durationSeconds(1.0f);
4143 Animation animation = Animation::New(durationSeconds);
4144 Vector4 targetValue(30.0f, 30.0f, 30.0f, 30.0f);
4145 Vector4 relativeValue(targetValue - startValue);
4147 animation.AnimateBy(Property(actor, index),
4149 TimePeriod(delay, durationSeconds - delay));
4151 // Start the animation
4154 bool signalReceived(false);
4155 AnimationFinishCheck finishCheck(signalReceived);
4156 animation.FinishedSignal().Connect(&application, finishCheck);
4158 application.SendNotification();
4159 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
4161 // We didn't expect the animation to finish yet
4162 application.SendNotification();
4163 finishCheck.CheckSignalNotReceived();
4164 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), startValue, TEST_LOCATION );
4166 application.SendNotification();
4167 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
4169 // We didn't expect the animation to finish yet
4170 application.SendNotification();
4171 finishCheck.CheckSignalNotReceived();
4172 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), startValue+(relativeValue*0.5f), TEST_LOCATION );
4174 application.SendNotification();
4175 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
4177 // We did expect the animation to finish
4178 application.SendNotification();
4179 finishCheck.CheckSignalReceived();
4180 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), targetValue, TEST_LOCATION );
4182 // Check that nothing has changed after a couple of buffer swaps
4183 application.Render(0);
4184 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), targetValue, TEST_LOCATION );
4185 application.Render(0);
4186 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), targetValue, TEST_LOCATION );
4190 int UtcDaliAnimationAnimateByVector4AlphaFunctionTimePeriodP(void)
4192 TestApplication application;
4194 Actor actor = Actor::New();
4196 // Register a Vector4 property
4197 Vector4 startValue(5.0f, 5.0f, 5.0f, 5.0f);
4198 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
4199 Stage::GetCurrent().Add(actor);
4200 DALI_TEST_EQUALS( actor.GetProperty<Vector4>(index), startValue, TEST_LOCATION );
4201 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), startValue, TEST_LOCATION );
4203 // Build the animation
4204 float durationSeconds(1.0f);
4205 Animation animation = Animation::New(durationSeconds);
4206 Vector4 targetValue(10.0f, 10.0f, 10.0f, 10.0f);
4207 Vector4 relativeValue(targetValue - startValue);
4209 animation.AnimateBy(Property(actor, index),
4211 AlphaFunction::LINEAR,
4212 TimePeriod(delay, durationSeconds - delay));
4214 // Start the animation
4217 bool signalReceived(false);
4218 AnimationFinishCheck finishCheck(signalReceived);
4219 animation.FinishedSignal().Connect(&application, finishCheck);
4221 application.SendNotification();
4222 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
4224 // We didn't expect the animation to finish yet
4225 application.SendNotification();
4226 finishCheck.CheckSignalNotReceived();
4227 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), startValue, TEST_LOCATION );
4229 application.SendNotification();
4230 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
4232 // We didn't expect the animation to finish yet
4233 application.SendNotification();
4234 finishCheck.CheckSignalNotReceived();
4235 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), startValue+(relativeValue*0.5f), TEST_LOCATION );
4237 application.SendNotification();
4238 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
4240 // We did expect the animation to finish
4241 application.SendNotification();
4242 finishCheck.CheckSignalReceived();
4243 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), targetValue, TEST_LOCATION );
4245 // Check that nothing has changed after a couple of buffer swaps
4246 application.Render(0);
4247 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), targetValue, TEST_LOCATION );
4248 application.Render(0);
4249 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), targetValue, TEST_LOCATION );
4253 int UtcDaliAnimationAnimateByActorPositionP(void)
4255 TestApplication application;
4257 Actor actor = Actor::New();
4258 Vector3 startPosition(10.0f, 10.0f, 10.0f);
4259 actor.SetPosition(startPosition);
4260 Stage::GetCurrent().Add(actor);
4261 application.SendNotification();
4262 application.Render(0);
4263 DALI_TEST_EQUALS( actor.GetCurrentPosition(), startPosition, TEST_LOCATION );
4265 // Build the animation
4266 float durationSeconds(1.0f);
4267 Animation animation = Animation::New(durationSeconds);
4268 Vector3 targetPosition(20.0f, 20.0f, 20.0f);
4269 Vector3 relativePosition(targetPosition - startPosition);
4270 animation.AnimateBy(Property(actor, Actor::Property::POSITION), relativePosition);
4272 Vector3 ninetyFivePercentProgress(startPosition + relativePosition*0.95f);
4274 // Start the animation
4277 bool signalReceived(false);
4278 AnimationFinishCheck finishCheck(signalReceived);
4279 animation.FinishedSignal().Connect(&application, finishCheck);
4281 application.SendNotification();
4282 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
4284 // We didn't expect the animation to finish yet
4285 application.SendNotification();
4286 finishCheck.CheckSignalNotReceived();
4287 DALI_TEST_EQUALS( actor.GetCurrentPosition(), ninetyFivePercentProgress, TEST_LOCATION );
4289 application.SendNotification();
4290 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
4292 // We did expect the animation to finish
4293 application.SendNotification();
4294 finishCheck.CheckSignalReceived();
4295 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
4297 // Check that nothing has changed after a couple of buffer swaps
4298 application.Render(0);
4299 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
4300 application.Render(0);
4301 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
4305 int UtcDaliAnimationAnimateByActorPositionAlphaFunctionP(void)
4307 TestApplication application;
4309 Actor actor = Actor::New();
4310 Vector3 startPosition(10.0f, 10.0f, 10.0f);
4311 actor.SetPosition(startPosition);
4312 Stage::GetCurrent().Add(actor);
4313 application.SendNotification();
4314 application.Render(0);
4315 DALI_TEST_EQUALS( actor.GetCurrentPosition(), startPosition, TEST_LOCATION );
4317 // Build the animation
4318 float durationSeconds(1.0f);
4319 Animation animation = Animation::New(durationSeconds);
4320 Vector3 targetPosition(20.0f, 20.0f, 20.0f);
4321 Vector3 relativePosition(targetPosition - startPosition);
4322 animation.AnimateBy(Property(actor, Actor::Property::POSITION), relativePosition, AlphaFunction::EASE_OUT);
4324 Vector3 ninetyFivePercentProgress(startPosition + relativePosition*0.95f);
4326 // Start the animation
4329 bool signalReceived(false);
4330 AnimationFinishCheck finishCheck(signalReceived);
4331 animation.FinishedSignal().Connect(&application, finishCheck);
4333 application.SendNotification();
4334 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
4336 // We didn't expect the animation to finish yet
4337 application.SendNotification();
4338 finishCheck.CheckSignalNotReceived();
4340 // The position should have moved more, than with a linear alpha function
4341 Vector3 current(actor.GetCurrentPosition());
4342 DALI_TEST_CHECK( current.x > ninetyFivePercentProgress.x );
4343 DALI_TEST_CHECK( current.y > ninetyFivePercentProgress.y );
4344 DALI_TEST_CHECK( current.z > ninetyFivePercentProgress.z );
4346 application.SendNotification();
4347 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
4349 // We did expect the animation to finish
4350 application.SendNotification();
4351 finishCheck.CheckSignalReceived();
4352 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
4354 // Check that nothing has changed after a couple of buffer swaps
4355 application.Render(0);
4356 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
4357 application.Render(0);
4358 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
4362 int UtcDaliAnimationAnimateByActorPositionTimePeriodP(void)
4364 TestApplication application;
4366 Actor actor = Actor::New();
4367 Vector3 startPosition(10.0f, 10.0f, 10.0f);
4368 actor.SetPosition(startPosition);
4369 Stage::GetCurrent().Add(actor);
4370 application.SendNotification();
4371 application.Render(0);
4372 DALI_TEST_EQUALS( actor.GetCurrentPosition(), startPosition, TEST_LOCATION );
4374 // Build the animation
4375 float durationSeconds(1.0f);
4376 Animation animation = Animation::New(durationSeconds);
4377 Vector3 targetPosition(20.0f, 20.0f, 20.0f);
4378 Vector3 relativePosition(targetPosition - startPosition);
4380 animation.AnimateBy(Property(actor, Actor::Property::POSITION),
4382 TimePeriod(delay, durationSeconds - delay));
4384 Vector3 ninetyFivePercentProgress(startPosition + relativePosition*0.95f);
4386 // Start the animation
4389 bool signalReceived(false);
4390 AnimationFinishCheck finishCheck(signalReceived);
4391 animation.FinishedSignal().Connect(&application, finishCheck);
4393 application.SendNotification();
4394 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
4396 // We didn't expect the animation to finish yet
4397 application.SendNotification();
4398 finishCheck.CheckSignalNotReceived();
4399 DALI_TEST_EQUALS( actor.GetCurrentPosition(), startPosition, TEST_LOCATION );
4401 application.SendNotification();
4402 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
4404 // We did expect the animation to finish
4405 application.SendNotification();
4406 finishCheck.CheckSignalReceived();
4407 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
4409 // Check that nothing has changed after a couple of buffer swaps
4410 application.Render(0);
4411 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
4412 application.Render(0);
4413 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
4417 int UtcDaliAnimationAnimateByActorPositionAlphaFunctionTimePeriodP(void)
4419 TestApplication application;
4421 Actor actor = Actor::New();
4422 Vector3 startPosition(10.0f, 10.0f, 10.0f);
4423 actor.SetPosition(startPosition);
4424 Stage::GetCurrent().Add(actor);
4425 application.SendNotification();
4426 application.Render(0);
4427 DALI_TEST_EQUALS( actor.GetCurrentPosition(), startPosition, TEST_LOCATION );
4429 // Build the animation
4430 float durationSeconds(1.0f);
4431 Animation animation = Animation::New(durationSeconds);
4432 Vector3 targetPosition(20.0f, 20.0f, 20.0f);
4433 Vector3 relativePosition(targetPosition - startPosition);
4435 animation.AnimateBy(Property(actor, Actor::Property::POSITION),
4437 AlphaFunction::LINEAR,
4438 TimePeriod(delay, durationSeconds - delay));
4440 Vector3 ninetyFivePercentProgress(startPosition + relativePosition*0.95f);
4442 // Start the animation
4445 bool signalReceived(false);
4446 AnimationFinishCheck finishCheck(signalReceived);
4447 animation.FinishedSignal().Connect(&application, finishCheck);
4449 application.SendNotification();
4450 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
4452 // We didn't expect the animation to finish yet
4453 application.SendNotification();
4454 finishCheck.CheckSignalNotReceived();
4455 DALI_TEST_EQUALS( actor.GetCurrentPosition(), startPosition, TEST_LOCATION );
4457 application.SendNotification();
4458 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
4460 // We did expect the animation to finish
4461 application.SendNotification();
4462 finishCheck.CheckSignalReceived();
4463 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
4465 // Check that nothing has changed after a couple of buffer swaps
4466 application.Render(0);
4467 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
4468 application.Render(0);
4469 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
4473 int UtcDaliAnimationAnimateByActorOrientationP1(void)
4475 TestApplication application;
4477 Actor actor = Actor::New();
4478 actor.SetOrientation( Quaternion( Dali::ANGLE_0, Vector3::YAXIS ) );
4479 Stage::GetCurrent().Add(actor);
4480 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS ), ROTATION_EPSILON, TEST_LOCATION );
4482 // Build the animation
4483 float durationSeconds(1.0f);
4484 Animation animation = Animation::New(durationSeconds);
4485 Degree relativeRotationDegrees(360.0f);
4486 Radian relativeRotationRadians(relativeRotationDegrees);
4487 animation.AnimateBy( Property( actor, Actor::Property::ORIENTATION ), Quaternion( relativeRotationRadians, Vector3::YAXIS ) );
4489 // Start the animation
4492 bool signalReceived(false);
4493 AnimationFinishCheck finishCheck(signalReceived);
4494 animation.FinishedSignal().Connect(&application, finishCheck);
4496 application.SendNotification();
4497 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 25% progress */);
4499 // We didn't expect the animation to finish yet
4500 application.SendNotification();
4501 finishCheck.CheckSignalNotReceived();
4502 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(relativeRotationRadians * 0.25f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
4504 application.SendNotification();
4505 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 50% progress */);
4507 // We didn't expect the animation to finish yet
4508 application.SendNotification();
4509 finishCheck.CheckSignalNotReceived();
4510 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(relativeRotationRadians * 0.5f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
4512 application.SendNotification();
4513 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% progress */);
4515 // We didn't expect the animation to finish yet
4516 application.SendNotification();
4517 finishCheck.CheckSignalNotReceived();
4518 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(relativeRotationRadians * 0.75f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
4520 application.SendNotification();
4521 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
4523 // We did expect the animation to finish
4524 application.SendNotification();
4525 finishCheck.CheckSignalReceived();
4526 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(relativeRotationRadians, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
4530 int UtcDaliAnimationAnimateByActorOrientationP2(void)
4532 TestApplication application;
4534 tet_printf("Testing that rotation angle > 360 performs full rotations\n");
4536 Actor actor = Actor::New();
4537 actor.SetOrientation( Quaternion( Dali::ANGLE_0, Vector3::ZAXIS ) );
4538 Stage::GetCurrent().Add(actor);
4539 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZAXIS ), ROTATION_EPSILON, TEST_LOCATION );
4541 // Build the animation
4542 float durationSeconds(1.0f);
4543 Animation animation = Animation::New(durationSeconds);
4544 Degree relativeRotationDegrees(710.0f);
4545 Radian relativeRotationRadians(relativeRotationDegrees);
4547 animation.AnimateBy( Property( actor, Actor::Property::ORIENTATION ), AngleAxis( relativeRotationRadians, Vector3::ZAXIS ) );
4549 // Start the animation
4552 bool signalReceived(false);
4553 AnimationFinishCheck finishCheck(signalReceived);
4554 animation.FinishedSignal().Connect(&application, finishCheck);
4556 application.SendNotification();
4557 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 25% progress */);
4559 // We didn't expect the animation to finish yet
4560 application.SendNotification();
4561 finishCheck.CheckSignalNotReceived();
4562 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(relativeRotationRadians * 0.25f, Vector3::ZAXIS), ROTATION_EPSILON, TEST_LOCATION );
4564 application.SendNotification();
4565 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 50% progress */);
4567 // We didn't expect the animation to finish yet
4568 application.SendNotification();
4569 finishCheck.CheckSignalNotReceived();
4570 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(relativeRotationRadians * 0.5f, Vector3::ZAXIS), ROTATION_EPSILON, TEST_LOCATION );
4572 application.SendNotification();
4573 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% progress */);
4575 // We didn't expect the animation to finish yet
4576 application.SendNotification();
4577 finishCheck.CheckSignalNotReceived();
4578 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(relativeRotationRadians * 0.75f, Vector3::ZAXIS), ROTATION_EPSILON, TEST_LOCATION );
4580 application.SendNotification();
4581 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
4583 // We did expect the animation to finish
4584 application.SendNotification();
4585 finishCheck.CheckSignalReceived();
4586 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(relativeRotationRadians, Vector3::ZAXIS), ROTATION_EPSILON, TEST_LOCATION );
4591 int UtcDaliAnimationAnimateByActorOrientationP3(void)
4593 TestApplication application;
4595 tet_printf("Testing that rotation angle > 360 performs partial rotations when cast to Quaternion\n");
4597 Actor actor = Actor::New();
4598 actor.SetOrientation( Quaternion( Dali::ANGLE_0, Vector3::ZAXIS ) );
4599 Stage::GetCurrent().Add(actor);
4600 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZAXIS ), ROTATION_EPSILON, TEST_LOCATION );
4602 // Build the animation
4603 float durationSeconds(1.0f);
4604 Animation animation = Animation::New(durationSeconds);
4605 Degree relativeRotationDegrees(730.0f);
4606 Radian relativeRotationRadians(relativeRotationDegrees);
4608 Radian actualRotationRadians( Degree(10.0f) );
4610 animation.AnimateBy( Property( actor, Actor::Property::ORIENTATION ), Quaternion( relativeRotationRadians, Vector3::ZAXIS ) );
4612 // Start the animation
4615 bool signalReceived(false);
4616 AnimationFinishCheck finishCheck(signalReceived);
4617 animation.FinishedSignal().Connect(&application, finishCheck);
4619 application.SendNotification();
4620 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 25% progress */);
4622 // We didn't expect the animation to finish yet
4623 application.SendNotification();
4624 finishCheck.CheckSignalNotReceived();
4625 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(actualRotationRadians * 0.25f, Vector3::ZAXIS), ROTATION_EPSILON, TEST_LOCATION );
4627 application.SendNotification();
4628 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 50% progress */);
4630 // We didn't expect the animation to finish yet
4631 application.SendNotification();
4632 finishCheck.CheckSignalNotReceived();
4633 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(actualRotationRadians * 0.5f, Vector3::ZAXIS), ROTATION_EPSILON, TEST_LOCATION );
4635 application.SendNotification();
4636 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% progress */);
4638 // We didn't expect the animation to finish yet
4639 application.SendNotification();
4640 finishCheck.CheckSignalNotReceived();
4641 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(actualRotationRadians * 0.75f, Vector3::ZAXIS), ROTATION_EPSILON, TEST_LOCATION );
4643 application.SendNotification();
4644 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
4646 // We did expect the animation to finish
4647 application.SendNotification();
4648 finishCheck.CheckSignalReceived();
4649 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(actualRotationRadians, Vector3::ZAXIS), ROTATION_EPSILON, TEST_LOCATION );
4650 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(relativeRotationRadians, Vector3::ZAXIS), ROTATION_EPSILON, TEST_LOCATION );
4655 int UtcDaliAnimationAnimateByActorOrientationAlphaFunctionP(void)
4657 TestApplication application;
4659 Actor actor = Actor::New();
4660 actor.SetOrientation( Quaternion( Dali::ANGLE_0, Vector3::YAXIS ) );
4661 Stage::GetCurrent().Add(actor);
4662 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS ), ROTATION_EPSILON, TEST_LOCATION );
4664 // Build the animation
4665 float durationSeconds(1.0f);
4666 Animation animation = Animation::New(durationSeconds);
4667 Degree relativeRotationDegrees(360.0f);
4668 Radian relativeRotationRadians(relativeRotationDegrees);
4669 animation.AnimateBy( Property( actor, Actor::Property::ORIENTATION ), Quaternion( relativeRotationRadians, Vector3::YAXIS ), AlphaFunction::EASE_IN );
4671 // Start the animation
4674 bool signalReceived(false);
4675 AnimationFinishCheck finishCheck(signalReceived);
4676 animation.FinishedSignal().Connect(&application, finishCheck);
4678 application.SendNotification();
4679 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 25% progress */);
4681 // We didn't expect the animation to finish yet
4682 application.SendNotification();
4683 finishCheck.CheckSignalNotReceived();
4684 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(relativeRotationRadians * 0.25f*0.25f*0.25f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
4686 application.SendNotification();
4687 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 50% progress */);
4689 // We didn't expect the animation to finish yet
4690 application.SendNotification();
4691 finishCheck.CheckSignalNotReceived();
4692 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(relativeRotationRadians * 0.5f*0.5f*0.5f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
4694 application.SendNotification();
4695 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% progress */);
4697 // We didn't expect the animation to finish yet
4698 application.SendNotification();
4699 finishCheck.CheckSignalNotReceived();
4700 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(relativeRotationRadians * 0.75f*0.75f*0.75f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
4702 application.SendNotification();
4703 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
4705 // We did expect the animation to finish
4706 application.SendNotification();
4707 finishCheck.CheckSignalReceived();
4708 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(relativeRotationRadians, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
4712 int UtcDaliAnimationAnimateByActorOrientationAlphaFunctionTimePeriodP(void)
4714 TestApplication application;
4716 Actor actor = Actor::New();
4717 actor.SetOrientation( Quaternion( Dali::ANGLE_0, Vector3::YAXIS ) );
4718 Stage::GetCurrent().Add(actor);
4719 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS ), ROTATION_EPSILON, TEST_LOCATION );
4721 // Build the animation
4722 float durationSeconds(1.0f);
4723 Animation animation = Animation::New(durationSeconds);
4724 Degree relativeRotationDegrees(360.0f);
4725 Radian relativeRotationRadians(relativeRotationDegrees);
4727 animation.AnimateBy( Property( actor, Actor::Property::ORIENTATION ), Quaternion( relativeRotationRadians, Vector3::YAXIS ),
4728 AlphaFunction::EASE_IN, TimePeriod( delay, durationSeconds - delay ) );
4730 // Start the animation
4733 bool signalReceived(false);
4734 AnimationFinishCheck finishCheck(signalReceived);
4735 animation.FinishedSignal().Connect(&application, finishCheck);
4737 application.SendNotification();
4738 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 25% progress */);
4740 // We didn't expect the animation to finish yet
4741 application.SendNotification();
4742 finishCheck.CheckSignalNotReceived();
4743 float progress = max(0.0f, 0.25f - delay) / (1.0f - delay);
4744 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(relativeRotationRadians * progress*progress*progress, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
4746 application.SendNotification();
4747 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 50% progress */);
4749 // We didn't expect the animation to finish yet
4750 application.SendNotification();
4751 finishCheck.CheckSignalNotReceived();
4752 progress = max(0.0f, 0.5f - delay) / (1.0f - delay);
4753 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(relativeRotationRadians * progress*progress*progress, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
4755 application.SendNotification();
4756 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% progress */);
4758 // We didn't expect the animation to finish yet
4759 application.SendNotification();
4760 finishCheck.CheckSignalNotReceived();
4761 progress = max(0.0f, 0.75f - delay) / (1.0f - delay);
4762 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(relativeRotationRadians * progress*progress*progress, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
4764 application.SendNotification();
4765 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
4767 // We did expect the animation to finish
4768 application.SendNotification();
4769 finishCheck.CheckSignalReceived();
4770 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(relativeRotationRadians, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
4774 int UtcDaliAnimationAnimateByActorScaleP(void)
4776 TestApplication application;
4778 Actor actor = Actor::New();
4779 Stage::GetCurrent().Add(actor);
4780 DALI_TEST_EQUALS( actor.GetCurrentScale(), Vector3::ONE, TEST_LOCATION );
4782 // Build the animation
4783 float durationSeconds(1.0f);
4784 Animation animation = Animation::New(durationSeconds);
4785 Vector3 targetScale(2.0f, 2.0f, 2.0f);
4786 Vector3 relativeScale(targetScale - Vector3::ONE);
4787 animation.AnimateBy( Property( actor, Actor::Property::SCALE ), Vector3( relativeScale.x, relativeScale.y, relativeScale.z ) );
4789 Vector3 ninetyNinePercentProgress(Vector3::ONE + relativeScale*0.99f);
4791 // Start the animation
4794 bool signalReceived(false);
4795 AnimationFinishCheck finishCheck(signalReceived);
4796 animation.FinishedSignal().Connect(&application, finishCheck);
4798 application.SendNotification();
4799 application.Render(static_cast<unsigned int>(durationSeconds*990.0f)/* 99% progress */);
4801 // We didn't expect the animation to finish yet
4802 application.SendNotification();
4803 finishCheck.CheckSignalNotReceived();
4804 DALI_TEST_EQUALS( actor.GetCurrentScale(), ninetyNinePercentProgress, TEST_LOCATION );
4806 application.SendNotification();
4807 application.Render(static_cast<unsigned int>(durationSeconds*10.0f) + 1u/*just beyond the animation duration*/);
4809 // We did expect the animation to finish
4810 application.SendNotification();
4811 finishCheck.CheckSignalReceived();
4812 DALI_TEST_EQUALS( actor.GetCurrentScale(), targetScale, TEST_LOCATION );
4815 finishCheck.Reset();
4816 actor.SetScale(Vector3::ONE);
4817 application.SendNotification();
4818 application.Render(0);
4819 DALI_TEST_EQUALS( actor.GetCurrentScale(), Vector3::ONE, TEST_LOCATION );
4821 // Repeat with a different (ease-in) alpha function
4822 animation = Animation::New(durationSeconds);
4823 animation.AnimateBy( Property( actor, Actor::Property::SCALE ), relativeScale, AlphaFunction::EASE_IN );
4824 animation.FinishedSignal().Connect(&application, finishCheck);
4827 application.SendNotification();
4828 application.Render(static_cast<unsigned int>(durationSeconds*990.0f)/* 99% progress */);
4830 // We didn't expect the animation to finish yet
4831 application.SendNotification();
4832 finishCheck.CheckSignalNotReceived();
4834 // The scale should have grown less, than with a linear alpha function
4835 Vector3 current(actor.GetCurrentScale());
4836 DALI_TEST_CHECK( current.x > 1.0f );
4837 DALI_TEST_CHECK( current.y > 1.0f );
4838 DALI_TEST_CHECK( current.z > 1.0f );
4839 DALI_TEST_CHECK( current.x < ninetyNinePercentProgress.x );
4840 DALI_TEST_CHECK( current.y < ninetyNinePercentProgress.y );
4841 DALI_TEST_CHECK( current.z < ninetyNinePercentProgress.z );
4843 application.SendNotification();
4844 application.Render(static_cast<unsigned int>(durationSeconds*10.0f) + 1u/*just beyond the animation duration*/);
4846 // We did expect the animation to finish
4847 application.SendNotification();
4848 finishCheck.CheckSignalReceived();
4849 DALI_TEST_EQUALS( actor.GetCurrentScale(), targetScale, TEST_LOCATION );
4852 finishCheck.Reset();
4853 actor.SetScale(Vector3::ONE);
4854 application.SendNotification();
4855 application.Render(0);
4856 DALI_TEST_EQUALS( actor.GetCurrentScale(), Vector3::ONE, TEST_LOCATION );
4858 // Repeat with a delay
4860 animation = Animation::New(durationSeconds);
4861 animation.AnimateBy( Property( actor, Actor::Property::SCALE ), relativeScale, AlphaFunction::LINEAR, TimePeriod( delay, durationSeconds - delay ) );
4862 animation.FinishedSignal().Connect(&application, finishCheck);
4865 application.SendNotification();
4866 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
4868 // We didn't expect the animation to finish yet
4869 application.SendNotification();
4870 finishCheck.CheckSignalNotReceived();
4871 DALI_TEST_EQUALS( actor.GetCurrentScale(), Vector3::ONE, TEST_LOCATION );
4873 application.SendNotification();
4874 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
4876 // We did expect the animation to finish
4877 application.SendNotification();
4878 finishCheck.CheckSignalReceived();
4879 DALI_TEST_EQUALS( actor.GetCurrentScale(), targetScale, TEST_LOCATION );
4883 int UtcDaliAnimationAnimateToBooleanP(void)
4885 TestApplication application;
4887 Actor actor = Actor::New();
4889 // Register a boolean property
4890 const bool startValue(false);
4891 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
4892 Stage::GetCurrent().Add(actor);
4893 DALI_TEST_CHECK( actor.GetProperty<bool>(index) == startValue );
4894 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == startValue );
4896 // Build the animation
4897 float durationSeconds(2.0f);
4898 Animation animation = Animation::New(durationSeconds);
4899 const bool targetValue( !startValue );
4900 animation.AnimateTo(Property(actor, index), targetValue);
4902 // Start the animation
4905 bool signalReceived(false);
4906 AnimationFinishCheck finishCheck(signalReceived);
4907 animation.FinishedSignal().Connect(&application, finishCheck);
4909 application.SendNotification();
4910 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
4912 // We didn't expect the animation to finish yet
4913 application.SendNotification();
4914 finishCheck.CheckSignalNotReceived();
4915 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == startValue );
4917 application.SendNotification();
4918 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
4920 // We did expect the animation to finish
4921 application.SendNotification();
4922 finishCheck.CheckSignalReceived();
4923 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == targetValue );
4925 // Check that nothing has changed after a couple of buffer swaps
4926 application.Render(0);
4927 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == targetValue );
4928 application.Render(0);
4929 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == targetValue );
4931 // Repeat with target value "false"
4932 animation = Animation::New(durationSeconds);
4933 const bool finalValue( !targetValue );
4934 animation.AnimateTo(Property(actor, index), finalValue);
4936 // Start the animation
4939 finishCheck.Reset();
4940 animation.FinishedSignal().Connect(&application, finishCheck);
4942 application.SendNotification();
4943 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
4945 // We didn't expect the animation to finish yet
4946 application.SendNotification();
4947 finishCheck.CheckSignalNotReceived();
4948 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == targetValue );
4950 application.SendNotification();
4951 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
4953 // We did expect the animation to finish
4954 application.SendNotification();
4955 finishCheck.CheckSignalReceived();
4956 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
4958 // Check that nothing has changed after a couple of buffer swaps
4959 application.Render(0);
4960 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
4961 application.Render(0);
4962 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
4966 int UtcDaliAnimationAnimateToBooleanAlphaFunctionP(void)
4968 TestApplication application;
4970 Actor actor = Actor::New();
4972 // Register a boolean property
4973 const bool startValue(false);
4974 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
4975 Stage::GetCurrent().Add(actor);
4976 DALI_TEST_CHECK( actor.GetProperty<bool>(index) == startValue );
4977 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == startValue );
4979 // Build the animation
4980 float durationSeconds(2.0f);
4981 Animation animation = Animation::New(durationSeconds);
4982 const bool targetValue( !startValue );
4983 animation.AnimateTo(Property(actor, "testProperty"), targetValue, AlphaFunction::EASE_OUT);
4985 // Start the animation
4988 bool signalReceived(false);
4989 AnimationFinishCheck finishCheck(signalReceived);
4990 animation.FinishedSignal().Connect(&application, finishCheck);
4992 application.SendNotification();
4993 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
4995 // We didn't expect the animation to finish yet
4996 application.SendNotification();
4997 finishCheck.CheckSignalNotReceived();
4998 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == startValue );
5000 application.SendNotification();
5001 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
5003 // We did expect the animation to finish
5004 application.SendNotification();
5005 finishCheck.CheckSignalReceived();
5006 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == targetValue );
5008 // Check that nothing has changed after a couple of buffer swaps
5009 application.Render(0);
5010 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == targetValue );
5011 application.Render(0);
5012 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == targetValue );
5014 // Repeat with target value "false"
5015 animation = Animation::New(durationSeconds);
5016 const bool finalValue( !targetValue );
5017 animation.AnimateTo(Property(actor, index), finalValue, AlphaFunction::EASE_OUT);
5019 // Start the animation
5022 finishCheck.Reset();
5023 animation.FinishedSignal().Connect(&application, finishCheck);
5025 application.SendNotification();
5026 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
5028 // We didn't expect the animation to finish yet
5029 application.SendNotification();
5030 finishCheck.CheckSignalNotReceived();
5031 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == targetValue );
5033 application.SendNotification();
5034 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
5036 // We did expect the animation to finish
5037 application.SendNotification();
5038 finishCheck.CheckSignalReceived();
5039 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
5041 // Check that nothing has changed after a couple of buffer swaps
5042 application.Render(0);
5043 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
5044 application.Render(0);
5045 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
5049 int UtcDaliAnimationAnimateToBooleanTimePeriodP(void)
5051 TestApplication application;
5053 Actor actor = Actor::New();
5055 // Register a boolean property
5056 bool startValue(false);
5057 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
5058 Stage::GetCurrent().Add(actor);
5059 DALI_TEST_CHECK( actor.GetProperty<bool>(index) == startValue );
5060 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == startValue );
5062 // Build the animation
5063 float durationSeconds(2.0f);
5064 Animation animation = Animation::New(durationSeconds);
5065 bool finalValue( !startValue );
5066 float animatorDurationSeconds(durationSeconds * 0.5f);
5067 animation.AnimateTo( Property(actor, index),
5069 TimePeriod( animatorDurationSeconds ) );
5071 // Start the animation
5074 bool signalReceived(false);
5075 AnimationFinishCheck finishCheck(signalReceived);
5076 animation.FinishedSignal().Connect(&application, finishCheck);
5078 application.SendNotification();
5079 application.Render(static_cast<unsigned int>(animatorDurationSeconds*950.0f)/* 95% animator progress */);
5081 // We didn't expect the animation to finish yet
5082 application.SendNotification();
5083 finishCheck.CheckSignalNotReceived();
5084 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == startValue );
5086 application.SendNotification();
5087 application.Render(static_cast<unsigned int>(animatorDurationSeconds*50.0f) + 1u/*just beyond the animator duration*/);
5089 // We didn't expect the animation to finish yet...
5090 application.SendNotification();
5091 finishCheck.CheckSignalNotReceived();
5093 // ...however we should have reached the final value
5094 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
5096 application.SendNotification();
5097 application.Render(static_cast<unsigned int>(animatorDurationSeconds*1000.0f)/*just beyond the animation duration*/);
5099 // We did expect the animation to finish
5100 application.SendNotification();
5101 finishCheck.CheckSignalReceived();
5102 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
5104 // Check that nothing has changed after a couple of buffer swaps
5105 application.Render(0);
5106 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
5107 application.Render(0);
5108 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
5112 int UtcDaliAnimationAnimateToBooleanAlphaFunctionTimePeriodP(void)
5114 TestApplication application;
5116 Actor actor = Actor::New();
5118 // Register a boolean property
5119 bool startValue(false);
5120 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
5121 Stage::GetCurrent().Add(actor);
5122 DALI_TEST_CHECK( actor.GetProperty<bool>(index) == startValue );
5123 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == startValue );
5125 // Build the animation
5126 float durationSeconds(2.0f);
5127 Animation animation = Animation::New(durationSeconds);
5128 bool finalValue( !startValue );
5129 float animatorDurationSeconds(durationSeconds * 0.5f);
5130 animation.AnimateTo( Property(actor, index),
5132 AlphaFunction::LINEAR,
5133 TimePeriod( animatorDurationSeconds ) );
5135 // Start the animation
5138 bool signalReceived(false);
5139 AnimationFinishCheck finishCheck(signalReceived);
5140 animation.FinishedSignal().Connect(&application, finishCheck);
5142 application.SendNotification();
5143 application.Render(static_cast<unsigned int>(animatorDurationSeconds*950.0f)/* 95% animator progress */);
5145 // We didn't expect the animation to finish yet
5146 application.SendNotification();
5147 finishCheck.CheckSignalNotReceived();
5148 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == startValue );
5150 application.SendNotification();
5151 application.Render(static_cast<unsigned int>(animatorDurationSeconds*50.0f) + 1u/*just beyond the animator duration*/);
5153 // We didn't expect the animation to finish yet...
5154 application.SendNotification();
5155 finishCheck.CheckSignalNotReceived();
5157 // ...however we should have reached the final value
5158 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
5160 application.SendNotification();
5161 application.Render(static_cast<unsigned int>(animatorDurationSeconds*1000.0f)/*just beyond the animation duration*/);
5163 // We did expect the animation to finish
5164 application.SendNotification();
5165 finishCheck.CheckSignalReceived();
5166 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
5168 // Check that nothing has changed after a couple of buffer swaps
5169 application.Render(0);
5170 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
5171 application.Render(0);
5172 DALI_TEST_CHECK( DevelHandle::GetCurrentProperty< bool >( actor, index ) == finalValue );
5176 int UtcDaliAnimationAnimateToFloatP(void)
5178 TestApplication application;
5180 Actor actor = Actor::New();
5182 // Register a float property
5183 float startValue(10.0f);
5184 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
5185 Stage::GetCurrent().Add(actor);
5186 DALI_TEST_EQUALS( actor.GetProperty<float>(index), startValue, TEST_LOCATION );
5187 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), startValue, TEST_LOCATION );
5189 // Build the animation
5190 float durationSeconds(2.0f);
5191 Animation animation = Animation::New(durationSeconds);
5192 float targetValue(50.0f);
5193 float relativeValue(targetValue - startValue);
5194 animation.AnimateTo(Property(actor, "testProperty"), targetValue);
5196 float ninetyFivePercentProgress(startValue + relativeValue*0.95f);
5198 // Start the animation
5201 bool signalReceived(false);
5202 AnimationFinishCheck finishCheck(signalReceived);
5203 animation.FinishedSignal().Connect(&application, finishCheck);
5205 application.SendNotification();
5206 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
5208 // We didn't expect the animation to finish yet
5209 application.SendNotification();
5210 finishCheck.CheckSignalNotReceived();
5211 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), ninetyFivePercentProgress, TEST_LOCATION );
5213 application.SendNotification();
5214 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
5216 // We did expect the animation to finish
5217 application.SendNotification();
5218 finishCheck.CheckSignalReceived();
5219 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), targetValue, TEST_LOCATION );
5223 int UtcDaliAnimationAnimateToFloatAlphaFunctionP(void)
5225 TestApplication application;
5227 Actor actor = Actor::New();
5229 // Register a float property
5230 float startValue(10.0f);
5231 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
5232 Stage::GetCurrent().Add(actor);
5233 DALI_TEST_EQUALS( actor.GetProperty<float>(index), startValue, TEST_LOCATION );
5234 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), startValue, TEST_LOCATION );
5236 // Build the animation
5237 float durationSeconds(1.0f);
5238 Animation animation = Animation::New(durationSeconds);
5239 float targetValue(90.0f);
5240 float relativeValue(targetValue - startValue);
5241 animation.AnimateTo(Property(actor, index), targetValue, AlphaFunction::EASE_OUT);
5243 float ninetyFivePercentProgress(startValue + relativeValue*0.95f);
5245 // Start the animation
5248 bool signalReceived(false);
5249 AnimationFinishCheck finishCheck(signalReceived);
5250 animation.FinishedSignal().Connect(&application, finishCheck);
5252 application.SendNotification();
5253 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
5255 // We didn't expect the animation to finish yet
5256 application.SendNotification();
5257 finishCheck.CheckSignalNotReceived();
5259 // The position should have moved more, than with a linear alpha function
5260 float current( DevelHandle::GetCurrentProperty< float >( actor, index ) );
5261 DALI_TEST_CHECK( current > ninetyFivePercentProgress );
5263 application.SendNotification();
5264 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
5266 // We did expect the animation to finish
5267 application.SendNotification();
5268 finishCheck.CheckSignalReceived();
5269 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), targetValue, TEST_LOCATION );
5273 int UtcDaliAnimationAnimateToFloatTimePeriodP(void)
5275 TestApplication application;
5277 Actor actor = Actor::New();
5279 // Register a float property
5280 float startValue(10.0f);
5281 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
5282 Stage::GetCurrent().Add(actor);
5283 DALI_TEST_EQUALS( actor.GetProperty<float>(index), startValue, TEST_LOCATION );
5284 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), startValue, TEST_LOCATION );
5286 // Build the animation
5287 float durationSeconds(1.0f);
5288 Animation animation = Animation::New(durationSeconds);
5289 float targetValue(30.0f);
5290 float relativeValue(targetValue - startValue);
5292 animation.AnimateTo(Property(actor, index),
5294 TimePeriod(delay, durationSeconds - delay));
5296 // Start the animation
5299 bool signalReceived(false);
5300 AnimationFinishCheck finishCheck(signalReceived);
5301 animation.FinishedSignal().Connect(&application, finishCheck);
5303 application.SendNotification();
5304 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
5306 // We didn't expect the animation to finish yet
5307 application.SendNotification();
5308 finishCheck.CheckSignalNotReceived();
5309 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), startValue, TEST_LOCATION );
5311 application.SendNotification();
5312 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
5314 // We didn't expect the animation to finish yet
5315 application.SendNotification();
5316 finishCheck.CheckSignalNotReceived();
5317 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), startValue+(relativeValue*0.5f), TEST_LOCATION );
5319 application.SendNotification();
5320 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
5322 // We did expect the animation to finish
5323 application.SendNotification();
5324 finishCheck.CheckSignalReceived();
5325 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), targetValue, TEST_LOCATION );
5329 int UtcDaliAnimationAnimateToFloatAlphaFunctionTimePeriodP(void)
5331 TestApplication application;
5333 Actor actor = Actor::New();
5335 // Register a float property
5336 float startValue(10.0f);
5337 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
5338 Stage::GetCurrent().Add(actor);
5339 DALI_TEST_EQUALS( actor.GetProperty<float>(index), startValue, TEST_LOCATION );
5340 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), startValue, TEST_LOCATION );
5342 // Build the animation
5343 float durationSeconds(1.0f);
5344 Animation animation = Animation::New(durationSeconds);
5345 float targetValue(30.0f);
5346 float relativeValue(targetValue - startValue);
5348 animation.AnimateTo(Property(actor, index),
5350 AlphaFunction::LINEAR,
5351 TimePeriod(delay, durationSeconds - delay));
5353 // Start the animation
5356 bool signalReceived(false);
5357 AnimationFinishCheck finishCheck(signalReceived);
5358 animation.FinishedSignal().Connect(&application, finishCheck);
5360 application.SendNotification();
5361 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
5363 // We didn't expect the animation to finish yet
5364 application.SendNotification();
5365 finishCheck.CheckSignalNotReceived();
5366 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), startValue, TEST_LOCATION );
5368 application.SendNotification();
5369 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
5371 // We didn't expect the animation to finish yet
5372 application.SendNotification();
5373 finishCheck.CheckSignalNotReceived();
5374 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), startValue+(relativeValue*0.5f), TEST_LOCATION );
5376 application.SendNotification();
5377 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
5379 // We did expect the animation to finish
5380 application.SendNotification();
5381 finishCheck.CheckSignalReceived();
5382 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), targetValue, TEST_LOCATION );
5386 int UtcDaliAnimationAnimateToIntegerP(void)
5388 TestApplication application;
5390 Actor actor = Actor::New();
5392 // Register an integer property
5394 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
5395 Stage::GetCurrent().Add(actor);
5396 DALI_TEST_EQUALS( actor.GetProperty<int>(index), startValue, TEST_LOCATION );
5397 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), startValue, TEST_LOCATION );
5399 // Build the animation
5400 float durationSeconds(2.0f);
5401 Animation animation = Animation::New(durationSeconds);
5402 int targetValue(50);
5403 int relativeValue(targetValue - startValue);
5404 animation.AnimateTo(Property(actor, "testProperty"), targetValue);
5406 int ninetyFivePercentProgress(static_cast<int>(startValue + relativeValue*0.95f + 0.5f));
5408 // Start the animation
5411 bool signalReceived(false);
5412 AnimationFinishCheck finishCheck(signalReceived);
5413 animation.FinishedSignal().Connect(&application, finishCheck);
5415 application.SendNotification();
5416 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
5418 // We didn't expect the animation to finish yet
5419 application.SendNotification();
5420 finishCheck.CheckSignalNotReceived();
5421 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), ninetyFivePercentProgress, TEST_LOCATION );
5423 application.SendNotification();
5424 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
5426 // We did expect the animation to finish
5427 application.SendNotification();
5428 finishCheck.CheckSignalReceived();
5429 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), targetValue, TEST_LOCATION );
5433 int UtcDaliAnimationAnimateToIntegerAlphaFunctionP(void)
5435 TestApplication application;
5437 Actor actor = Actor::New();
5439 // Register an integer property
5441 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
5442 Stage::GetCurrent().Add(actor);
5443 DALI_TEST_EQUALS( actor.GetProperty<int>(index), startValue, TEST_LOCATION );
5444 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), startValue, TEST_LOCATION );
5446 // Build the animation
5447 float durationSeconds(1.0f);
5448 Animation animation = Animation::New(durationSeconds);
5449 int targetValue(90);
5450 int relativeValue(targetValue - startValue);
5451 animation.AnimateTo(Property(actor, index), targetValue, AlphaFunction::EASE_OUT);
5453 int ninetyFivePercentProgress(static_cast<int>(startValue + relativeValue*0.95f + 0.5f));
5455 // Start the animation
5458 bool signalReceived(false);
5459 AnimationFinishCheck finishCheck(signalReceived);
5460 animation.FinishedSignal().Connect(&application, finishCheck);
5462 application.SendNotification();
5463 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
5465 // We didn't expect the animation to finish yet
5466 application.SendNotification();
5467 finishCheck.CheckSignalNotReceived();
5469 // The position should have moved more, than with a linear alpha function
5470 int current( DevelHandle::GetCurrentProperty< int >( actor, index ) );
5471 DALI_TEST_CHECK( current > ninetyFivePercentProgress );
5473 application.SendNotification();
5474 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
5476 // We did expect the animation to finish
5477 application.SendNotification();
5478 finishCheck.CheckSignalReceived();
5479 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), targetValue, TEST_LOCATION );
5483 int UtcDaliAnimationAnimateToIntegerTimePeriodP(void)
5485 TestApplication application;
5487 Actor actor = Actor::New();
5489 // Register an integer property
5491 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
5492 Stage::GetCurrent().Add(actor);
5493 DALI_TEST_EQUALS( actor.GetProperty<int>(index), startValue, TEST_LOCATION );
5494 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), startValue, TEST_LOCATION );
5496 // Build the animation
5497 float durationSeconds(1.0f);
5498 Animation animation = Animation::New(durationSeconds);
5499 int targetValue(30);
5500 int relativeValue(targetValue - startValue);
5502 animation.AnimateTo(Property(actor, index),
5504 TimePeriod(delay, durationSeconds - delay));
5506 // Start the animation
5509 bool signalReceived(false);
5510 AnimationFinishCheck finishCheck(signalReceived);
5511 animation.FinishedSignal().Connect(&application, finishCheck);
5513 application.SendNotification();
5514 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
5516 // We didn't expect the animation to finish yet
5517 application.SendNotification();
5518 finishCheck.CheckSignalNotReceived();
5519 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), startValue, TEST_LOCATION );
5521 application.SendNotification();
5522 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
5524 // We didn't expect the animation to finish yet
5525 application.SendNotification();
5526 finishCheck.CheckSignalNotReceived();
5527 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), static_cast<int>(startValue+(relativeValue*0.5f)+0.5f), TEST_LOCATION );
5529 application.SendNotification();
5530 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
5532 // We did expect the animation to finish
5533 application.SendNotification();
5534 finishCheck.CheckSignalReceived();
5535 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), targetValue, TEST_LOCATION );
5539 int UtcDaliAnimationAnimateToIntegerAlphaFunctionTimePeriodP(void)
5541 TestApplication application;
5543 Actor actor = Actor::New();
5545 // Register an integer property
5547 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
5548 Stage::GetCurrent().Add(actor);
5549 DALI_TEST_EQUALS( actor.GetProperty<int>(index), startValue, TEST_LOCATION );
5550 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), startValue, TEST_LOCATION );
5552 // Build the animation
5553 float durationSeconds(1.0f);
5554 Animation animation = Animation::New(durationSeconds);
5555 int targetValue(30);
5556 int relativeValue(targetValue - startValue);
5558 animation.AnimateTo(Property(actor, index),
5560 AlphaFunction::LINEAR,
5561 TimePeriod(delay, durationSeconds - delay));
5563 // Start the animation
5566 bool signalReceived(false);
5567 AnimationFinishCheck finishCheck(signalReceived);
5568 animation.FinishedSignal().Connect(&application, finishCheck);
5570 application.SendNotification();
5571 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
5573 // We didn't expect the animation to finish yet
5574 application.SendNotification();
5575 finishCheck.CheckSignalNotReceived();
5576 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), startValue, TEST_LOCATION );
5578 application.SendNotification();
5579 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
5581 // We didn't expect the animation to finish yet
5582 application.SendNotification();
5583 finishCheck.CheckSignalNotReceived();
5584 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), static_cast<int>(startValue+(relativeValue*0.5f)+0.5f), TEST_LOCATION );
5586 application.SendNotification();
5587 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
5589 // We did expect the animation to finish
5590 application.SendNotification();
5591 finishCheck.CheckSignalReceived();
5592 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), targetValue, TEST_LOCATION );
5596 int UtcDaliAnimationAnimateToVector2P(void)
5598 TestApplication application;
5600 Actor actor = Actor::New();
5602 // Register a Vector2 property
5603 Vector2 startValue(-50.0f, -50.0f);
5604 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
5605 Stage::GetCurrent().Add(actor);
5606 DALI_TEST_EQUALS( actor.GetProperty< Vector2 >( index ), startValue, TEST_LOCATION );
5607 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), startValue, TEST_LOCATION );
5609 // Build the animation
5610 float durationSeconds(2.0f);
5611 Animation animation = Animation::New(durationSeconds);
5612 Vector2 targetValue(50.0f, 50.0f);
5613 Vector2 relativeValue(targetValue - startValue);
5614 animation.AnimateTo(Property(actor, index), targetValue);
5616 Vector2 ninetyFivePercentProgress(startValue + relativeValue*0.95f);
5618 // Start the animation
5621 bool signalReceived(false);
5622 AnimationFinishCheck finishCheck(signalReceived);
5623 animation.FinishedSignal().Connect(&application, finishCheck);
5625 application.SendNotification();
5626 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
5628 // We didn't expect the animation to finish yet
5629 application.SendNotification();
5630 finishCheck.CheckSignalNotReceived();
5631 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), ninetyFivePercentProgress, TEST_LOCATION );
5633 application.SendNotification();
5634 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
5636 // We did expect the animation to finish
5637 application.SendNotification();
5638 finishCheck.CheckSignalReceived();
5639 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), targetValue, TEST_LOCATION );
5643 int UtcDaliAnimationAnimateToVector2AlphaFunctionP(void)
5645 TestApplication application;
5647 Actor actor = Actor::New();
5649 // Register a Vector2 property
5650 Vector2 startValue(1000.0f, 1000.0f);
5651 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
5652 Stage::GetCurrent().Add(actor);
5653 DALI_TEST_EQUALS( actor.GetProperty< Vector2 >( index ), startValue, TEST_LOCATION );
5654 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), startValue, TEST_LOCATION );
5656 // Build the animation
5657 float durationSeconds(1.0f);
5658 Animation animation = Animation::New(durationSeconds);
5659 Vector2 targetValue(9000.0f, 9000.0f);
5660 Vector2 relativeValue(targetValue - startValue);
5661 animation.AnimateTo(Property(actor, "testProperty"), targetValue, AlphaFunction::EASE_OUT);
5663 Vector2 ninetyFivePercentProgress(startValue + relativeValue*0.95f);
5665 // Start the animation
5668 bool signalReceived(false);
5669 AnimationFinishCheck finishCheck(signalReceived);
5670 animation.FinishedSignal().Connect(&application, finishCheck);
5672 application.SendNotification();
5673 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
5675 // We didn't expect the animation to finish yet
5676 application.SendNotification();
5677 finishCheck.CheckSignalNotReceived();
5679 // The position should have moved more, than with a linear alpha function
5680 Vector2 current( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ) );
5681 DALI_TEST_CHECK( current.x > ninetyFivePercentProgress.x );
5682 DALI_TEST_CHECK( current.y > ninetyFivePercentProgress.y );
5684 application.SendNotification();
5685 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
5687 // We did expect the animation to finish
5688 application.SendNotification();
5689 finishCheck.CheckSignalReceived();
5690 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), targetValue, TEST_LOCATION );
5694 int UtcDaliAnimationAnimateToVector2TimePeriodP(void)
5696 TestApplication application;
5698 Actor actor = Actor::New();
5700 // Register a Vector2 property
5701 Vector2 startValue(10.0f, 10.0f);
5702 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
5703 Stage::GetCurrent().Add(actor);
5704 DALI_TEST_EQUALS( actor.GetProperty< Vector2 >( index ), startValue, TEST_LOCATION );
5705 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), startValue, TEST_LOCATION );
5707 // Build the animation
5708 float durationSeconds(1.0f);
5709 Animation animation = Animation::New(durationSeconds);
5710 Vector2 targetValue(-10.0f, 20.0f);
5711 Vector2 relativeValue(targetValue - startValue);
5713 animation.AnimateTo(Property(actor, index),
5715 TimePeriod(delay, durationSeconds - delay));
5717 // Start the animation
5720 bool signalReceived(false);
5721 AnimationFinishCheck finishCheck(signalReceived);
5722 animation.FinishedSignal().Connect(&application, finishCheck);
5724 application.SendNotification();
5725 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
5727 // We didn't expect the animation to finish yet
5728 application.SendNotification();
5729 finishCheck.CheckSignalNotReceived();
5730 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), startValue, TEST_LOCATION );
5732 application.SendNotification();
5733 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
5735 // We didn't expect the animation to finish yet
5736 application.SendNotification();
5737 finishCheck.CheckSignalNotReceived();
5738 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), startValue+(relativeValue*0.5f), TEST_LOCATION );
5740 application.SendNotification();
5741 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
5743 // We did expect the animation to finish
5744 application.SendNotification();
5745 finishCheck.CheckSignalReceived();
5746 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), targetValue, TEST_LOCATION );
5750 int UtcDaliAnimationAnimateToVector2AlphaFunctionTimePeriodP(void)
5752 TestApplication application;
5754 Actor actor = Actor::New();
5756 // Register a Vector2 property
5757 Vector2 startValue(10.0f, 10.0f);
5758 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
5759 Stage::GetCurrent().Add(actor);
5760 DALI_TEST_EQUALS( actor.GetProperty< Vector2 >( index ), startValue, TEST_LOCATION );
5761 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), startValue, TEST_LOCATION );
5763 // Build the animation
5764 float durationSeconds(1.0f);
5765 Animation animation = Animation::New(durationSeconds);
5766 Vector2 targetValue(30.0f, 30.0f);
5767 Vector2 relativeValue(targetValue - startValue);
5769 animation.AnimateTo(Property(actor, index),
5771 AlphaFunction::LINEAR,
5772 TimePeriod(delay, durationSeconds - delay));
5774 // Start the animation
5777 bool signalReceived(false);
5778 AnimationFinishCheck finishCheck(signalReceived);
5779 animation.FinishedSignal().Connect(&application, finishCheck);
5781 application.SendNotification();
5782 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
5784 // We didn't expect the animation to finish yet, but cached value should be the final one
5785 application.SendNotification();
5786 finishCheck.CheckSignalNotReceived();
5787 DALI_TEST_EQUALS( actor.GetProperty< Vector2 >( index ), targetValue, TEST_LOCATION );
5788 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty<Vector2>( actor, index ), startValue, TEST_LOCATION );
5790 application.SendNotification();
5791 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
5793 // We didn't expect the animation to finish yet
5794 application.SendNotification();
5795 finishCheck.CheckSignalNotReceived();
5796 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), startValue+(relativeValue*0.5f), TEST_LOCATION );
5798 application.SendNotification();
5799 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
5801 // We did expect the animation to finish
5802 application.SendNotification();
5803 finishCheck.CheckSignalReceived();
5804 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector2 >( actor, index ), targetValue, TEST_LOCATION );
5805 DALI_TEST_EQUALS( actor.GetProperty< Vector2 >( index ), targetValue, TEST_LOCATION );
5809 int UtcDaliAnimationAnimateToVector3P(void)
5811 TestApplication application;
5813 Actor actor = Actor::New();
5815 // Register a Vector3 property
5816 Vector3 startValue(-50.0f, -50.0f, -50.0f);
5817 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
5818 Stage::GetCurrent().Add(actor);
5819 DALI_TEST_EQUALS( actor.GetProperty<Vector3>( index ), startValue, TEST_LOCATION );
5820 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), startValue, TEST_LOCATION );
5822 // Build the animation
5823 float durationSeconds(2.0f);
5824 Animation animation = Animation::New(durationSeconds);
5825 Vector3 targetValue(50.0f, 50.0f, 50.0f);
5826 Vector3 relativeValue(targetValue - startValue);
5827 animation.AnimateTo(Property(actor, index), targetValue);
5829 Vector3 ninetyFivePercentProgress(startValue + relativeValue*0.95f);
5831 // Start the animation
5834 bool signalReceived(false);
5835 AnimationFinishCheck finishCheck(signalReceived);
5836 animation.FinishedSignal().Connect(&application, finishCheck);
5838 application.SendNotification();
5839 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
5841 // We didn't expect the animation to finish yet
5842 application.SendNotification();
5843 finishCheck.CheckSignalNotReceived();
5844 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), ninetyFivePercentProgress, TEST_LOCATION );
5846 application.SendNotification();
5847 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
5849 // We did expect the animation to finish
5850 application.SendNotification();
5851 finishCheck.CheckSignalReceived();
5852 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), targetValue, TEST_LOCATION );
5856 int UtcDaliAnimationAnimateToVector3AlphaFunctionP(void)
5858 TestApplication application;
5860 Actor actor = Actor::New();
5862 // Register a Vector3 property
5863 Vector3 startValue(1000.0f, 1000.0f, 1000.0f);
5864 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
5865 Stage::GetCurrent().Add(actor);
5866 DALI_TEST_EQUALS( actor.GetProperty<Vector3>(index), startValue, TEST_LOCATION );
5867 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), startValue, TEST_LOCATION );
5869 // Build the animation
5870 float durationSeconds(1.0f);
5871 Animation animation = Animation::New(durationSeconds);
5872 Vector3 targetValue(9000.0f, 9000.0f, 9000.0f);
5873 Vector3 relativeValue(targetValue - startValue);
5874 animation.AnimateTo(Property(actor, index), targetValue, AlphaFunction::EASE_OUT);
5876 Vector3 ninetyFivePercentProgress(startValue + relativeValue*0.95f);
5878 // Start the animation
5881 bool signalReceived(false);
5882 AnimationFinishCheck finishCheck(signalReceived);
5883 animation.FinishedSignal().Connect(&application, finishCheck);
5885 application.SendNotification();
5886 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
5888 // We didn't expect the animation to finish yet
5889 application.SendNotification();
5890 finishCheck.CheckSignalNotReceived();
5892 // The position should have moved more, than with a linear alpha function
5893 Vector3 current( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ) );
5894 DALI_TEST_CHECK( current.x > ninetyFivePercentProgress.x );
5895 DALI_TEST_CHECK( current.y > ninetyFivePercentProgress.y );
5896 DALI_TEST_CHECK( current.z > ninetyFivePercentProgress.z );
5898 application.SendNotification();
5899 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
5901 // We did expect the animation to finish
5902 application.SendNotification();
5903 finishCheck.CheckSignalReceived();
5904 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), targetValue, TEST_LOCATION );
5908 int UtcDaliAnimationAnimateToVector3TimePeriodP(void)
5910 TestApplication application;
5912 Actor actor = Actor::New();
5914 // Register a Vector3 property
5915 Vector3 startValue(10.0f, 10.0f, 10.0f);
5916 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
5917 Stage::GetCurrent().Add(actor);
5918 DALI_TEST_EQUALS( actor.GetProperty<Vector3>(index), startValue, TEST_LOCATION );
5919 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), startValue, TEST_LOCATION );
5921 // Build the animation
5922 float durationSeconds(1.0f);
5923 Animation animation = Animation::New(durationSeconds);
5924 Vector3 targetValue(-10.0f, 20.0f, 100.0f);
5925 Vector3 relativeValue(targetValue - startValue);
5927 animation.AnimateTo(Property(actor, index),
5929 TimePeriod(delay, durationSeconds - delay));
5931 // Start the animation
5934 bool signalReceived(false);
5935 AnimationFinishCheck finishCheck(signalReceived);
5936 animation.FinishedSignal().Connect(&application, finishCheck);
5938 application.SendNotification();
5939 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
5941 // We didn't expect the animation to finish yet
5942 application.SendNotification();
5943 finishCheck.CheckSignalNotReceived();
5944 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), startValue, TEST_LOCATION );
5946 application.SendNotification();
5947 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
5949 // We didn't expect the animation to finish yet
5950 application.SendNotification();
5951 finishCheck.CheckSignalNotReceived();
5952 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), startValue+(relativeValue*0.5f), TEST_LOCATION );
5954 application.SendNotification();
5955 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
5957 // We did expect the animation to finish
5958 application.SendNotification();
5959 finishCheck.CheckSignalReceived();
5960 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), targetValue, TEST_LOCATION );
5964 int UtcDaliAnimationAnimateToVector3AlphaFunctionTimePeriodP(void)
5966 TestApplication application;
5968 Actor actor = Actor::New();
5970 // Register a Vector3 property
5971 Vector3 startValue(10.0f, 10.0f, 10.0f);
5972 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
5973 Stage::GetCurrent().Add(actor);
5974 DALI_TEST_EQUALS( actor.GetProperty<Vector3>(index), startValue, TEST_LOCATION );
5975 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), startValue, TEST_LOCATION );
5977 // Build the animation
5978 float durationSeconds(1.0f);
5979 Animation animation = Animation::New(durationSeconds);
5980 Vector3 targetValue(30.0f, 30.0f, 30.0f);
5981 Vector3 relativeValue(targetValue - startValue);
5983 animation.AnimateTo(Property(actor, "testProperty"),
5985 AlphaFunction::LINEAR,
5986 TimePeriod(delay, durationSeconds - delay));
5988 // Start the animation
5991 bool signalReceived(false);
5992 AnimationFinishCheck finishCheck(signalReceived);
5993 animation.FinishedSignal().Connect(&application, finishCheck);
5995 application.SendNotification();
5996 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
5998 // We didn't expect the animation to finish yet
5999 application.SendNotification();
6000 finishCheck.CheckSignalNotReceived();
6001 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), startValue, TEST_LOCATION );
6003 application.SendNotification();
6004 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
6006 // We didn't expect the animation to finish yet
6007 application.SendNotification();
6008 finishCheck.CheckSignalNotReceived();
6009 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), startValue+(relativeValue*0.5f), TEST_LOCATION );
6011 application.SendNotification();
6012 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
6014 // We did expect the animation to finish
6015 application.SendNotification();
6016 finishCheck.CheckSignalReceived();
6017 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), targetValue, TEST_LOCATION );
6021 int UtcDaliAnimationAnimateToVector3ComponentP(void)
6023 TestApplication application;
6025 Actor actor = Actor::New();
6027 // Register a Vector3 property
6028 Vector3 startValue(10.0f, 10.0f, 10.0f);
6029 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
6030 Stage::GetCurrent().Add(actor);
6031 DALI_TEST_EQUALS( actor.GetProperty<Vector3>(index), startValue, TEST_LOCATION );
6032 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), startValue, TEST_LOCATION );
6034 // Build the animation
6035 float durationSeconds(1.0f);
6036 Animation animation = Animation::New(durationSeconds);
6037 Vector3 targetValue(30.0f, 30.0f, 10.0f);
6038 Vector3 relativeValue(targetValue - startValue);
6040 animation.AnimateTo(Property(actor, "testProperty", 0),
6042 AlphaFunction::LINEAR,
6043 TimePeriod(delay, durationSeconds - delay));
6044 animation.AnimateTo(Property(actor, index, 1),
6046 AlphaFunction::LINEAR,
6047 TimePeriod(delay, durationSeconds - delay));
6049 // Start the animation
6052 bool signalReceived(false);
6053 AnimationFinishCheck finishCheck(signalReceived);
6054 animation.FinishedSignal().Connect(&application, finishCheck);
6056 application.SendNotification();
6057 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
6059 // We didn't expect the animation to finish yet
6060 application.SendNotification();
6061 finishCheck.CheckSignalNotReceived();
6062 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), startValue, TEST_LOCATION );
6064 application.SendNotification();
6065 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
6067 // We didn't expect the animation to finish yet
6068 application.SendNotification();
6069 finishCheck.CheckSignalNotReceived();
6070 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), startValue+(relativeValue*0.5f), TEST_LOCATION );
6072 application.SendNotification();
6073 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
6075 // We did expect the animation to finish
6076 application.SendNotification();
6077 finishCheck.CheckSignalReceived();
6078 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector3 >( actor, index ), targetValue, TEST_LOCATION );
6082 int UtcDaliAnimationAnimateToVector4P(void)
6084 TestApplication application;
6086 Actor actor = Actor::New();
6088 // Register a Vector4 property
6089 Vector4 startValue(-50.0f, -40.0f, -30.0f, -20.0f);
6090 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
6091 Stage::GetCurrent().Add(actor);
6092 DALI_TEST_EQUALS( actor.GetProperty<Vector4>(index), startValue, TEST_LOCATION );
6093 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), startValue, TEST_LOCATION );
6095 // Build the animation
6096 float durationSeconds(2.0f);
6097 Animation animation = Animation::New(durationSeconds);
6098 Vector4 targetValue(50.0f, 50.0f, 50.0f, 50.0f);
6099 Vector4 relativeValue(targetValue - startValue);
6100 animation.AnimateTo(Property(actor, index), targetValue);
6102 Vector4 ninetyFivePercentProgress(startValue + relativeValue*0.95f);
6104 // Start the animation
6107 bool signalReceived(false);
6108 AnimationFinishCheck finishCheck(signalReceived);
6109 animation.FinishedSignal().Connect(&application, finishCheck);
6111 application.SendNotification();
6112 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
6114 // We didn't expect the animation to finish yet
6115 application.SendNotification();
6116 finishCheck.CheckSignalNotReceived();
6117 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), ninetyFivePercentProgress, TEST_LOCATION );
6119 application.SendNotification();
6120 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
6122 // We did expect the animation to finish
6123 application.SendNotification();
6124 finishCheck.CheckSignalReceived();
6125 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), targetValue, TEST_LOCATION );
6129 int UtcDaliAnimationAnimateToVector4AlphaFunctionP(void)
6131 TestApplication application;
6133 Actor actor = Actor::New();
6135 // Register a Vector4 property
6136 Vector4 startValue(1000.0f, 1000.0f, 1000.0f, 1000.0f);
6137 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
6138 Stage::GetCurrent().Add(actor);
6139 DALI_TEST_EQUALS( actor.GetProperty<Vector4>(index), startValue, TEST_LOCATION );
6140 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), startValue, TEST_LOCATION );
6142 // Build the animation
6143 float durationSeconds(1.0f);
6144 Animation animation = Animation::New(durationSeconds);
6145 Vector4 targetValue(9000.0f, 9000.0f, 9000.0f, 9000.0f);
6146 Vector4 relativeValue(targetValue - startValue);
6147 animation.AnimateTo(Property(actor, index), targetValue, AlphaFunction::EASE_OUT);
6149 Vector4 ninetyFivePercentProgress(startValue + relativeValue*0.95f);
6151 // Start the animation
6154 bool signalReceived(false);
6155 AnimationFinishCheck finishCheck(signalReceived);
6156 animation.FinishedSignal().Connect(&application, finishCheck);
6158 application.SendNotification();
6159 application.Render(static_cast<unsigned int>(durationSeconds*950.0f)/* 95% progress */);
6161 // We didn't expect the animation to finish yet
6162 application.SendNotification();
6163 finishCheck.CheckSignalNotReceived();
6165 // The position should have moved more, than with a linear alpha function
6166 Vector4 current( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ) );
6167 DALI_TEST_CHECK( current.x > ninetyFivePercentProgress.x );
6168 DALI_TEST_CHECK( current.y > ninetyFivePercentProgress.y );
6169 DALI_TEST_CHECK( current.z > ninetyFivePercentProgress.z );
6170 DALI_TEST_CHECK( current.w > ninetyFivePercentProgress.w );
6172 application.SendNotification();
6173 application.Render(static_cast<unsigned int>(durationSeconds*50.0f) + 1u/*just beyond the animation duration*/);
6175 // We did expect the animation to finish
6176 application.SendNotification();
6177 finishCheck.CheckSignalReceived();
6178 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), targetValue, TEST_LOCATION );
6182 int UtcDaliAnimationAnimateToVector4TimePeriodP(void)
6184 TestApplication application;
6186 Actor actor = Actor::New();
6188 // Register a Vector4 property
6189 Vector4 startValue(10.0f, 10.0f, 10.0f, 10.0f);
6190 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
6191 Stage::GetCurrent().Add(actor);
6192 DALI_TEST_EQUALS( actor.GetProperty<Vector4>(index), startValue, TEST_LOCATION );
6193 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), startValue, VECTOR4_EPSILON, TEST_LOCATION );
6195 // Build the animation
6196 float durationSeconds(1.0f);
6197 Animation animation = Animation::New(durationSeconds);
6198 Vector4 targetValue(-10.0f, 20.0f, 100.0f, 100.0f);
6199 Vector4 relativeValue(targetValue - startValue);
6201 animation.AnimateTo(Property(actor, index),
6203 TimePeriod(delay, durationSeconds - delay));
6205 // Start the animation
6208 bool signalReceived(false);
6209 AnimationFinishCheck finishCheck(signalReceived);
6210 animation.FinishedSignal().Connect(&application, finishCheck);
6212 application.SendNotification();
6213 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
6215 // We didn't expect the animation to finish yet
6216 application.SendNotification();
6217 finishCheck.CheckSignalNotReceived();
6218 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), startValue, VECTOR4_EPSILON, TEST_LOCATION );
6220 application.SendNotification();
6221 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
6223 // We didn't expect the animation to finish yet
6224 application.SendNotification();
6225 finishCheck.CheckSignalNotReceived();
6226 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), startValue+(relativeValue*0.5f), VECTOR4_EPSILON, TEST_LOCATION );
6228 application.SendNotification();
6229 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
6231 // We did expect the animation to finish
6232 application.SendNotification();
6233 finishCheck.CheckSignalReceived();
6234 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), targetValue, VECTOR4_EPSILON, TEST_LOCATION );
6238 int UtcDaliAnimationAnimateToVector4AlphaFunctionTimePeriodP(void)
6240 TestApplication application;
6242 Actor actor = Actor::New();
6244 // Register a Vector4 property
6245 Vector4 startValue(10.0f, 10.0f, 10.0f, 10.0f);
6246 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
6247 Stage::GetCurrent().Add(actor);
6248 DALI_TEST_EQUALS( actor.GetProperty<Vector4>(index), startValue, TEST_LOCATION );
6249 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), startValue, TEST_LOCATION );
6251 // Build the animation
6252 float durationSeconds(1.0f);
6253 Animation animation = Animation::New(durationSeconds);
6254 Vector4 targetValue(30.0f, 30.0f, 30.0f, 30.0f);
6255 Vector4 relativeValue(targetValue - startValue);
6257 animation.AnimateTo(Property(actor, index),
6259 AlphaFunction::LINEAR,
6260 TimePeriod(delay, durationSeconds - delay));
6262 // Start the animation
6265 bool signalReceived(false);
6266 AnimationFinishCheck finishCheck(signalReceived);
6267 animation.FinishedSignal().Connect(&application, finishCheck);
6269 application.SendNotification();
6270 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
6272 // We didn't expect the animation to finish yet
6273 application.SendNotification();
6274 finishCheck.CheckSignalNotReceived();
6275 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), startValue, TEST_LOCATION );
6277 application.SendNotification();
6278 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
6280 // We didn't expect the animation to finish yet
6281 application.SendNotification();
6282 finishCheck.CheckSignalNotReceived();
6283 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), startValue+(relativeValue*0.5f), TEST_LOCATION );
6285 application.SendNotification();
6286 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
6288 // We did expect the animation to finish
6289 application.SendNotification();
6290 finishCheck.CheckSignalReceived();
6291 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< Vector4 >( actor, index ), targetValue, TEST_LOCATION );
6295 int UtcDaliAnimationAnimateToActorParentOriginP(void)
6297 TestApplication application;
6299 Actor actor = Actor::New();
6300 Stage::GetCurrent().Add(actor);
6301 DALI_TEST_EQUALS( actor.GetCurrentParentOrigin(), ParentOrigin::TOP_LEFT, TEST_LOCATION );
6303 // Build the animation
6304 float durationSeconds(1.0f);
6305 Animation animation = Animation::New(durationSeconds);
6306 Vector3 targetParentOrigin(ParentOrigin::BOTTOM_RIGHT);
6310 animation.AnimateTo( Property(actor, Actor::Property::PARENT_ORIGIN), targetParentOrigin );
6312 catch (Dali::DaliException& e)
6314 DALI_TEST_PRINT_ASSERT( e );
6315 DALI_TEST_ASSERT(e, "IsPropertyAnimatable( index )", TEST_LOCATION);
6320 int UtcDaliAnimationAnimateToActorParentOriginXP(void)
6322 TestApplication application;
6324 Actor actor = Actor::New();
6325 Stage::GetCurrent().Add(actor);
6326 float startValue(0.0f);
6327 DALI_TEST_EQUALS( actor.GetCurrentParentOrigin().x, startValue, TEST_LOCATION );
6328 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::PARENT_ORIGIN_X), startValue, TEST_LOCATION );
6330 // Build the animation
6331 float durationSeconds(1.0f);
6332 Animation animation = Animation::New(durationSeconds);
6333 float targetX(1.0f);
6337 animation.AnimateTo( Property(actor, Actor::Property::PARENT_ORIGIN_X), targetX );
6339 catch (Dali::DaliException& e)
6341 DALI_TEST_PRINT_ASSERT( e );
6342 DALI_TEST_ASSERT(e, "IsPropertyAnimatable( index )", TEST_LOCATION);
6347 int UtcDaliAnimationAnimateToActorParentOriginYP(void)
6349 TestApplication application;
6351 Actor actor = Actor::New();
6352 Stage::GetCurrent().Add(actor);
6353 float startValue(0.0f);
6354 DALI_TEST_EQUALS( actor.GetCurrentParentOrigin().y, startValue, TEST_LOCATION );
6355 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::PARENT_ORIGIN_Y), startValue, TEST_LOCATION );
6357 // Build the animation
6358 float durationSeconds(1.0f);
6359 Animation animation = Animation::New(durationSeconds);
6360 float targetY(1.0f);
6364 animation.AnimateTo( Property(actor, Actor::Property::PARENT_ORIGIN_Y), targetY );
6366 catch (Dali::DaliException& e)
6368 DALI_TEST_PRINT_ASSERT( e );
6369 DALI_TEST_ASSERT(e, "IsPropertyAnimatable( index )", TEST_LOCATION);
6374 int UtcDaliAnimationAnimateToActorParentOriginZP(void)
6376 TestApplication application;
6378 Actor actor = Actor::New();
6379 Stage::GetCurrent().Add(actor);
6380 float startValue(0.5f);
6381 DALI_TEST_EQUALS( actor.GetCurrentParentOrigin().z, startValue, TEST_LOCATION );
6382 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::PARENT_ORIGIN_Z), startValue, TEST_LOCATION );
6384 // Build the animation
6385 float durationSeconds(1.0f);
6386 Animation animation = Animation::New(durationSeconds);
6387 float targetZ(1.0f);
6391 animation.AnimateTo( Property(actor, Actor::Property::PARENT_ORIGIN_Z), targetZ );
6393 catch (Dali::DaliException& e)
6395 DALI_TEST_PRINT_ASSERT( e );
6396 DALI_TEST_ASSERT(e, "IsPropertyAnimatable( index )", TEST_LOCATION);
6401 int UtcDaliAnimationAnimateToActorAnchorPointP(void)
6403 TestApplication application;
6405 Actor actor = Actor::New();
6406 Stage::GetCurrent().Add(actor);
6407 DALI_TEST_EQUALS( actor.GetCurrentAnchorPoint(), AnchorPoint::CENTER, TEST_LOCATION );
6409 // Build the animation
6410 float durationSeconds(1.0f);
6411 Animation animation = Animation::New(durationSeconds);
6412 Vector3 targetAnchorPoint(AnchorPoint::TOP_LEFT);
6416 animation.AnimateTo( Property(actor, Actor::Property::ANCHOR_POINT), targetAnchorPoint);
6418 catch (Dali::DaliException& e)
6420 DALI_TEST_PRINT_ASSERT( e );
6421 DALI_TEST_ASSERT(e, "IsPropertyAnimatable( index )", TEST_LOCATION);
6426 int UtcDaliAnimationAnimateToActorAnchorPointXP(void)
6428 TestApplication application;
6430 Actor actor = Actor::New();
6431 Stage::GetCurrent().Add(actor);
6432 float startValue(0.5f);
6433 DALI_TEST_EQUALS( actor.GetCurrentAnchorPoint().x, startValue, TEST_LOCATION );
6434 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::ANCHOR_POINT_X), startValue, TEST_LOCATION );
6436 // Build the animation
6437 float durationSeconds(1.0f);
6438 Animation animation = Animation::New(durationSeconds);
6439 float targetX(1.0f);
6443 animation.AnimateTo( Property(actor, Actor::Property::ANCHOR_POINT_X), targetX );
6445 catch (Dali::DaliException& e)
6447 DALI_TEST_PRINT_ASSERT( e );
6448 DALI_TEST_ASSERT(e, "IsPropertyAnimatable( index )", TEST_LOCATION);
6453 int UtcDaliAnimationAnimateToActorAnchorPointYP(void)
6455 TestApplication application;
6457 Actor actor = Actor::New();
6458 Stage::GetCurrent().Add(actor);
6459 float startValue(0.5f);
6460 DALI_TEST_EQUALS( actor.GetCurrentAnchorPoint().y, startValue, TEST_LOCATION );
6461 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::ANCHOR_POINT_Y), startValue, TEST_LOCATION );
6463 // Build the animation
6464 float durationSeconds(1.0f);
6465 Animation animation = Animation::New(durationSeconds);
6466 float targetY(0.0f);
6470 animation.AnimateTo( Property(actor, Actor::Property::ANCHOR_POINT_Y), targetY );
6472 catch (Dali::DaliException& e)
6474 DALI_TEST_PRINT_ASSERT( e );
6475 DALI_TEST_ASSERT(e, "IsPropertyAnimatable( index )", TEST_LOCATION);
6480 int UtcDaliAnimationAnimateToActorAnchorPointZP(void)
6482 TestApplication application;
6484 Actor actor = Actor::New();
6485 Stage::GetCurrent().Add(actor);
6486 float startValue(0.5f);
6487 DALI_TEST_EQUALS( actor.GetCurrentAnchorPoint().z, startValue, TEST_LOCATION );
6488 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::ANCHOR_POINT_Z), startValue, TEST_LOCATION );
6490 // Build the animation
6491 float durationSeconds(1.0f);
6492 Animation animation = Animation::New(durationSeconds);
6493 float targetZ(100.0f);
6497 animation.AnimateTo( Property(actor, Actor::Property::ANCHOR_POINT_Z), targetZ );
6499 catch (Dali::DaliException& e)
6501 DALI_TEST_PRINT_ASSERT( e );
6502 DALI_TEST_ASSERT(e, "IsPropertyAnimatable( index )", TEST_LOCATION);
6507 int UtcDaliAnimationAnimateToActorSizeP(void)
6509 TestApplication application;
6511 Actor actor = Actor::New();
6512 Stage::GetCurrent().Add(actor);
6513 DALI_TEST_EQUALS( actor.GetCurrentSize(), Vector3::ZERO, TEST_LOCATION );
6515 // Build the animation
6516 float durationSeconds(1.0f);
6517 Animation animation = Animation::New(durationSeconds);
6518 Vector3 targetSize(100.0f, 100.0f, 100.0f);
6519 animation.AnimateTo( Property(actor, Actor::Property::SIZE), targetSize );
6521 Vector3 ninetyNinePercentProgress(targetSize * 0.99f);
6523 // Should return the initial properties before play
6524 DALI_TEST_EQUALS( actor.GetProperty< Vector3 >( Actor::Property::SIZE ), Vector3::ZERO, TEST_LOCATION );
6525 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::SIZE_WIDTH ), 0.0f, TEST_LOCATION );
6526 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::SIZE_HEIGHT ), 0.0f, TEST_LOCATION );
6527 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::SIZE_DEPTH ), 0.0f, TEST_LOCATION );
6529 // Start the animation
6532 // Should return the target property after play
6533 DALI_TEST_EQUALS( actor.GetProperty< Vector3 >( Actor::Property::SIZE ), targetSize, TEST_LOCATION );
6534 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::SIZE_WIDTH ), targetSize.width, TEST_LOCATION );
6535 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::SIZE_HEIGHT ), targetSize.height, TEST_LOCATION );
6536 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::SIZE_DEPTH ), targetSize.depth, TEST_LOCATION );
6538 bool signalReceived(false);
6539 AnimationFinishCheck finishCheck(signalReceived);
6540 animation.FinishedSignal().Connect(&application, finishCheck);
6542 application.SendNotification();
6543 application.Render(static_cast<unsigned int>(durationSeconds*990.0f)/* 99% progress */);
6545 // We didn't expect the animation to finish yet
6546 application.SendNotification();
6547 finishCheck.CheckSignalNotReceived();
6548 DALI_TEST_EQUALS( actor.GetCurrentSize(), ninetyNinePercentProgress, TEST_LOCATION );
6550 application.SendNotification();
6551 application.Render(static_cast<unsigned int>(durationSeconds*10.0f) + 1u/*just beyond the animation duration*/);
6553 // We did expect the animation to finish
6554 application.SendNotification();
6555 finishCheck.CheckSignalReceived();
6556 DALI_TEST_EQUALS( actor.GetCurrentSize(), targetSize, TEST_LOCATION );
6559 finishCheck.Reset();
6560 actor.SetSize(Vector3::ZERO);
6561 application.SendNotification();
6562 application.Render(0);
6563 DALI_TEST_EQUALS( actor.GetCurrentSize(), Vector3::ZERO, TEST_LOCATION );
6565 // Repeat with a different (ease-in) alpha function
6566 animation = Animation::New(durationSeconds);
6567 animation.AnimateTo( Property(actor, Actor::Property::SIZE), targetSize, AlphaFunction::EASE_IN);
6568 animation.FinishedSignal().Connect(&application, finishCheck);
6571 application.SendNotification();
6572 application.Render(static_cast<unsigned int>(durationSeconds*990.0f)/* 99% progress */);
6574 // We didn't expect the animation to finish yet
6575 application.SendNotification();
6576 finishCheck.CheckSignalNotReceived();
6578 // The size should have travelled less, than with a linear alpha function
6579 Vector3 current(actor.GetCurrentSize());
6580 DALI_TEST_CHECK( current.x > 0.0f );
6581 DALI_TEST_CHECK( current.y > 0.0f );
6582 DALI_TEST_CHECK( current.z > 0.0f );
6583 DALI_TEST_CHECK( current.x < ninetyNinePercentProgress.x );
6584 DALI_TEST_CHECK( current.y < ninetyNinePercentProgress.y );
6585 DALI_TEST_CHECK( current.z < ninetyNinePercentProgress.z );
6587 application.SendNotification();
6588 application.Render(static_cast<unsigned int>(durationSeconds*10.0f) + 1u/*just beyond the animation duration*/);
6590 // We did expect the animation to finish
6591 application.SendNotification();
6592 finishCheck.CheckSignalReceived();
6593 DALI_TEST_EQUALS( actor.GetCurrentSize(), targetSize, TEST_LOCATION );
6596 finishCheck.Reset();
6597 actor.SetSize(Vector3::ZERO);
6598 application.SendNotification();
6599 application.Render(0);
6600 DALI_TEST_EQUALS( actor.GetCurrentSize(), Vector3::ZERO, TEST_LOCATION );
6602 // Repeat with a delay
6604 animation = Animation::New(durationSeconds);
6605 animation.AnimateTo( Property(actor, Actor::Property::SIZE), targetSize, AlphaFunction::LINEAR, TimePeriod(delay, durationSeconds - delay));
6606 animation.FinishedSignal().Connect(&application, finishCheck);
6609 application.SendNotification();
6610 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
6612 // We didn't expect the animation to finish yet
6613 application.SendNotification();
6614 finishCheck.CheckSignalNotReceived();
6615 DALI_TEST_EQUALS( actor.GetCurrentSize(), Vector3::ZERO, TEST_LOCATION );
6617 application.SendNotification();
6618 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
6620 // We did expect the animation to finish
6621 application.SendNotification();
6622 finishCheck.CheckSignalReceived();
6623 DALI_TEST_EQUALS( actor.GetCurrentSize(), targetSize, TEST_LOCATION );
6627 int UtcDaliAnimationAnimateToActorSizeWidthP(void)
6629 TestApplication application;
6631 Actor actor = Actor::New();
6632 Stage::GetCurrent().Add(actor);
6633 float startValue(0.0f);
6634 DALI_TEST_EQUALS( actor.GetCurrentSize().width, startValue, TEST_LOCATION );
6635 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SIZE_WIDTH), startValue, TEST_LOCATION );
6637 // Build the animation
6638 float durationSeconds(1.0f);
6639 Animation animation = Animation::New(durationSeconds);
6640 float targetWidth(10.0f);
6641 animation.AnimateTo( Property(actor, Actor::Property::SIZE_WIDTH), targetWidth );
6643 float fiftyPercentProgress(startValue + (targetWidth - startValue)*0.5f);
6645 // Should return the initial properties before play
6646 DALI_TEST_EQUALS( actor.GetProperty< Vector3 >( Actor::Property::SIZE ), Vector3::ZERO, TEST_LOCATION );
6647 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::SIZE_WIDTH ), startValue, TEST_LOCATION );
6649 // Start the animation
6652 // Should return the target property after play
6653 DALI_TEST_EQUALS( actor.GetProperty< Vector3 >( Actor::Property::SIZE ), Vector3( targetWidth, 0.0f, 0.0f ), TEST_LOCATION );
6654 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::SIZE_WIDTH ), targetWidth, TEST_LOCATION );
6656 bool signalReceived(false);
6657 AnimationFinishCheck finishCheck(signalReceived);
6658 animation.FinishedSignal().Connect(&application, finishCheck);
6660 application.SendNotification();
6661 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% progress */);
6663 // We didn't expect the animation to finish yet
6664 application.SendNotification();
6665 finishCheck.CheckSignalNotReceived();
6666 DALI_TEST_EQUALS( actor.GetCurrentSize().width, fiftyPercentProgress, TEST_LOCATION );
6668 application.SendNotification();
6669 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
6671 // We did expect the animation to finish
6672 application.SendNotification();
6673 finishCheck.CheckSignalReceived();
6674 DALI_TEST_EQUALS( actor.GetCurrentSize().width, targetWidth, TEST_LOCATION );
6675 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SIZE_WIDTH), targetWidth, TEST_LOCATION );
6679 int UtcDaliAnimationAnimateToActorSizeHeightP(void)
6681 TestApplication application;
6683 Actor actor = Actor::New();
6684 Stage::GetCurrent().Add(actor);
6685 float startValue(0.0f);
6686 DALI_TEST_EQUALS( actor.GetCurrentSize().height, startValue, TEST_LOCATION );
6687 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SIZE_HEIGHT), startValue, TEST_LOCATION );
6689 // Build the animation
6690 float durationSeconds(1.0f);
6691 Animation animation = Animation::New(durationSeconds);
6692 float targetHeight(-10.0f);
6693 animation.AnimateTo( Property(actor, Actor::Property::SIZE_HEIGHT), targetHeight );
6695 float fiftyPercentProgress(startValue + (targetHeight - startValue)*0.5f);
6697 // Should return the initial properties before play
6698 DALI_TEST_EQUALS( actor.GetProperty< Vector3 >( Actor::Property::SIZE ), Vector3::ZERO, TEST_LOCATION );
6699 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::SIZE_HEIGHT ), startValue, TEST_LOCATION );
6701 // Start the animation
6704 // Should return the target property after play
6705 DALI_TEST_EQUALS( actor.GetProperty< Vector3 >( Actor::Property::SIZE ), Vector3( 0.0f, targetHeight, 0.0f ), TEST_LOCATION );
6706 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::SIZE_HEIGHT ), targetHeight, TEST_LOCATION );
6708 bool signalReceived(false);
6709 AnimationFinishCheck finishCheck(signalReceived);
6710 animation.FinishedSignal().Connect(&application, finishCheck);
6712 application.SendNotification();
6713 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% progress */);
6715 // We didn't expect the animation to finish yet
6716 application.SendNotification();
6717 finishCheck.CheckSignalNotReceived();
6718 DALI_TEST_EQUALS( actor.GetCurrentSize().height, fiftyPercentProgress, TEST_LOCATION );
6720 application.SendNotification();
6721 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
6723 // We did expect the animation to finish
6724 application.SendNotification();
6725 finishCheck.CheckSignalReceived();
6726 DALI_TEST_EQUALS( actor.GetCurrentSize().height, targetHeight, TEST_LOCATION );
6727 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SIZE_HEIGHT), targetHeight, TEST_LOCATION );
6731 int UtcDaliAnimationAnimateToActorSizeDepthP(void)
6733 TestApplication application;
6735 Actor actor = Actor::New();
6736 Stage::GetCurrent().Add(actor);
6737 float startValue(0.0f);
6738 DALI_TEST_EQUALS( actor.GetCurrentSize().depth, startValue, TEST_LOCATION );
6739 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SIZE_DEPTH), startValue, TEST_LOCATION );
6741 // Build the animation
6742 float durationSeconds(1.0f);
6743 Animation animation = Animation::New(durationSeconds);
6744 float targetDepth(-10.0f);
6745 animation.AnimateTo( Property(actor, Actor::Property::SIZE_DEPTH), targetDepth );
6747 float fiftyPercentProgress(startValue + (targetDepth - startValue)*0.5f);
6749 // Should return the initial properties before play
6750 DALI_TEST_EQUALS( actor.GetProperty< Vector3 >( Actor::Property::SIZE ), Vector3::ZERO, TEST_LOCATION );
6751 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::SIZE_DEPTH ), startValue, TEST_LOCATION );
6753 // Start the animation
6756 // Should return the target property after play
6757 DALI_TEST_EQUALS( actor.GetProperty< Vector3 >( Actor::Property::SIZE ), Vector3( 0.0f, 0.0f, targetDepth ), TEST_LOCATION );
6758 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::SIZE_DEPTH ), targetDepth, TEST_LOCATION );
6760 bool signalReceived(false);
6761 AnimationFinishCheck finishCheck(signalReceived);
6762 animation.FinishedSignal().Connect(&application, finishCheck);
6764 application.SendNotification();
6765 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% progress */);
6767 // We didn't expect the animation to finish yet
6768 application.SendNotification();
6769 finishCheck.CheckSignalNotReceived();
6770 DALI_TEST_EQUALS( actor.GetCurrentSize().depth, fiftyPercentProgress, TEST_LOCATION );
6772 application.SendNotification();
6773 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
6775 // We did expect the animation to finish
6776 application.SendNotification();
6777 finishCheck.CheckSignalReceived();
6778 DALI_TEST_EQUALS( actor.GetCurrentSize().depth, targetDepth, TEST_LOCATION );
6779 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SIZE_DEPTH), targetDepth, TEST_LOCATION );
6783 int UtcDaliAnimationAnimateToActorSizeWidthHeightP(void)
6785 TestApplication application;
6787 Actor actor = Actor::New();
6788 Stage::GetCurrent().Add(actor);
6789 DALI_TEST_EQUALS( actor.GetCurrentSize(), Vector3::ZERO, TEST_LOCATION );
6791 // Build the animation
6792 float durationSeconds(1.0f);
6793 Animation animation = Animation::New(durationSeconds);
6794 Vector3 targetSize(100.0f, 100.0f, 100.0f);
6795 animation.AnimateTo( Property( actor, Actor::Property::SIZE ), targetSize );
6797 Vector3 ninetyNinePercentProgress(targetSize * 0.99f);
6799 // Start the animation
6802 bool signalReceived(false);
6803 AnimationFinishCheck finishCheck(signalReceived);
6804 animation.FinishedSignal().Connect(&application, finishCheck);
6806 application.SendNotification();
6807 application.Render(static_cast<unsigned int>(durationSeconds*990.0f)/* 99% progress */);
6809 // We didn't expect the animation to finish yet
6810 application.SendNotification();
6811 finishCheck.CheckSignalNotReceived();
6812 DALI_TEST_EQUALS( actor.GetCurrentSize(), ninetyNinePercentProgress, TEST_LOCATION );
6814 application.SendNotification();
6815 application.Render(static_cast<unsigned int>(durationSeconds*10.0f) + 1u/*just beyond the animation duration*/);
6817 // We did expect the animation to finish
6818 application.SendNotification();
6819 finishCheck.CheckSignalReceived();
6820 DALI_TEST_EQUALS( actor.GetCurrentSize(), targetSize, TEST_LOCATION );
6823 finishCheck.Reset();
6824 actor.SetSize(Vector3::ZERO);
6825 application.SendNotification();
6826 application.Render(0);
6827 DALI_TEST_EQUALS( actor.GetCurrentSize(), Vector3::ZERO, TEST_LOCATION );
6829 // Repeat with a different (ease-in) alpha function
6830 animation = Animation::New(durationSeconds);
6831 animation.AnimateTo( Property( actor, Actor::Property::SIZE_WIDTH ), targetSize.x, AlphaFunction::EASE_IN );
6832 animation.AnimateTo( Property( actor, Actor::Property::SIZE_HEIGHT ), targetSize.y, AlphaFunction::EASE_IN );
6833 animation.FinishedSignal().Connect(&application, finishCheck);
6836 application.SendNotification();
6837 application.Render(static_cast<unsigned int>(durationSeconds*990.0f)/* 99% progress */);
6839 // We didn't expect the animation to finish yet
6840 application.SendNotification();
6841 finishCheck.CheckSignalNotReceived();
6843 // The size should have travelled less, than with a linear alpha function
6844 Vector3 current(actor.GetCurrentSize());
6845 DALI_TEST_CHECK( current.x > 0.0f );
6846 DALI_TEST_CHECK( current.y > 0.0f );
6847 DALI_TEST_CHECK( current.x < ninetyNinePercentProgress.x );
6848 DALI_TEST_CHECK( current.y < ninetyNinePercentProgress.y );
6850 application.SendNotification();
6851 application.Render(static_cast<unsigned int>(durationSeconds*10.0f) + 1u/*just beyond the animation duration*/);
6853 // We did expect the animation to finish
6854 application.SendNotification();
6855 finishCheck.CheckSignalReceived();
6856 DALI_TEST_EQUALS( actor.GetCurrentSize().x, targetSize.x, TEST_LOCATION );
6857 DALI_TEST_EQUALS( actor.GetCurrentSize().y, targetSize.y, TEST_LOCATION );
6860 finishCheck.Reset();
6861 actor.SetSize(Vector3::ZERO);
6862 application.SendNotification();
6863 application.Render(0);
6864 DALI_TEST_EQUALS( actor.GetCurrentSize(), Vector3::ZERO, TEST_LOCATION );
6866 // Repeat with a delay
6868 animation = Animation::New(durationSeconds);
6869 animation.AnimateTo( Property( actor, Actor::Property::SIZE_WIDTH ), targetSize.x, AlphaFunction::LINEAR, TimePeriod( delay, durationSeconds - delay ) );
6870 animation.AnimateTo( Property( actor, Actor::Property::SIZE_HEIGHT ), targetSize.y, AlphaFunction::LINEAR, TimePeriod( delay, durationSeconds - delay ) );
6871 animation.FinishedSignal().Connect(&application, finishCheck);
6874 application.SendNotification();
6875 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
6877 // We didn't expect the animation to finish yet
6878 application.SendNotification();
6879 finishCheck.CheckSignalNotReceived();
6880 DALI_TEST_EQUALS( actor.GetCurrentSize(), Vector3::ZERO, TEST_LOCATION );
6882 application.SendNotification();
6883 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
6885 // We did expect the animation to finish
6886 application.SendNotification();
6887 finishCheck.CheckSignalReceived();
6888 DALI_TEST_EQUALS( actor.GetCurrentSize().x, targetSize.x, TEST_LOCATION );
6889 DALI_TEST_EQUALS( actor.GetCurrentSize().y, targetSize.y, TEST_LOCATION );
6893 int UtcDaliAnimationAnimateToActorPositionP(void)
6895 TestApplication application;
6897 Actor actor = Actor::New();
6898 Stage::GetCurrent().Add(actor);
6899 DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3::ZERO, TEST_LOCATION );
6901 // Build the animation
6902 float durationSeconds(1.0f);
6903 Animation animation = Animation::New(durationSeconds);
6904 Vector3 targetPosition(200.0f, 200.0f, 200.0f);
6905 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition);
6907 Vector3 seventyFivePercentProgress(targetPosition * 0.75f);
6909 // Should return the initial properties before play
6910 DALI_TEST_EQUALS( actor.GetProperty< Vector3 >( Actor::Property::POSITION ), Vector3::ZERO, TEST_LOCATION );
6911 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::POSITION_X ), 0.0f, TEST_LOCATION );
6912 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::POSITION_Y ), 0.0f, TEST_LOCATION );
6913 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::POSITION_Z ), 0.0f, TEST_LOCATION );
6915 // Start the animation
6918 // Should return the target property after play
6919 DALI_TEST_EQUALS( actor.GetProperty< Vector3 >( Actor::Property::POSITION ), targetPosition, TEST_LOCATION );
6920 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::POSITION_X ), targetPosition.x, TEST_LOCATION );
6921 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::POSITION_Y ), targetPosition.y, TEST_LOCATION );
6922 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::POSITION_Z ), targetPosition.z, TEST_LOCATION );
6924 bool signalReceived(false);
6925 AnimationFinishCheck finishCheck(signalReceived);
6926 animation.FinishedSignal().Connect(&application, finishCheck);
6928 application.SendNotification();
6929 application.Render(static_cast<unsigned int>(durationSeconds*750.0f)/* 75% progress */);
6931 // We didn't expect the animation to finish yet
6932 application.SendNotification();
6933 finishCheck.CheckSignalNotReceived();
6934 DALI_TEST_EQUALS( actor.GetCurrentPosition(), seventyFivePercentProgress, TEST_LOCATION );
6936 application.SendNotification();
6937 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
6939 // We did expect the animation to finish
6940 application.SendNotification();
6941 finishCheck.CheckSignalReceived();
6942 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
6946 int UtcDaliAnimationAnimateToActorPositionXP(void)
6948 TestApplication application;
6950 Actor actor = Actor::New();
6951 Stage::GetCurrent().Add(actor);
6952 float startValue(0.0f);
6953 DALI_TEST_EQUALS( actor.GetCurrentPosition().x, startValue, TEST_LOCATION );
6954 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_X), startValue, TEST_LOCATION );
6955 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Y), startValue, TEST_LOCATION );
6956 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Z), startValue, TEST_LOCATION );
6958 // Build the animation
6959 float durationSeconds(1.0f);
6960 Animation animation = Animation::New(durationSeconds);
6961 float targetX(1.0f);
6962 animation.AnimateTo( Property(actor, Actor::Property::POSITION_X), targetX );
6964 float fiftyPercentProgress(startValue + (targetX - startValue)*0.5f);
6966 // Should return the initial properties before play
6967 DALI_TEST_EQUALS( actor.GetProperty< Vector3 >( Actor::Property::POSITION ), Vector3::ZERO, TEST_LOCATION );
6968 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::POSITION_X ), startValue, TEST_LOCATION );
6970 // Start the animation
6973 // Should return the target property after play
6974 DALI_TEST_EQUALS( actor.GetProperty< Vector3 >( Actor::Property::POSITION ), Vector3( targetX, 0.0f, 0.0f ), TEST_LOCATION );
6975 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::POSITION_X ), targetX, TEST_LOCATION );
6977 bool signalReceived(false);
6978 AnimationFinishCheck finishCheck(signalReceived);
6979 animation.FinishedSignal().Connect(&application, finishCheck);
6981 application.SendNotification();
6982 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% progress */);
6984 // We didn't expect the animation to finish yet
6985 application.SendNotification();
6986 finishCheck.CheckSignalNotReceived();
6987 DALI_TEST_EQUALS( actor.GetCurrentPosition().x, fiftyPercentProgress, TEST_LOCATION );
6989 application.SendNotification();
6990 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
6992 // We did expect the animation to finish
6993 application.SendNotification();
6994 finishCheck.CheckSignalReceived();
6995 DALI_TEST_EQUALS( actor.GetCurrentPosition().x, targetX, TEST_LOCATION );
6996 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_X), targetX, TEST_LOCATION );
6997 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Y), startValue, TEST_LOCATION );
6998 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Z), startValue, TEST_LOCATION );
7002 int UtcDaliAnimationAnimateToActorPositionYP(void)
7004 TestApplication application;
7006 Actor actor = Actor::New();
7007 Stage::GetCurrent().Add(actor);
7008 float startValue(0.0f);
7009 DALI_TEST_EQUALS( actor.GetCurrentPosition().y, startValue, TEST_LOCATION );
7010 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_X), startValue, TEST_LOCATION );
7011 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Y), startValue, TEST_LOCATION );
7012 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Z), startValue, TEST_LOCATION );
7014 // Build the animation
7015 float durationSeconds(1.0f);
7016 Animation animation = Animation::New(durationSeconds);
7017 float targetY(10.0f);
7018 animation.AnimateTo( Property(actor, Actor::Property::POSITION_Y), targetY );
7020 float fiftyPercentProgress(startValue + (targetY - startValue)*0.5f);
7022 // Should return the initial properties before play
7023 DALI_TEST_EQUALS( actor.GetProperty< Vector3 >( Actor::Property::POSITION ), Vector3::ZERO, TEST_LOCATION );
7024 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::POSITION_Y ), startValue, TEST_LOCATION );
7026 // Start the animation
7029 // Should return the target property after play
7030 DALI_TEST_EQUALS( actor.GetProperty< Vector3 >( Actor::Property::POSITION ), Vector3( 0.0f, targetY, 0.0f ), TEST_LOCATION );
7031 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::POSITION_Y ), targetY, TEST_LOCATION );
7033 bool signalReceived(false);
7034 AnimationFinishCheck finishCheck(signalReceived);
7035 animation.FinishedSignal().Connect(&application, finishCheck);
7037 application.SendNotification();
7038 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% progress */);
7040 // We didn't expect the animation to finish yet
7041 application.SendNotification();
7042 finishCheck.CheckSignalNotReceived();
7043 DALI_TEST_EQUALS( actor.GetCurrentPosition().y, fiftyPercentProgress, TEST_LOCATION );
7045 application.SendNotification();
7046 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
7048 // We did expect the animation to finish
7049 application.SendNotification();
7050 finishCheck.CheckSignalReceived();
7051 DALI_TEST_EQUALS( actor.GetCurrentPosition().y, targetY, TEST_LOCATION );
7052 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_X), startValue, TEST_LOCATION );
7053 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Y), targetY, TEST_LOCATION );
7054 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Z), startValue, TEST_LOCATION );
7058 int UtcDaliAnimationAnimateToActorPositionZP(void)
7060 TestApplication application;
7062 Actor actor = Actor::New();
7063 Stage::GetCurrent().Add(actor);
7064 float startValue(0.0f);
7065 DALI_TEST_EQUALS( actor.GetCurrentPosition().z, startValue, TEST_LOCATION );
7066 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_X), startValue, TEST_LOCATION );
7067 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Y), startValue, TEST_LOCATION );
7068 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Z), startValue, TEST_LOCATION );
7070 // Build the animation
7071 float durationSeconds(1.0f);
7072 Animation animation = Animation::New(durationSeconds);
7073 float targetZ(-5.0f);
7074 animation.AnimateTo( Property(actor, Actor::Property::POSITION_Z), targetZ );
7076 float fiftyPercentProgress(startValue + (targetZ - startValue)*0.5f);
7078 // Should return the initial properties before play
7079 DALI_TEST_EQUALS( actor.GetProperty< Vector3 >( Actor::Property::POSITION ), Vector3::ZERO, TEST_LOCATION );
7080 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::POSITION_Z ), startValue, TEST_LOCATION );
7082 // Start the animation
7085 // Should return the target property after play
7086 DALI_TEST_EQUALS( actor.GetProperty< Vector3 >( Actor::Property::POSITION ), Vector3( 0.0f, 0.0f, targetZ ), TEST_LOCATION );
7087 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::POSITION_Z ), targetZ, TEST_LOCATION );
7089 bool signalReceived(false);
7090 AnimationFinishCheck finishCheck(signalReceived);
7091 animation.FinishedSignal().Connect(&application, finishCheck);
7093 application.SendNotification();
7094 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% progress */);
7096 // We didn't expect the animation to finish yet
7097 application.SendNotification();
7098 finishCheck.CheckSignalNotReceived();
7099 DALI_TEST_EQUALS( actor.GetCurrentPosition().z, fiftyPercentProgress, TEST_LOCATION );
7101 application.SendNotification();
7102 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
7104 // We did expect the animation to finish
7105 application.SendNotification();
7106 finishCheck.CheckSignalReceived();
7107 DALI_TEST_EQUALS( actor.GetCurrentPosition().z, targetZ, TEST_LOCATION );
7108 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_X), startValue, TEST_LOCATION );
7109 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Y), startValue, TEST_LOCATION );
7110 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Z), targetZ, TEST_LOCATION );
7114 int UtcDaliAnimationAnimateToActorPositionAlphaFunctionP(void)
7116 TestApplication application;
7118 Actor actor = Actor::New();
7119 Stage::GetCurrent().Add(actor);
7120 DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3::ZERO, TEST_LOCATION );
7122 // Build the animation
7123 float durationSeconds(1.0f);
7124 Animation animation = Animation::New(durationSeconds);
7125 Vector3 targetPosition(200.0f, 200.0f, 200.0f);
7126 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::EASE_IN);
7128 Vector3 seventyFivePercentProgress(targetPosition * 0.75f);
7130 // Start the animation
7133 bool signalReceived(false);
7134 AnimationFinishCheck finishCheck(signalReceived);
7135 animation.FinishedSignal().Connect(&application, finishCheck);
7137 application.SendNotification();
7138 application.Render(static_cast<unsigned int>(durationSeconds*750.0f)/* 75% progress */);
7140 // We didn't expect the animation to finish yet
7141 application.SendNotification();
7142 finishCheck.CheckSignalNotReceived();
7144 // The position should have moved less, than with a linear alpha function
7145 Vector3 current(actor.GetCurrentPosition());
7146 DALI_TEST_CHECK( current.x > Vector3::ZERO.x );
7147 DALI_TEST_CHECK( current.y > Vector3::ZERO.y );
7148 DALI_TEST_CHECK( current.z > Vector3::ZERO.z );
7149 DALI_TEST_CHECK( current.x < seventyFivePercentProgress.x );
7150 DALI_TEST_CHECK( current.y < seventyFivePercentProgress.y );
7151 DALI_TEST_CHECK( current.z < seventyFivePercentProgress.z );
7153 application.SendNotification();
7154 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
7156 // We did expect the animation to finish
7157 application.SendNotification();
7158 finishCheck.CheckSignalReceived();
7159 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
7163 int UtcDaliAnimationAnimateToActorPositionTimePeriodP(void)
7165 TestApplication application;
7167 Actor actor = Actor::New();
7168 Stage::GetCurrent().Add(actor);
7169 DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3::ZERO, TEST_LOCATION );
7171 // Build the animation
7172 float durationSeconds(1.0f);
7173 Animation animation = Animation::New(durationSeconds);
7174 Vector3 targetPosition(200.0f, 200.0f, 200.0f);
7176 animation.AnimateTo( Property(actor, Actor::Property::POSITION),
7178 TimePeriod( delay, durationSeconds - delay ) );
7180 Vector3 seventyFivePercentProgress(targetPosition * 0.75f);
7182 // Start the animation
7185 bool signalReceived(false);
7186 AnimationFinishCheck finishCheck(signalReceived);
7187 animation.FinishedSignal().Connect(&application, finishCheck);
7189 application.SendNotification();
7190 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
7192 // We didn't expect the animation to finish yet
7193 application.SendNotification();
7194 finishCheck.CheckSignalNotReceived();
7195 DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3::ZERO, TEST_LOCATION );
7197 application.SendNotification();
7198 application.Render(static_cast<unsigned int>(durationSeconds*500.0f*0.75)/* 7/8 animation progress, 3/4 animator progress */);
7200 // We didn't expect the animation to finish yet
7201 application.SendNotification();
7202 finishCheck.CheckSignalNotReceived();
7203 DALI_TEST_EQUALS( actor.GetCurrentPosition(), seventyFivePercentProgress, TEST_LOCATION );
7205 application.SendNotification();
7206 application.Render(static_cast<unsigned int>(durationSeconds*500.0f*0.25) + 1u/*just beyond the animation duration*/);
7208 // We did expect the animation to finish
7209 application.SendNotification();
7210 finishCheck.CheckSignalReceived();
7211 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
7215 int UtcDaliAnimationAnimateToActorPositionAlphaFunctionTimePeriodP(void)
7217 TestApplication application;
7219 Actor actor = Actor::New();
7220 Stage::GetCurrent().Add(actor);
7221 DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3::ZERO, TEST_LOCATION );
7223 // Build the animation
7224 float durationSeconds(1.0f);
7225 Animation animation = Animation::New(durationSeconds);
7226 Vector3 targetPosition(200.0f, 200.0f, 200.0f);
7228 animation.AnimateTo( Property(actor, Actor::Property::POSITION),
7230 AlphaFunction::LINEAR,
7231 TimePeriod( delay, durationSeconds - delay ) );
7233 Vector3 seventyFivePercentProgress(targetPosition * 0.75f);
7235 // Start the animation
7238 bool signalReceived(false);
7239 AnimationFinishCheck finishCheck(signalReceived);
7240 animation.FinishedSignal().Connect(&application, finishCheck);
7242 application.SendNotification();
7243 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
7245 // We didn't expect the animation to finish yet
7246 application.SendNotification();
7247 finishCheck.CheckSignalNotReceived();
7248 DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3::ZERO, TEST_LOCATION );
7250 application.SendNotification();
7251 application.Render(static_cast<unsigned int>(durationSeconds*500.0f*0.75)/* 7/8 animation progress, 3/4 animator progress */);
7253 // We didn't expect the animation to finish yet
7254 application.SendNotification();
7255 finishCheck.CheckSignalNotReceived();
7256 DALI_TEST_EQUALS( actor.GetCurrentPosition(), seventyFivePercentProgress, TEST_LOCATION );
7258 application.SendNotification();
7259 application.Render(static_cast<unsigned int>(durationSeconds*500.0f*0.25) + 1u/*just beyond the animation duration*/);
7261 // We did expect the animation to finish
7262 application.SendNotification();
7263 finishCheck.CheckSignalReceived();
7264 DALI_TEST_EQUALS( actor.GetCurrentPosition(), targetPosition, TEST_LOCATION );
7268 int UtcDaliAnimationAnimateToActorOrientationAngleAxisP(void)
7270 TestApplication application;
7272 Actor actor = Actor::New();
7273 actor.SetOrientation(Quaternion( Dali::ANGLE_0, Vector3::YAXIS ) );
7274 Stage::GetCurrent().Add(actor);
7275 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS ), ROTATION_EPSILON, TEST_LOCATION );
7277 // Build the animation
7278 float durationSeconds(1.0f);
7279 Animation animation = Animation::New(durationSeconds);
7280 Degree targetRotationDegrees(90.0f);
7281 Radian targetRotationRadians(targetRotationDegrees);
7282 animation.AnimateTo( Property(actor, Actor::Property::ORIENTATION), AngleAxis(targetRotationRadians, Vector3::YAXIS) );
7284 // Start the animation
7287 // Target value should be retrievable straight away
7288 DALI_TEST_EQUALS( actor.GetProperty< Quaternion >( Actor::Property::ORIENTATION ), Quaternion(targetRotationRadians, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7290 bool signalReceived(false);
7291 AnimationFinishCheck finishCheck(signalReceived);
7292 animation.FinishedSignal().Connect(&application, finishCheck);
7294 application.SendNotification();
7295 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 25% progress */);
7297 // We didn't expect the animation to finish yet
7298 application.SendNotification();
7299 finishCheck.CheckSignalNotReceived();
7300 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(targetRotationRadians * 0.25f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7302 application.SendNotification();
7303 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 50% progress */);
7305 // We didn't expect the animation to finish yet
7306 application.SendNotification();
7307 finishCheck.CheckSignalNotReceived();
7308 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(targetRotationRadians * 0.5f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7310 application.SendNotification();
7311 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% progress */);
7313 // We didn't expect the animation to finish yet
7314 application.SendNotification();
7315 finishCheck.CheckSignalNotReceived();
7316 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(targetRotationRadians * 0.75f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7318 application.SendNotification();
7319 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
7321 // We did expect the animation to finish
7322 application.SendNotification();
7323 finishCheck.CheckSignalReceived();
7324 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(targetRotationRadians, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7328 int UtcDaliAnimationAnimateToActorOrientationQuaternionP(void)
7330 TestApplication application;
7332 Actor actor = Actor::New();
7333 actor.SetOrientation(Quaternion( Dali::ANGLE_0, Vector3::YAXIS ) );
7334 Stage::GetCurrent().Add(actor);
7335 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS ), ROTATION_EPSILON, TEST_LOCATION );
7337 // Build the animation
7338 float durationSeconds(1.0f);
7339 Animation animation = Animation::New(durationSeconds);
7340 Degree targetRotationDegrees(90.0f);
7341 Radian targetRotationRadians(targetRotationDegrees);
7342 Quaternion targetRotation(targetRotationRadians, Vector3::YAXIS);
7343 animation.AnimateTo( Property(actor, Actor::Property::ORIENTATION), targetRotation );
7345 // Start the animation
7348 bool signalReceived(false);
7349 AnimationFinishCheck finishCheck(signalReceived);
7350 animation.FinishedSignal().Connect(&application, finishCheck);
7352 application.SendNotification();
7353 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 25% progress */);
7355 // We didn't expect the animation to finish yet
7356 application.SendNotification();
7357 finishCheck.CheckSignalNotReceived();
7358 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(targetRotationRadians * 0.25f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7360 application.SendNotification();
7361 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 50% progress */);
7363 // We didn't expect the animation to finish yet
7364 application.SendNotification();
7365 finishCheck.CheckSignalNotReceived();
7366 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(targetRotationRadians * 0.5f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7368 application.SendNotification();
7369 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% progress */);
7371 // We didn't expect the animation to finish yet
7372 application.SendNotification();
7373 finishCheck.CheckSignalNotReceived();
7374 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(targetRotationRadians * 0.75f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7376 application.SendNotification();
7377 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
7379 // We did expect the animation to finish
7380 application.SendNotification();
7381 finishCheck.CheckSignalReceived();
7382 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(targetRotationRadians, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7386 int UtcDaliAnimationAnimateToActorOrientationAlphaFunctionP(void)
7388 TestApplication application;
7390 Actor actor = Actor::New();
7391 actor.SetOrientation(Quaternion( Dali::ANGLE_0, Vector3::YAXIS ) );
7392 Stage::GetCurrent().Add(actor);
7393 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(Radian(0.0f), Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7395 // Build the animation
7396 float durationSeconds(1.0f);
7397 Animation animation = Animation::New(durationSeconds);
7398 Degree targetRotationDegrees(90.0f);
7399 Radian targetRotationRadians(targetRotationDegrees);
7400 animation.AnimateTo( Property(actor, Actor::Property::ORIENTATION), AngleAxis(targetRotationDegrees, Vector3::YAXIS), AlphaFunction::EASE_IN);
7402 // Start the animation
7405 bool signalReceived(false);
7406 AnimationFinishCheck finishCheck(signalReceived);
7407 animation.FinishedSignal().Connect(&application, finishCheck);
7409 application.SendNotification();
7410 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 25% progress */);
7412 // We didn't expect the animation to finish yet
7413 application.SendNotification();
7414 finishCheck.CheckSignalNotReceived();
7415 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(targetRotationRadians * 0.25f*0.25f*0.25f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7417 application.SendNotification();
7418 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 50% progress */);
7420 // We didn't expect the animation to finish yet
7421 application.SendNotification();
7422 finishCheck.CheckSignalNotReceived();
7423 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(targetRotationRadians * 0.5f*0.5f*0.5f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7425 application.SendNotification();
7426 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% progress */);
7428 // We didn't expect the animation to finish yet
7429 application.SendNotification();
7430 finishCheck.CheckSignalNotReceived();
7431 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(targetRotationRadians * 0.75f*0.75f*0.75f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7433 application.SendNotification();
7434 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
7436 // We did expect the animation to finish
7437 application.SendNotification();
7438 finishCheck.CheckSignalReceived();
7439 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(targetRotationRadians, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7443 int UtcDaliAnimationAnimateToActorOrientationTimePeriodP(void)
7445 TestApplication application;
7447 Actor actor = Actor::New();
7448 actor.SetOrientation(Quaternion( Dali::ANGLE_0, Vector3::YAXIS ) );
7449 Stage::GetCurrent().Add(actor);
7450 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS ), ROTATION_EPSILON, TEST_LOCATION );
7452 // Build the animation
7453 float durationSeconds(1.0f);
7454 Animation animation = Animation::New(durationSeconds);
7455 Degree targetRotationDegrees(90.0f);
7456 Radian targetRotationRadians(targetRotationDegrees);
7458 animation.AnimateTo( Property(actor, Actor::Property::ORIENTATION), AngleAxis(targetRotationDegrees, Vector3::YAXIS), TimePeriod(delay, durationSeconds - delay));
7460 // Start the animation
7463 bool signalReceived(false);
7464 AnimationFinishCheck finishCheck(signalReceived);
7465 animation.FinishedSignal().Connect(&application, finishCheck);
7467 application.SendNotification();
7468 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 25% progress */);
7470 // We didn't expect the animation to finish yet
7471 application.SendNotification();
7472 finishCheck.CheckSignalNotReceived();
7473 float progress = max(0.0f, 0.25f - delay) / (1.0f - delay);
7474 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(targetRotationRadians * progress, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7476 application.SendNotification();
7477 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 50% progress */);
7479 // We didn't expect the animation to finish yet
7480 application.SendNotification();
7481 finishCheck.CheckSignalNotReceived();
7482 progress = max(0.0f, 0.5f - delay) / (1.0f - delay);
7483 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(targetRotationRadians * progress, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7485 application.SendNotification();
7486 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% progress */);
7488 // We didn't expect the animation to finish yet
7489 application.SendNotification();
7490 finishCheck.CheckSignalNotReceived();
7491 progress = max(0.0f, 0.75f - delay) / (1.0f - delay);
7492 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(targetRotationRadians * progress, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7494 application.SendNotification();
7495 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
7497 // We did expect the animation to finish
7498 application.SendNotification();
7499 finishCheck.CheckSignalReceived();
7500 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(targetRotationRadians, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7504 int UtcDaliAnimationAnimateToActorOrientationAlphaFunctionTimePeriodP(void)
7506 TestApplication application;
7508 Actor actor = Actor::New();
7509 actor.SetOrientation(Quaternion( Dali::ANGLE_0, Vector3::YAXIS ) );
7510 Stage::GetCurrent().Add(actor);
7511 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS ), ROTATION_EPSILON, TEST_LOCATION );
7513 // Build the animation
7514 float durationSeconds(1.0f);
7515 Animation animation = Animation::New(durationSeconds);
7516 Degree targetRotationDegrees(90.0f);
7517 Radian targetRotationRadians(targetRotationDegrees);
7519 animation.AnimateTo( Property(actor, Actor::Property::ORIENTATION), AngleAxis(targetRotationDegrees, Vector3::YAXIS), AlphaFunction::EASE_IN, TimePeriod(delay, durationSeconds - delay));
7521 // Start the animation
7524 bool signalReceived(false);
7525 AnimationFinishCheck finishCheck(signalReceived);
7526 animation.FinishedSignal().Connect(&application, finishCheck);
7528 application.SendNotification();
7529 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 25% progress */);
7531 // We didn't expect the animation to finish yet
7532 application.SendNotification();
7533 finishCheck.CheckSignalNotReceived();
7534 float progress = max(0.0f, 0.25f - delay) / (1.0f - delay);
7535 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(targetRotationRadians * progress*progress*progress, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7537 application.SendNotification();
7538 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 50% progress */);
7540 // We didn't expect the animation to finish yet
7541 application.SendNotification();
7542 finishCheck.CheckSignalNotReceived();
7543 progress = max(0.0f, 0.5f - delay) / (1.0f - delay);
7544 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(targetRotationRadians * progress*progress*progress, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7546 application.SendNotification();
7547 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% progress */);
7549 // We didn't expect the animation to finish yet
7550 application.SendNotification();
7551 finishCheck.CheckSignalNotReceived();
7552 progress = max(0.0f, 0.75f - delay) / (1.0f - delay);
7553 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(targetRotationRadians * progress*progress*progress, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7555 application.SendNotification();
7556 application.Render(static_cast<unsigned int>(durationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
7558 // We did expect the animation to finish
7559 application.SendNotification();
7560 finishCheck.CheckSignalReceived();
7561 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(targetRotationRadians, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
7565 int UtcDaliAnimationAnimateToActorScaleP(void)
7567 TestApplication application;
7569 Actor actor = Actor::New();
7570 Stage::GetCurrent().Add(actor);
7571 DALI_TEST_EQUALS( actor.GetCurrentScale(), Vector3::ONE, TEST_LOCATION );
7573 // Build the animation
7574 float durationSeconds(1.0f);
7575 Animation animation = Animation::New(durationSeconds);
7576 Vector3 targetScale(2.0f, 2.0f, 2.0f);
7577 animation.AnimateTo( Property(actor, Actor::Property::SCALE), targetScale );
7579 Vector3 ninetyNinePercentProgress(Vector3::ONE + (targetScale - Vector3::ONE)*0.99f);
7581 // Start the animation
7584 // Target value should be retrievable straight away
7585 DALI_TEST_EQUALS( actor.GetProperty< Vector3 >( Actor::Property::SCALE ), targetScale, TEST_LOCATION );
7586 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::SCALE_X ), targetScale.x, TEST_LOCATION );
7587 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::SCALE_Y ), targetScale.y, TEST_LOCATION );
7588 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::SCALE_Z ), targetScale.z, TEST_LOCATION );
7590 bool signalReceived(false);
7591 AnimationFinishCheck finishCheck(signalReceived);
7592 animation.FinishedSignal().Connect(&application, finishCheck);
7594 application.SendNotification();
7595 application.Render(static_cast<unsigned int>(durationSeconds*990.0f)/* 99% progress */);
7597 // We didn't expect the animation to finish yet
7598 application.SendNotification();
7599 finishCheck.CheckSignalNotReceived();
7600 DALI_TEST_EQUALS( actor.GetCurrentScale(), ninetyNinePercentProgress, TEST_LOCATION );
7602 application.SendNotification();
7603 application.Render(static_cast<unsigned int>(durationSeconds*10.0f) + 1u/*just beyond the animation duration*/);
7605 // We did expect the animation to finish
7606 application.SendNotification();
7607 finishCheck.CheckSignalReceived();
7608 DALI_TEST_EQUALS( actor.GetCurrentScale(), targetScale, TEST_LOCATION );
7611 finishCheck.Reset();
7612 actor.SetScale(Vector3::ONE);
7613 application.SendNotification();
7614 application.Render(0);
7615 DALI_TEST_EQUALS( actor.GetCurrentScale(), Vector3::ONE, TEST_LOCATION );
7617 // Repeat with a different (ease-in) alpha function
7618 animation = Animation::New(durationSeconds);
7619 animation.AnimateTo( Property(actor, Actor::Property::SCALE), targetScale, AlphaFunction::EASE_IN);
7620 animation.FinishedSignal().Connect(&application, finishCheck);
7623 application.SendNotification();
7624 application.Render(static_cast<unsigned int>(durationSeconds*990.0f)/* 99% progress */);
7626 // We didn't expect the animation to finish yet
7627 application.SendNotification();
7628 finishCheck.CheckSignalNotReceived();
7630 // The scale should have grown less, than with a linear alpha function
7631 Vector3 current(actor.GetCurrentScale());
7632 DALI_TEST_CHECK( current.x > 1.0f );
7633 DALI_TEST_CHECK( current.y > 1.0f );
7634 DALI_TEST_CHECK( current.z > 1.0f );
7635 DALI_TEST_CHECK( current.x < ninetyNinePercentProgress.x );
7636 DALI_TEST_CHECK( current.y < ninetyNinePercentProgress.y );
7637 DALI_TEST_CHECK( current.z < ninetyNinePercentProgress.z );
7639 application.SendNotification();
7640 application.Render(static_cast<unsigned int>(durationSeconds*10.0f) + 1u/*just beyond the animation duration*/);
7642 // We did expect the animation to finish
7643 application.SendNotification();
7644 finishCheck.CheckSignalReceived();
7645 DALI_TEST_EQUALS( actor.GetCurrentScale(), targetScale, TEST_LOCATION );
7648 finishCheck.Reset();
7649 actor.SetScale(Vector3::ONE);
7650 application.SendNotification();
7651 application.Render(0);
7652 DALI_TEST_EQUALS( actor.GetCurrentScale(), Vector3::ONE, TEST_LOCATION );
7654 // Repeat with a delay
7656 animation = Animation::New(durationSeconds);
7657 animation.AnimateTo( Property(actor, Actor::Property::SCALE), targetScale, AlphaFunction::LINEAR, TimePeriod(delay, durationSeconds - delay));
7658 animation.FinishedSignal().Connect(&application, finishCheck);
7661 application.SendNotification();
7662 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
7664 // We didn't expect the animation to finish yet
7665 application.SendNotification();
7666 finishCheck.CheckSignalNotReceived();
7667 DALI_TEST_EQUALS( actor.GetCurrentScale(), Vector3::ONE, TEST_LOCATION );
7669 application.SendNotification();
7670 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
7672 // We did expect the animation to finish
7673 application.SendNotification();
7674 finishCheck.CheckSignalReceived();
7675 DALI_TEST_EQUALS( actor.GetCurrentScale(), targetScale, TEST_LOCATION );
7679 int UtcDaliAnimationAnimateToActorScaleXP(void)
7681 TestApplication application;
7683 Actor actor = Actor::New();
7684 Stage::GetCurrent().Add(actor);
7685 float startValue(1.0f);
7686 DALI_TEST_EQUALS( actor.GetCurrentScale().x, startValue, TEST_LOCATION );
7687 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SCALE_X), startValue, TEST_LOCATION );
7688 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SCALE_Y), startValue, TEST_LOCATION );
7689 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SCALE_Z), startValue, TEST_LOCATION );
7690 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_X ), startValue, TEST_LOCATION );
7691 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_Y ), startValue, TEST_LOCATION );
7692 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_Z ), startValue, TEST_LOCATION );
7694 // Build the animation
7695 float durationSeconds(1.0f);
7696 Animation animation = Animation::New(durationSeconds);
7697 float targetX(10.0f);
7698 animation.AnimateTo( Property(actor, Actor::Property::SCALE_X), targetX );
7700 float fiftyPercentProgress(startValue + (targetX - startValue)*0.5f);
7702 // Start the animation
7705 // Target value should be retrievable straight away
7706 DALI_TEST_EQUALS( actor.GetProperty< Vector3 >( Actor::Property::SCALE ), Vector3( targetX, startValue, startValue ), TEST_LOCATION );
7707 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::SCALE_X ), targetX, TEST_LOCATION );
7709 bool signalReceived(false);
7710 AnimationFinishCheck finishCheck(signalReceived);
7711 animation.FinishedSignal().Connect(&application, finishCheck);
7713 application.SendNotification();
7714 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% progress */);
7716 // We didn't expect the animation to finish yet
7717 application.SendNotification();
7718 finishCheck.CheckSignalNotReceived();
7719 DALI_TEST_EQUALS( actor.GetCurrentScale().x, fiftyPercentProgress, TEST_LOCATION );
7720 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_X ), fiftyPercentProgress, TEST_LOCATION );
7721 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_Y ), startValue, TEST_LOCATION );
7722 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_Z ), startValue, TEST_LOCATION );
7724 application.SendNotification();
7725 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
7727 // We did expect the animation to finish
7728 application.SendNotification();
7729 finishCheck.CheckSignalReceived();
7730 DALI_TEST_EQUALS( actor.GetCurrentScale().x, targetX, TEST_LOCATION );
7731 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_X ), targetX, TEST_LOCATION );
7732 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_Y ), startValue, TEST_LOCATION );
7733 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_Z ), startValue, TEST_LOCATION );
7737 int UtcDaliAnimationAnimateToActorScaleYP(void)
7739 TestApplication application;
7741 Actor actor = Actor::New();
7742 Stage::GetCurrent().Add(actor);
7743 float startValue(1.0f);
7744 DALI_TEST_EQUALS( actor.GetCurrentScale().y, startValue, TEST_LOCATION );
7745 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SCALE_X), startValue, TEST_LOCATION );
7746 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SCALE_Y), startValue, TEST_LOCATION );
7747 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SCALE_Z), startValue, TEST_LOCATION );
7748 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_X ), startValue, TEST_LOCATION );
7749 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_Y ), startValue, TEST_LOCATION );
7750 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_Z ), startValue, TEST_LOCATION );
7752 // Build the animation
7753 float durationSeconds(1.0f);
7754 Animation animation = Animation::New(durationSeconds);
7755 float targetY(1000.0f);
7756 animation.AnimateTo( Property(actor, Actor::Property::SCALE_Y), targetY );
7758 float fiftyPercentProgress(startValue + (targetY - startValue)*0.5f);
7760 // Start the animation
7763 // Target value should be retrievable straight away
7764 DALI_TEST_EQUALS( actor.GetProperty< Vector3 >( Actor::Property::SCALE ), Vector3( startValue, targetY, startValue ), TEST_LOCATION );
7765 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::SCALE_Y ), targetY, TEST_LOCATION );
7767 bool signalReceived(false);
7768 AnimationFinishCheck finishCheck(signalReceived);
7769 animation.FinishedSignal().Connect(&application, finishCheck);
7771 application.SendNotification();
7772 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% progress */);
7774 // We didn't expect the animation to finish yet
7775 application.SendNotification();
7776 finishCheck.CheckSignalNotReceived();
7777 DALI_TEST_EQUALS( actor.GetCurrentScale().y, fiftyPercentProgress, TEST_LOCATION );
7778 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_X ), startValue, TEST_LOCATION );
7779 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_Y ), fiftyPercentProgress, TEST_LOCATION );
7780 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_Z ), startValue, TEST_LOCATION );
7782 application.SendNotification();
7783 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
7785 // We did expect the animation to finish
7786 application.SendNotification();
7787 finishCheck.CheckSignalReceived();
7788 DALI_TEST_EQUALS( actor.GetCurrentScale().y, targetY, TEST_LOCATION );
7789 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_X ), startValue, TEST_LOCATION );
7790 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_Y ), targetY, TEST_LOCATION );
7791 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_Z ), startValue, TEST_LOCATION );
7795 int UtcDaliAnimationAnimateToActorScaleZP(void)
7797 TestApplication application;
7799 Actor actor = Actor::New();
7800 Stage::GetCurrent().Add(actor);
7801 float startValue(1.0f);
7802 DALI_TEST_EQUALS( actor.GetCurrentScale().z, startValue, TEST_LOCATION );
7803 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SCALE_X), startValue, TEST_LOCATION );
7804 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SCALE_Y), startValue, TEST_LOCATION );
7805 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SCALE_Z), startValue, TEST_LOCATION );
7806 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_X ), startValue, TEST_LOCATION );
7807 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_Y ), startValue, TEST_LOCATION );
7808 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_Z ), startValue, TEST_LOCATION );
7810 // Build the animation
7811 float durationSeconds(1.0f);
7812 Animation animation = Animation::New(durationSeconds);
7813 float targetZ(-1000.0f);
7814 animation.AnimateTo( Property(actor, Actor::Property::SCALE_Z), targetZ );
7816 float fiftyPercentProgress(startValue + (targetZ - startValue)*0.5f);
7818 // Start the animation
7821 // Target value should be retrievable straight away
7822 DALI_TEST_EQUALS( actor.GetProperty< Vector3 >( Actor::Property::SCALE ), Vector3( startValue, startValue, targetZ ), TEST_LOCATION );
7823 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::SCALE_Z ), targetZ, TEST_LOCATION );
7825 bool signalReceived(false);
7826 AnimationFinishCheck finishCheck(signalReceived);
7827 animation.FinishedSignal().Connect(&application, finishCheck);
7829 application.SendNotification();
7830 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% progress */);
7832 // We didn't expect the animation to finish yet
7833 application.SendNotification();
7834 finishCheck.CheckSignalNotReceived();
7835 DALI_TEST_EQUALS( actor.GetCurrentScale().z, fiftyPercentProgress, TEST_LOCATION );
7836 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_X ), startValue, TEST_LOCATION );
7837 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_Y ), startValue, TEST_LOCATION );
7838 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_Z ), fiftyPercentProgress, TEST_LOCATION );
7840 application.SendNotification();
7841 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
7843 // We did expect the animation to finish
7844 application.SendNotification();
7845 finishCheck.CheckSignalReceived();
7846 DALI_TEST_EQUALS( actor.GetCurrentScale().z, targetZ, TEST_LOCATION );
7847 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_X ), startValue, TEST_LOCATION );
7848 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_Y ), startValue, TEST_LOCATION );
7849 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::SCALE_Z ), targetZ, TEST_LOCATION );
7853 int UtcDaliAnimationAnimateToActorColorP(void)
7855 TestApplication application;
7857 Actor actor = Actor::New();
7858 Stage::GetCurrent().Add(actor);
7859 DALI_TEST_EQUALS( actor.GetCurrentColor(), Color::WHITE, TEST_LOCATION );
7861 // Build the animation
7862 float durationSeconds(1.0f);
7863 Animation animation = Animation::New(durationSeconds);
7864 Vector4 targetColor(Color::RED);
7865 animation.AnimateTo( Property(actor, Actor::Property::COLOR), targetColor );
7867 Vector4 tenPercentProgress(Vector4(1.0f, 0.9f, 0.9f, 1.0f));
7868 Vector4 twentyPercentProgress(Vector4(1.0f, 0.8f, 0.8f, 1.0f));
7870 // Start the animation
7873 // Target value should be retrievable straight away
7874 DALI_TEST_EQUALS( actor.GetProperty< Vector4 >( Actor::Property::COLOR ), targetColor, TEST_LOCATION );
7875 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::COLOR_RED ), targetColor.r, TEST_LOCATION );
7876 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::COLOR_GREEN ), targetColor.g, TEST_LOCATION );
7877 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::COLOR_BLUE ), targetColor.b, TEST_LOCATION );
7878 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::COLOR_ALPHA ), targetColor.a, TEST_LOCATION );
7879 DALI_TEST_EQUALS( actor.GetProperty< float >( DevelActor::Property::OPACITY ), targetColor.a, TEST_LOCATION );
7881 bool signalReceived(false);
7882 AnimationFinishCheck finishCheck(signalReceived);
7883 animation.FinishedSignal().Connect(&application, finishCheck);
7885 application.SendNotification();
7886 application.Render(static_cast<unsigned int>(durationSeconds*100.0f)/* 10% progress */);
7888 // We didn't expect the animation to finish yet
7889 application.SendNotification();
7890 finishCheck.CheckSignalNotReceived();
7891 DALI_TEST_EQUALS( actor.GetCurrentColor(), tenPercentProgress, TEST_LOCATION );
7893 application.SendNotification();
7894 application.Render(static_cast<unsigned int>(durationSeconds*900.0f) + 1u/*just beyond the animation duration*/);
7896 // We did expect the animation to finish
7897 application.SendNotification();
7898 finishCheck.CheckSignalReceived();
7899 DALI_TEST_EQUALS( actor.GetCurrentColor(), targetColor, TEST_LOCATION );
7902 finishCheck.Reset();
7903 actor.SetColor(Color::WHITE);
7904 application.SendNotification();
7905 application.Render(0);
7906 DALI_TEST_EQUALS( actor.GetCurrentColor(), Color::WHITE, TEST_LOCATION );
7908 // Repeat with a different (ease-in) alpha function
7909 animation = Animation::New(durationSeconds);
7910 animation.AnimateTo( Property(actor, Actor::Property::COLOR), targetColor, AlphaFunction::EASE_IN);
7911 animation.FinishedSignal().Connect(&application, finishCheck);
7914 application.SendNotification();
7915 application.Render(static_cast<unsigned int>(durationSeconds*100.0f)/* 10% progress */);
7917 // We didn't expect the animation to finish yet
7918 application.SendNotification();
7919 finishCheck.CheckSignalNotReceived();
7921 // The color should have changed less, than with a linear alpha function
7922 Vector4 current(actor.GetCurrentColor());
7923 DALI_TEST_CHECK( current.x == 1.0f ); // doesn't change
7924 DALI_TEST_CHECK( current.y < 1.0f );
7925 DALI_TEST_CHECK( current.y > tenPercentProgress.y );
7926 DALI_TEST_CHECK( current.z < 1.0f );
7927 DALI_TEST_CHECK( current.z > tenPercentProgress.z );
7928 DALI_TEST_CHECK( current.w == 1.0f ); // doesn't change
7930 application.SendNotification();
7931 application.Render(static_cast<unsigned int>(durationSeconds*900.0f) + 1u/*just beyond the animation duration*/);
7933 // We did expect the animation to finish
7934 application.SendNotification();
7935 finishCheck.CheckSignalReceived();
7936 DALI_TEST_EQUALS( actor.GetCurrentColor(), targetColor, TEST_LOCATION );
7939 finishCheck.Reset();
7940 actor.SetColor(Color::WHITE);
7941 application.SendNotification();
7942 application.Render(0);
7943 DALI_TEST_EQUALS( actor.GetCurrentColor(), Color::WHITE, TEST_LOCATION );
7945 // Repeat with a shorter animator duration
7946 float animatorDuration = 0.5f;
7947 animation = Animation::New(durationSeconds);
7948 animation.AnimateTo( Property(actor, Actor::Property::COLOR), targetColor, AlphaFunction::LINEAR, TimePeriod(animatorDuration));
7949 animation.FinishedSignal().Connect(&application, finishCheck);
7952 application.SendNotification();
7953 application.Render(static_cast<unsigned int>(durationSeconds*100.0f)/* 10% animation progress, 20% animator progress */);
7955 // We didn't expect the animation to finish yet
7956 application.SendNotification();
7957 finishCheck.CheckSignalNotReceived();
7958 DALI_TEST_EQUALS( actor.GetCurrentColor(), twentyPercentProgress, TEST_LOCATION );
7960 application.SendNotification();
7961 application.Render(static_cast<unsigned int>(durationSeconds*400.0f)/* 50% animation progress, 100% animator progress */);
7963 // We didn't expect the animation to finish yet
7964 application.SendNotification();
7965 finishCheck.CheckSignalNotReceived();
7966 DALI_TEST_EQUALS( actor.GetCurrentColor(), targetColor, TEST_LOCATION );
7968 application.SendNotification();
7969 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
7971 // We did expect the animation to finish
7972 application.SendNotification();
7973 finishCheck.CheckSignalReceived();
7974 DALI_TEST_EQUALS( actor.GetCurrentColor(), targetColor, TEST_LOCATION );
7978 int UtcDaliAnimationAnimateToActorColorRedP(void)
7980 TestApplication application;
7982 Actor actor = Actor::New();
7983 Stage::GetCurrent().Add(actor);
7984 float startValue(1.0f);
7985 DALI_TEST_EQUALS( actor.GetCurrentColor().r, startValue, TEST_LOCATION );
7986 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
7987 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
7988 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
7989 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_ALPHA), startValue, TEST_LOCATION );
7990 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
7991 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
7992 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
7993 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), startValue, TEST_LOCATION );
7995 // Build the animation
7996 float durationSeconds(1.0f);
7997 Animation animation = Animation::New(durationSeconds);
7998 float targetRed(0.5f);
7999 animation.AnimateTo( Property(actor, Actor::Property::COLOR_RED), targetRed );
8001 float fiftyPercentProgress(startValue + (targetRed - startValue)*0.5f);
8003 // Start the animation
8006 // Target value should be retrievable straight away
8007 DALI_TEST_EQUALS( actor.GetProperty< Vector4 >( Actor::Property::COLOR ), Vector4( targetRed, startValue, startValue, startValue ), TEST_LOCATION );
8008 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::COLOR_RED ), targetRed, TEST_LOCATION );
8010 bool signalReceived(false);
8011 AnimationFinishCheck finishCheck(signalReceived);
8012 animation.FinishedSignal().Connect(&application, finishCheck);
8014 application.SendNotification();
8015 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% progress */);
8017 // We didn't expect the animation to finish yet
8018 application.SendNotification();
8019 finishCheck.CheckSignalNotReceived();
8020 DALI_TEST_EQUALS( actor.GetCurrentColor().r, fiftyPercentProgress, TEST_LOCATION );
8021 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED), fiftyPercentProgress, TEST_LOCATION );
8022 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
8023 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
8024 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA), startValue, TEST_LOCATION );
8026 application.SendNotification();
8027 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
8029 // We did expect the animation to finish
8030 application.SendNotification();
8031 finishCheck.CheckSignalReceived();
8032 DALI_TEST_EQUALS( actor.GetCurrentColor().r, targetRed, TEST_LOCATION );
8033 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED), targetRed, TEST_LOCATION );
8034 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
8035 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
8036 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA), startValue, TEST_LOCATION );
8040 int UtcDaliAnimationAnimateToActorColorGreenP(void)
8042 TestApplication application;
8044 Actor actor = Actor::New();
8045 Stage::GetCurrent().Add(actor);
8046 float startValue(1.0f);
8047 DALI_TEST_EQUALS( actor.GetCurrentColor().g, startValue, TEST_LOCATION );
8048 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
8049 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
8050 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
8051 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_ALPHA), startValue, TEST_LOCATION );
8052 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
8053 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
8054 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
8055 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), startValue, TEST_LOCATION );
8057 // Build the animation
8058 float durationSeconds(1.0f);
8059 Animation animation = Animation::New(durationSeconds);
8060 float targetGreen(0.5f);
8061 animation.AnimateTo( Property(actor, Actor::Property::COLOR_GREEN), targetGreen );
8063 float fiftyPercentProgress(startValue + (targetGreen - startValue)*0.5f);
8065 // Start the animation
8068 // Target value should be retrievable straight away
8069 DALI_TEST_EQUALS( actor.GetProperty< Vector4 >( Actor::Property::COLOR ), Vector4( startValue, targetGreen, startValue, startValue ), TEST_LOCATION );
8070 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::COLOR_GREEN ), targetGreen, TEST_LOCATION );
8072 bool signalReceived(false);
8073 AnimationFinishCheck finishCheck(signalReceived);
8074 animation.FinishedSignal().Connect(&application, finishCheck);
8076 application.SendNotification();
8077 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% progress */);
8079 // We didn't expect the animation to finish yet
8080 application.SendNotification();
8081 finishCheck.CheckSignalNotReceived();
8082 DALI_TEST_EQUALS( actor.GetCurrentColor().g, fiftyPercentProgress, TEST_LOCATION );
8083 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
8084 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN), fiftyPercentProgress, TEST_LOCATION );
8085 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
8086 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA), startValue, TEST_LOCATION );
8088 application.SendNotification();
8089 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
8091 // We did expect the animation to finish
8092 application.SendNotification();
8093 finishCheck.CheckSignalReceived();
8094 DALI_TEST_EQUALS( actor.GetCurrentColor().g, targetGreen, TEST_LOCATION );
8095 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
8096 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN), targetGreen, TEST_LOCATION );
8097 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
8098 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA), startValue, TEST_LOCATION );
8102 int UtcDaliAnimationAnimateToActorColorBlueP(void)
8104 TestApplication application;
8106 Actor actor = Actor::New();
8107 Stage::GetCurrent().Add(actor);
8108 float startValue(1.0f);
8109 DALI_TEST_EQUALS( actor.GetCurrentColor().b, startValue, TEST_LOCATION );
8110 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
8111 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
8112 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
8113 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_ALPHA), startValue, TEST_LOCATION );
8114 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
8115 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
8116 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
8117 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), startValue, TEST_LOCATION );
8119 // Build the animation
8120 float durationSeconds(1.0f);
8121 Animation animation = Animation::New(durationSeconds);
8122 float targetBlue(0.5f);
8123 animation.AnimateTo( Property(actor, Actor::Property::COLOR_BLUE), targetBlue );
8125 float fiftyPercentProgress(startValue + (targetBlue - startValue)*0.5f);
8127 // Start the animation
8130 // Target value should be retrievable straight away
8131 DALI_TEST_EQUALS( actor.GetProperty< Vector4 >( Actor::Property::COLOR ), Vector4( startValue, startValue, targetBlue, startValue ), TEST_LOCATION );
8132 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::COLOR_BLUE ), targetBlue, TEST_LOCATION );
8134 bool signalReceived(false);
8135 AnimationFinishCheck finishCheck(signalReceived);
8136 animation.FinishedSignal().Connect(&application, finishCheck);
8138 application.SendNotification();
8139 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% progress */);
8141 // We didn't expect the animation to finish yet
8142 application.SendNotification();
8143 finishCheck.CheckSignalNotReceived();
8144 DALI_TEST_EQUALS( actor.GetCurrentColor().b, fiftyPercentProgress, TEST_LOCATION );
8145 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
8146 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
8147 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), fiftyPercentProgress, TEST_LOCATION );
8148 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), startValue, TEST_LOCATION );
8150 application.SendNotification();
8151 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
8153 // We did expect the animation to finish
8154 application.SendNotification();
8155 finishCheck.CheckSignalReceived();
8156 DALI_TEST_EQUALS( actor.GetCurrentColor().b, targetBlue, TEST_LOCATION );
8157 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
8158 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
8159 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), targetBlue, TEST_LOCATION );
8160 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), startValue, TEST_LOCATION );
8164 int UtcDaliAnimationAnimateToActorColorAlphaP(void)
8166 TestApplication application;
8168 Actor actor = Actor::New();
8169 Stage::GetCurrent().Add(actor);
8170 float startValue(1.0f);
8171 DALI_TEST_EQUALS( actor.GetCurrentColor().a, startValue, TEST_LOCATION );
8172 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
8173 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
8174 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
8175 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_ALPHA), startValue, TEST_LOCATION );
8176 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
8177 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
8178 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
8179 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), startValue, TEST_LOCATION );
8181 // Build the animation
8182 float durationSeconds(1.0f);
8183 Animation animation = Animation::New(durationSeconds);
8184 float targetAlpha(0.5f);
8185 animation.AnimateTo( Property(actor, Actor::Property::COLOR_ALPHA), targetAlpha );
8187 float fiftyPercentProgress(startValue + (targetAlpha - startValue)*0.5f);
8189 // Start the animation
8192 // Target value should be retrievable straight away
8193 DALI_TEST_EQUALS( actor.GetProperty< Vector4 >( Actor::Property::COLOR ), Vector4( startValue, startValue, startValue, targetAlpha ), TEST_LOCATION );
8194 DALI_TEST_EQUALS( actor.GetProperty< float >( Actor::Property::COLOR_ALPHA ), targetAlpha, TEST_LOCATION );
8195 DALI_TEST_EQUALS( actor.GetProperty< float >( DevelActor::Property::OPACITY ), targetAlpha, TEST_LOCATION );
8197 bool signalReceived(false);
8198 AnimationFinishCheck finishCheck(signalReceived);
8199 animation.FinishedSignal().Connect(&application, finishCheck);
8201 application.SendNotification();
8202 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% progress */);
8204 // We didn't expect the animation to finish yet
8205 application.SendNotification();
8206 finishCheck.CheckSignalNotReceived();
8207 DALI_TEST_EQUALS( actor.GetCurrentColor().a, fiftyPercentProgress, TEST_LOCATION );
8208 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
8209 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
8210 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
8211 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), fiftyPercentProgress, TEST_LOCATION );
8213 application.SendNotification();
8214 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
8216 // We did expect the animation to finish
8217 application.SendNotification();
8218 finishCheck.CheckSignalReceived();
8219 DALI_TEST_EQUALS( actor.GetCurrentColor().a, targetAlpha, TEST_LOCATION );
8220 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
8221 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
8222 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
8223 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), targetAlpha, TEST_LOCATION );
8227 int UtcDaliAnimationKeyFrames01P(void)
8229 TestApplication application;
8231 KeyFrames keyFrames = KeyFrames::New();
8232 DALI_TEST_EQUALS(keyFrames.GetType(), Property::NONE, TEST_LOCATION);
8234 keyFrames.Add(0.0f, 0.1f);
8236 DALI_TEST_EQUALS(keyFrames.GetType(), Property::FLOAT, TEST_LOCATION);
8238 KeyFrames keyFrames2( keyFrames);
8239 DALI_TEST_CHECK( keyFrames2 );
8240 DALI_TEST_EQUALS(keyFrames2.GetType(), Property::FLOAT, TEST_LOCATION);
8242 KeyFrames keyFrames3 = KeyFrames::New();
8243 keyFrames3.Add(0.6f, true);
8244 DALI_TEST_CHECK( keyFrames3 );
8245 DALI_TEST_EQUALS(keyFrames3.GetType(), Property::BOOLEAN, TEST_LOCATION);
8247 keyFrames3 = keyFrames;
8248 DALI_TEST_CHECK( keyFrames3 );
8249 DALI_TEST_EQUALS(keyFrames3.GetType(), Property::FLOAT, TEST_LOCATION);
8254 int UtcDaliAnimationKeyFrames02P(void)
8256 TestApplication application;
8258 KeyFrames keyFrames = KeyFrames::New();
8259 DALI_TEST_EQUALS(keyFrames.GetType(), Property::NONE, TEST_LOCATION);
8261 keyFrames.Add(0.0f, 0.1f);
8262 keyFrames.Add(0.2f, 0.5f);
8263 keyFrames.Add(0.4f, 0.0f);
8264 keyFrames.Add(0.6f, 1.0f);
8265 keyFrames.Add(0.8f, 0.7f);
8266 keyFrames.Add(1.0f, 0.9f);
8268 DALI_TEST_EQUALS(keyFrames.GetType(), Property::FLOAT, TEST_LOCATION);
8272 keyFrames.Add(1.9f, false);
8274 catch (Dali::DaliException& e)
8276 DALI_TEST_PRINT_ASSERT( e );
8277 DALI_TEST_ASSERT(e, "mType == value.GetType()", TEST_LOCATION);
8282 int UtcDaliAnimationKeyFrames03P(void)
8284 TestApplication application;
8286 KeyFrames keyFrames = KeyFrames::New();
8287 DALI_TEST_EQUALS(keyFrames.GetType(), Property::NONE, TEST_LOCATION);
8289 keyFrames.Add(0.0f, true);
8290 keyFrames.Add(0.2f, false);
8291 keyFrames.Add(0.4f, false);
8292 keyFrames.Add(0.6f, true);
8293 keyFrames.Add(0.8f, true);
8294 keyFrames.Add(1.0f, false);
8296 DALI_TEST_EQUALS(keyFrames.GetType(), Property::BOOLEAN, TEST_LOCATION);
8300 keyFrames.Add(0.7f, Vector3(1.0f, 1.0f, 1.0f));
8302 catch (Dali::DaliException& e)
8304 DALI_TEST_PRINT_ASSERT( e );
8305 DALI_TEST_ASSERT(e, "mType == value.GetType()", TEST_LOCATION);
8310 int UtcDaliAnimationKeyFrames04P(void)
8312 TestApplication application;
8314 KeyFrames keyFrames = KeyFrames::New();
8315 DALI_TEST_EQUALS(keyFrames.GetType(), Property::NONE, TEST_LOCATION);
8317 keyFrames.Add(0.0f, Vector2(0.0f, 0.0f));
8318 keyFrames.Add(0.2f, Vector2(1.0f, 1.0f));
8319 keyFrames.Add(0.4f, Vector2(2.0f, 2.0f));
8320 keyFrames.Add(0.6f, Vector2(3.0f, 5.0f));
8321 keyFrames.Add(0.8f, Vector2(4.0f, 3.0f));
8322 keyFrames.Add(1.0f, Vector2(6.0f, 2.0f));
8324 DALI_TEST_EQUALS(keyFrames.GetType(), Property::VECTOR2, TEST_LOCATION);
8328 keyFrames.Add(0.7f, Vector3(1.0f, 1.0f, 1.0f));
8330 catch (Dali::DaliException& e)
8332 DALI_TEST_PRINT_ASSERT( e );
8333 DALI_TEST_ASSERT(e, "mType == value.GetType()", TEST_LOCATION);
8338 int UtcDaliAnimationKeyFrames05P(void)
8340 TestApplication application;
8342 KeyFrames keyFrames = KeyFrames::New();
8343 DALI_TEST_EQUALS(keyFrames.GetType(), Property::NONE, TEST_LOCATION);
8345 keyFrames.Add(0.0f, Vector3(0.0f, 4.0f, 0.0f));
8346 keyFrames.Add(0.2f, Vector3(1.0f, 3.0f, 1.0f));
8347 keyFrames.Add(0.4f, Vector3(2.0f, 2.0f, 2.0f));
8348 keyFrames.Add(0.6f, Vector3(3.0f, 2.0f, 5.0f));
8349 keyFrames.Add(0.8f, Vector3(4.0f, 4.0f, 3.0f));
8350 keyFrames.Add(1.0f, Vector3(6.0f, 8.0f, 2.0f));
8352 DALI_TEST_EQUALS(keyFrames.GetType(), Property::VECTOR3, TEST_LOCATION);
8356 keyFrames.Add(0.7f, 1.0f);
8358 catch (Dali::DaliException& e)
8360 DALI_TEST_PRINT_ASSERT( e );
8361 DALI_TEST_ASSERT(e, "mType == value.GetType()", TEST_LOCATION);
8366 int UtcDaliAnimationKeyFrames06P(void)
8368 TestApplication application;
8370 KeyFrames keyFrames = KeyFrames::New();
8371 DALI_TEST_EQUALS(keyFrames.GetType(), Property::NONE, TEST_LOCATION);
8373 keyFrames.Add(0.0f, Vector4(0.0f, 0.0f, 0.0f, 0.0f));
8374 keyFrames.Add(0.2f, Vector4(1.0f, 1.0f, 1.0f, 1.0f));
8375 keyFrames.Add(0.4f, Vector4(2.0f, 2.0f, 2.0f, 2.0f));
8376 keyFrames.Add(0.6f, Vector4(3.0f, 5.0f, 3.0f, 5.0f));
8377 keyFrames.Add(0.8f, Vector4(4.0f, 3.0f, 4.0f, 3.0f));
8378 keyFrames.Add(1.0f, Vector4(6.0f, 2.0f, 6.0f, 2.0f));
8380 DALI_TEST_EQUALS(keyFrames.GetType(), Property::VECTOR4, TEST_LOCATION);
8384 keyFrames.Add(0.7f, Quaternion(Radian(1.717f), Vector3::XAXIS));
8386 catch (Dali::DaliException& e)
8388 DALI_TEST_PRINT_ASSERT( e );
8389 DALI_TEST_ASSERT(e, "mType == value.GetType()", TEST_LOCATION);
8394 int UtcDaliAnimationKeyFrames07P(void)
8396 TestApplication application;
8398 KeyFrames keyFrames = KeyFrames::New();
8399 DALI_TEST_EQUALS(keyFrames.GetType(), Property::NONE, TEST_LOCATION);
8401 keyFrames.Add(0.0f, Quaternion(Radian(1.717f), Vector3::XAXIS));
8402 keyFrames.Add(0.2f, Quaternion(Radian(2.0f), Vector3::XAXIS));
8403 keyFrames.Add(0.4f, Quaternion(Radian(3.0f), Vector3::ZAXIS));
8404 keyFrames.Add(0.6f, Quaternion(Radian(4.0f), Vector3(1.0f, 1.0f, 1.0f)));
8405 keyFrames.Add(0.8f, AngleAxis(Degree(90), Vector3::XAXIS));
8406 keyFrames.Add(1.0f, Quaternion(Radian(3.0f), Vector3::YAXIS));
8408 DALI_TEST_EQUALS(keyFrames.GetType(), Property::ROTATION, TEST_LOCATION);
8412 keyFrames.Add(0.7f, 1.1f);
8414 catch (Dali::DaliException& e)
8416 DALI_TEST_PRINT_ASSERT( e );
8417 DALI_TEST_ASSERT(e, "mType == value.GetType()", TEST_LOCATION);
8422 int UtcDaliAnimationAnimateBetweenActorColorAlphaP(void)
8424 TestApplication application;
8426 float startValue(1.0f);
8427 Actor actor = Actor::New();
8428 actor.SetColor(Vector4(startValue, startValue, startValue, startValue));
8429 Stage::GetCurrent().Add(actor);
8431 DALI_TEST_EQUALS( actor.GetCurrentColor().a, startValue, TEST_LOCATION );
8432 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
8433 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
8434 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
8435 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_ALPHA), startValue, TEST_LOCATION );
8436 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
8437 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
8438 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
8439 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), startValue, TEST_LOCATION );
8441 // Build the animation
8442 float durationSeconds(1.0f);
8443 Animation animation = Animation::New(durationSeconds);
8445 KeyFrames keyFrames = KeyFrames::New();
8446 keyFrames.Add(0.0f, 0.1f);
8447 keyFrames.Add(0.2f, 0.5f);
8448 keyFrames.Add(0.4f, 0.0f);
8449 keyFrames.Add(0.6f, 1.0f);
8450 keyFrames.Add(0.8f, 0.7f);
8451 keyFrames.Add(1.0f, 0.9f);
8453 animation.AnimateBetween( Property(actor, Actor::Property::COLOR_ALPHA), keyFrames );
8455 // Start the animation
8458 bool signalReceived(false);
8459 AnimationFinishCheck finishCheck(signalReceived);
8460 animation.FinishedSignal().Connect(&application, finishCheck);
8461 application.SendNotification();
8462 application.Render(0);
8463 application.SendNotification();
8464 finishCheck.CheckSignalNotReceived();
8465 DALI_TEST_EQUALS( actor.GetCurrentColor().a, 0.1f, TEST_LOCATION );
8467 application.Render(static_cast<unsigned int>(durationSeconds*100.0f)/* 10% progress */);
8468 application.SendNotification();
8469 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
8470 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
8471 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
8472 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA), 0.3f, 0.01f, TEST_LOCATION );
8473 DALI_TEST_EQUALS( actor.GetCurrentColor().a, 0.3f, 0.01f, TEST_LOCATION );
8475 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 30% progress */);
8476 application.SendNotification();
8477 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
8478 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
8479 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
8480 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA), 0.25f, 0.01f, TEST_LOCATION );
8481 DALI_TEST_EQUALS( actor.GetCurrentColor().a, 0.25f, 0.01f, TEST_LOCATION );
8483 application.Render(static_cast<unsigned int>(durationSeconds*100.0f)/* 40% progress */);
8484 application.SendNotification();
8485 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
8486 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
8487 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
8488 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA), 0.0f, 0.01f, TEST_LOCATION );
8489 DALI_TEST_EQUALS( actor.GetCurrentColor().a, 0.0f, 0.01f, TEST_LOCATION );
8491 application.Render(static_cast<unsigned int>(durationSeconds*400.0f)/* 80% progress */);
8492 application.SendNotification();
8493 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
8494 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
8495 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
8496 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA), 0.7f, 0.01f, TEST_LOCATION );
8497 DALI_TEST_EQUALS( actor.GetCurrentColor().a, 0.7f, 0.01f, TEST_LOCATION );
8499 application.Render(static_cast<unsigned int>(durationSeconds*100.0f)/* 90% progress */);
8500 application.SendNotification();
8501 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
8502 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
8503 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
8504 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA), 0.8f, 0.01f, TEST_LOCATION );
8505 DALI_TEST_EQUALS( actor.GetCurrentColor().a, 0.8f, 0.01f, TEST_LOCATION );
8507 application.Render(static_cast<unsigned int>(durationSeconds*100.0f)+1/* 100% progress */);
8508 application.SendNotification();
8509 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
8510 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
8511 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
8512 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA), 0.9f, 0.01f, TEST_LOCATION );
8513 DALI_TEST_EQUALS( actor.GetCurrentColor().a, 0.9f, 0.01f, TEST_LOCATION );
8515 // We did expect the animation to finish
8517 finishCheck.CheckSignalReceived();
8521 int UtcDaliAnimationAnimateBetweenActorColorAlphaCubicP(void)
8523 TestApplication application;
8525 float startValue(1.0f);
8526 Actor actor = Actor::New();
8527 actor.SetColor(Vector4(startValue, startValue, startValue, startValue));
8528 Stage::GetCurrent().Add(actor);
8530 DALI_TEST_EQUALS( actor.GetCurrentColor().a, startValue, TEST_LOCATION );
8531 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
8532 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
8533 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
8534 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_ALPHA), startValue, TEST_LOCATION );
8535 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
8536 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
8537 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
8538 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), startValue, TEST_LOCATION );
8540 // Build the animation
8541 float durationSeconds(1.0f);
8542 Animation animation = Animation::New(durationSeconds);
8544 KeyFrames keyFrames = KeyFrames::New();
8545 keyFrames.Add(0.0f, 0.1f);
8546 keyFrames.Add(0.2f, 0.5f);
8547 keyFrames.Add(0.4f, 0.0f);
8548 keyFrames.Add(0.6f, 1.0f);
8549 keyFrames.Add(0.8f, 0.7f);
8550 keyFrames.Add(1.0f, 0.9f);
8552 animation.AnimateBetween( Property(actor, Actor::Property::COLOR_ALPHA), keyFrames, Animation::Cubic );
8554 // Start the animation
8557 bool signalReceived(false);
8558 AnimationFinishCheck finishCheck(signalReceived);
8559 animation.FinishedSignal().Connect(&application, finishCheck);
8560 application.SendNotification();
8561 application.Render(0);
8562 application.SendNotification();
8563 finishCheck.CheckSignalNotReceived();
8564 DALI_TEST_EQUALS( actor.GetCurrentColor().a, 0.1f, TEST_LOCATION );
8566 application.Render(static_cast<unsigned int>(durationSeconds*100.0f)/* 10% progress */);
8567 application.SendNotification();
8568 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
8569 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
8570 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
8571 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.36f, 0.01f, TEST_LOCATION );
8572 DALI_TEST_EQUALS( actor.GetCurrentColor().a, 0.36f, 0.01f, TEST_LOCATION );
8574 application.Render(static_cast<unsigned int>(durationSeconds*200.0f)/* 30% progress */);
8575 application.SendNotification();
8576 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
8577 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
8578 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
8579 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.21f, 0.01f, TEST_LOCATION );
8580 DALI_TEST_EQUALS( actor.GetCurrentColor().a, 0.21f, 0.01f, TEST_LOCATION );
8582 application.Render(static_cast<unsigned int>(durationSeconds*100.0f)/* 40% progress */);
8583 application.SendNotification();
8584 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
8585 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
8586 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
8587 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.0f, 0.01f, TEST_LOCATION );
8588 DALI_TEST_EQUALS( actor.GetCurrentColor().a, 0.0f, 0.01f, TEST_LOCATION );
8590 application.Render(static_cast<unsigned int>(durationSeconds*400.0f)/* 80% progress */);
8591 application.SendNotification();
8592 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
8593 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
8594 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
8595 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.7f, 0.01f, TEST_LOCATION );
8596 DALI_TEST_EQUALS( actor.GetCurrentColor().a, 0.7f, 0.01f, TEST_LOCATION );
8598 application.Render(static_cast<unsigned int>(durationSeconds*100.0f)/* 90% progress */);
8599 application.SendNotification();
8600 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
8601 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
8602 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
8603 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.76f, 0.01f, TEST_LOCATION );
8604 DALI_TEST_EQUALS( actor.GetCurrentColor().a, 0.76f, 0.01f, TEST_LOCATION );
8606 application.Render(static_cast<unsigned int>(durationSeconds*100.0f)+1/* 100% progress */);
8607 application.SendNotification();
8608 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
8609 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
8610 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
8611 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.9f, 0.01f, TEST_LOCATION );
8612 DALI_TEST_EQUALS( actor.GetCurrentColor().a, 0.9f, 0.01f, TEST_LOCATION );
8614 // We did expect the animation to finish
8616 finishCheck.CheckSignalReceived();
8620 int UtcDaliAnimationAnimateBetweenActorColorP(void)
8622 TestApplication application;
8624 float startValue(1.0f);
8625 Actor actor = Actor::New();
8626 actor.SetColor(Vector4(startValue, startValue, startValue, startValue));
8627 Stage::GetCurrent().Add(actor);
8629 DALI_TEST_EQUALS( actor.GetCurrentColor().a, startValue, TEST_LOCATION );
8630 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
8631 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
8632 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
8633 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_ALPHA), startValue, TEST_LOCATION );
8634 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
8635 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
8636 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
8637 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), startValue, TEST_LOCATION );
8639 // Build the animation
8640 float durationSeconds(1.0f);
8641 Animation animation = Animation::New(durationSeconds);
8643 KeyFrames keyFrames = KeyFrames::New();
8644 keyFrames.Add(0.0f, Vector4(0.1f, 0.2f, 0.3f, 0.4f));
8645 keyFrames.Add(0.5f, Vector4(0.9f, 0.8f, 0.7f, 0.6f));
8646 keyFrames.Add(1.0f, Vector4(1.0f, 1.0f, 1.0f, 1.0f));
8648 animation.AnimateBetween( Property(actor, Actor::Property::COLOR), keyFrames );
8650 // Start the animation
8653 bool signalReceived(false);
8654 AnimationFinishCheck finishCheck(signalReceived);
8655 animation.FinishedSignal().Connect(&application, finishCheck);
8656 application.SendNotification();
8657 application.Render(0);
8658 application.SendNotification();
8659 finishCheck.CheckSignalNotReceived();
8660 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.1f, 0.01f, TEST_LOCATION );
8661 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.2f, 0.01f, TEST_LOCATION );
8662 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.3f, 0.01f, TEST_LOCATION );
8663 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.4f, 0.01f, TEST_LOCATION );
8665 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 25% progress */);
8666 application.SendNotification();
8667 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.5f, 0.01f, TEST_LOCATION );
8668 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.5f, 0.01f, TEST_LOCATION );
8669 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.5f, 0.01f, TEST_LOCATION );
8670 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.5f, 0.01f, TEST_LOCATION );
8672 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 50% progress */);
8673 application.SendNotification();
8674 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.9f, 0.01f, TEST_LOCATION );
8675 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.8f, 0.01f, TEST_LOCATION );
8676 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.7f, 0.01f, TEST_LOCATION );
8677 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.6f, 0.01f, TEST_LOCATION );
8679 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% progress */);
8680 application.SendNotification();
8681 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.95f, 0.01f, TEST_LOCATION );
8682 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.90f, 0.01f, TEST_LOCATION );
8683 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.85f, 0.01f, TEST_LOCATION );
8684 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.80f, 0.01f, TEST_LOCATION );
8686 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)+1/* 100% progress */);
8687 application.SendNotification();
8688 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 1.0f, 0.01f, TEST_LOCATION );
8689 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 1.0f, 0.01f, TEST_LOCATION );
8690 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 1.0f, 0.01f, TEST_LOCATION );
8691 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 1.0f, 0.01f, TEST_LOCATION );
8693 // We did expect the animation to finish
8695 finishCheck.CheckSignalReceived();
8699 int UtcDaliAnimationAnimateBetweenActorColorCubicP(void)
8701 TestApplication application;
8703 float startValue(1.0f);
8704 Actor actor = Actor::New();
8705 actor.SetColor(Vector4(startValue, startValue, startValue, startValue));
8706 Stage::GetCurrent().Add(actor);
8708 DALI_TEST_EQUALS( actor.GetCurrentColor().a, startValue, TEST_LOCATION );
8709 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
8710 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
8711 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
8712 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_ALPHA), startValue, TEST_LOCATION );
8713 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
8714 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
8715 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
8716 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), startValue, TEST_LOCATION );
8718 // Build the animation
8719 float durationSeconds(1.0f);
8720 Animation animation = Animation::New(durationSeconds);
8722 KeyFrames keyFrames = KeyFrames::New();
8723 keyFrames.Add(0.0f, Vector4(0.1f, 0.2f, 0.3f, 0.4f));
8724 keyFrames.Add(0.5f, Vector4(0.9f, 0.8f, 0.7f, 0.6f));
8725 keyFrames.Add(1.0f, Vector4(1.0f, 1.0f, 1.0f, 1.0f));
8727 animation.AnimateBetween( Property(actor, Actor::Property::COLOR), keyFrames, Animation::Cubic );
8729 // Start the animation
8732 bool signalReceived(false);
8733 AnimationFinishCheck finishCheck(signalReceived);
8734 animation.FinishedSignal().Connect(&application, finishCheck);
8735 application.SendNotification();
8736 application.Render(0);
8737 application.SendNotification();
8738 finishCheck.CheckSignalNotReceived();
8739 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.1f, 0.01f, TEST_LOCATION );
8740 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.2f, 0.01f, TEST_LOCATION );
8741 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.3f, 0.01f, TEST_LOCATION );
8742 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.4f, 0.01f, TEST_LOCATION );
8744 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 25% progress */);
8745 application.SendNotification();
8746 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.55f, 0.01f, TEST_LOCATION );
8747 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.525f, 0.01f, TEST_LOCATION );
8748 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.506f, 0.01f, TEST_LOCATION );
8749 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.4875f, 0.01f, TEST_LOCATION );
8751 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 50% progress */);
8752 application.SendNotification();
8753 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.9f, 0.01f, TEST_LOCATION );
8754 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.8f, 0.01f, TEST_LOCATION );
8755 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.7f, 0.01f, TEST_LOCATION );
8756 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.6f, 0.01f, TEST_LOCATION );
8758 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% progress */);
8759 application.SendNotification();
8760 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.99375f, 0.01f, TEST_LOCATION );
8761 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.925f, 0.01f, TEST_LOCATION );
8762 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.85625f, 0.01f, TEST_LOCATION );
8763 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.7875f, 0.01f, TEST_LOCATION );
8765 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)+1/* 100% progress */);
8766 application.SendNotification();
8767 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 1.0f, 0.01f, TEST_LOCATION );
8768 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 1.0f, 0.01f, TEST_LOCATION );
8769 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 1.0f, 0.01f, TEST_LOCATION );
8770 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 1.0f, 0.01f, TEST_LOCATION );
8772 // We did expect the animation to finish
8774 finishCheck.CheckSignalReceived();
8778 int UtcDaliAnimationAnimateBetweenActorVisibleP(void)
8780 TestApplication application;
8782 Actor actor = Actor::New();
8783 AngleAxis aa(Degree(90), Vector3::XAXIS);
8784 actor.SetOrientation(aa.angle, aa.axis);
8785 Stage::GetCurrent().Add(actor);
8787 application.SendNotification();
8788 application.Render(0);
8790 DALI_TEST_EQUALS( actor.IsVisible(), true, TEST_LOCATION );
8792 // Build the animation
8793 float durationSeconds(1.0f);
8794 Animation animation = Animation::New(durationSeconds);
8796 KeyFrames keyFrames = KeyFrames::New();
8797 keyFrames.Add(0.0f, false);
8798 keyFrames.Add(0.2f, true);
8799 keyFrames.Add(0.4f, true);
8800 keyFrames.Add(0.8f, false);
8801 keyFrames.Add(1.0f, true);
8803 animation.AnimateBetween( Property(actor, Actor::Property::VISIBLE), keyFrames );
8805 // Start the animation
8808 bool signalReceived(false);
8809 AnimationFinishCheck finishCheck(signalReceived);
8810 animation.FinishedSignal().Connect(&application, finishCheck);
8811 application.SendNotification();
8812 application.SendNotification();
8813 application.Render(static_cast<unsigned int>(durationSeconds*500.0f));
8814 application.SendNotification();
8815 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)+1);
8816 application.SendNotification();
8818 DALI_TEST_EQUALS( actor.IsVisible(), true, TEST_LOCATION);
8819 finishCheck.CheckSignalReceived();
8823 int UtcDaliAnimationAnimateBetweenActorVisibleCubicP(void)
8825 TestApplication application;
8827 Actor actor = Actor::New();
8828 AngleAxis aa(Degree(90), Vector3::XAXIS);
8829 actor.SetOrientation(aa.angle, aa.axis);
8830 Stage::GetCurrent().Add(actor);
8832 application.SendNotification();
8833 application.Render(0);
8835 DALI_TEST_EQUALS( actor.IsVisible(), true, TEST_LOCATION );
8837 // Build the animation
8838 float durationSeconds(1.0f);
8839 Animation animation = Animation::New(durationSeconds);
8841 KeyFrames keyFrames = KeyFrames::New();
8842 keyFrames.Add(0.0f, false);
8843 keyFrames.Add(0.2f, true);
8844 keyFrames.Add(0.4f, true);
8845 keyFrames.Add(0.8f, false);
8846 keyFrames.Add(1.0f, true);
8848 //Cubic interpolation for boolean values should be ignored
8849 animation.AnimateBetween( Property(actor, Actor::Property::VISIBLE), keyFrames, Animation::Cubic );
8851 // Start the animation
8854 bool signalReceived(false);
8855 AnimationFinishCheck finishCheck(signalReceived);
8856 animation.FinishedSignal().Connect(&application, finishCheck);
8857 application.SendNotification();
8858 application.SendNotification();
8859 application.Render(static_cast<unsigned int>(durationSeconds*500.0f));
8860 application.SendNotification();
8861 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)+1);
8862 application.SendNotification();
8864 DALI_TEST_EQUALS( actor.IsVisible(), true, TEST_LOCATION);
8865 finishCheck.CheckSignalReceived();
8869 int UtcDaliAnimationAnimateBetweenActorOrientation01P(void)
8871 TestApplication application;
8873 Actor actor = Actor::New();
8874 AngleAxis aa(Degree(90), Vector3::XAXIS);
8875 actor.SetOrientation(aa.angle, aa.axis);
8876 Stage::GetCurrent().Add(actor);
8878 application.SendNotification();
8879 application.Render(0);
8880 Quaternion start(Radian(aa.angle), aa.axis);
8881 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), start, 0.001f, TEST_LOCATION );
8883 // Build the animation
8884 float durationSeconds(1.0f);
8885 Animation animation = Animation::New(durationSeconds);
8887 KeyFrames keyFrames = KeyFrames::New();
8888 keyFrames.Add(0.0f, AngleAxis(Degree(60), Vector3::ZAXIS));
8890 animation.AnimateBetween( Property(actor, Actor::Property::ORIENTATION), keyFrames );
8892 // Start the animation
8895 bool signalReceived(false);
8896 AnimationFinishCheck finishCheck(signalReceived);
8897 animation.FinishedSignal().Connect(&application, finishCheck);
8898 application.SendNotification();
8899 application.SendNotification();
8900 application.Render(static_cast<unsigned int>(durationSeconds*500.0f));
8901 application.SendNotification();
8902 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)+1);
8903 application.SendNotification();
8905 Quaternion check( Radian(Degree(60)), Vector3::ZAXIS );
8907 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), check, 0.001f, TEST_LOCATION );
8908 finishCheck.CheckSignalReceived();
8912 int UtcDaliAnimationAnimateBetweenActorOrientation02P(void)
8914 TestApplication application;
8916 Actor actor = Actor::New();
8917 AngleAxis aa(Degree(90), Vector3::XAXIS);
8918 actor.SetOrientation(aa.angle, aa.axis);
8919 application.SendNotification();
8920 application.Render(0);
8921 Stage::GetCurrent().Add(actor);
8923 Quaternion start(Radian(aa.angle), aa.axis);
8924 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), start, 0.001f, TEST_LOCATION );
8926 // Build the animation
8927 float durationSeconds(1.0f);
8928 Animation animation = Animation::New(durationSeconds);
8930 KeyFrames keyFrames = KeyFrames::New();
8931 keyFrames.Add(0.0f, AngleAxis(Degree(60), Vector3::XAXIS));
8932 keyFrames.Add(0.5f, AngleAxis(Degree(120), Vector3::XAXIS));
8933 keyFrames.Add(1.0f, AngleAxis(Degree(120), Vector3::YAXIS));
8935 animation.AnimateBetween( Property(actor, Actor::Property::ORIENTATION), keyFrames );
8937 // Start the animation
8940 bool signalReceived(false);
8941 AnimationFinishCheck finishCheck(signalReceived);
8942 animation.FinishedSignal().Connect(&application, finishCheck);
8943 application.SendNotification();
8944 application.Render(0);
8945 application.SendNotification();
8946 finishCheck.CheckSignalNotReceived();
8948 Quaternion check(Radian(Degree(60)), Vector3::XAXIS);
8949 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), check, 0.001f, TEST_LOCATION );
8951 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 25% progress */);
8952 application.SendNotification();
8953 check = Quaternion( Radian(Degree(90)), Vector3::XAXIS );
8954 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), check, 0.001f, TEST_LOCATION );
8956 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 50% progress */);
8957 application.SendNotification();
8958 check = Quaternion( Radian(Degree(120)), Vector3::XAXIS );
8959 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), check, 0.001f, TEST_LOCATION );
8961 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% progress */);
8962 application.SendNotification();
8963 check = Quaternion( Radian(Degree(101.5)), Vector3(0.5f, 0.5f, 0.0f) );
8964 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), check, 0.001f, TEST_LOCATION );
8966 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)+1/* 100% progress */);
8967 application.SendNotification();
8968 check = Quaternion( Radian(Degree(120)), Vector3::YAXIS );
8969 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), check, 0.001f, TEST_LOCATION );
8971 // We did expect the animation to finish
8973 finishCheck.CheckSignalReceived();
8977 int UtcDaliAnimationAnimateBetweenActorOrientation01CubicP(void)
8979 TestApplication application;
8981 Actor actor = Actor::New();
8982 AngleAxis aa(Degree(90), Vector3::XAXIS);
8983 actor.SetOrientation(aa.angle, aa.axis);
8984 Stage::GetCurrent().Add(actor);
8986 application.SendNotification();
8987 application.Render(0);
8988 Quaternion start(Radian(aa.angle), aa.axis);
8989 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), start, 0.001f, TEST_LOCATION );
8991 // Build the animation
8992 float durationSeconds(1.0f);
8993 Animation animation = Animation::New(durationSeconds);
8995 KeyFrames keyFrames = KeyFrames::New();
8996 keyFrames.Add(0.0f, AngleAxis(Degree(60), Vector3::ZAXIS));
8998 //Cubic interpolation should be ignored for quaternions
8999 animation.AnimateBetween( Property(actor, Actor::Property::ORIENTATION), keyFrames, Animation::Cubic );
9001 // Start the animation
9004 bool signalReceived(false);
9005 AnimationFinishCheck finishCheck(signalReceived);
9006 animation.FinishedSignal().Connect(&application, finishCheck);
9007 application.SendNotification();
9008 application.SendNotification();
9009 application.Render(static_cast<unsigned int>(durationSeconds*500.0f));
9010 application.SendNotification();
9011 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)+1);
9012 application.SendNotification();
9014 Quaternion check( Radian(Degree(60)), Vector3::ZAXIS );
9016 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), check, 0.001f, TEST_LOCATION );
9017 finishCheck.CheckSignalReceived();
9021 int UtcDaliAnimationAnimateBetweenActorOrientation02CubicP(void)
9023 TestApplication application;
9025 Actor actor = Actor::New();
9026 AngleAxis aa(Degree(90), Vector3::XAXIS);
9027 actor.SetOrientation(aa.angle, aa.axis);
9028 application.SendNotification();
9029 application.Render(0);
9030 Stage::GetCurrent().Add(actor);
9032 Quaternion start(Radian(aa.angle), aa.axis);
9033 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), start, 0.001f, TEST_LOCATION );
9035 // Build the animation
9036 float durationSeconds(1.0f);
9037 Animation animation = Animation::New(durationSeconds);
9039 KeyFrames keyFrames = KeyFrames::New();
9040 keyFrames.Add(0.0f, AngleAxis(Degree(60), Vector3::XAXIS));
9041 keyFrames.Add(0.5f, AngleAxis(Degree(120), Vector3::XAXIS));
9042 keyFrames.Add(1.0f, AngleAxis(Degree(120), Vector3::YAXIS));
9044 //Cubic interpolation should be ignored for quaternions
9045 animation.AnimateBetween( Property(actor, Actor::Property::ORIENTATION), keyFrames, Animation::Cubic );
9047 // Start the animation
9050 bool signalReceived(false);
9051 AnimationFinishCheck finishCheck(signalReceived);
9052 animation.FinishedSignal().Connect(&application, finishCheck);
9053 application.SendNotification();
9054 application.Render(0);
9055 application.SendNotification();
9056 finishCheck.CheckSignalNotReceived();
9058 Quaternion check(Radian(Degree(60)), Vector3::XAXIS);
9059 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), check, 0.001f, TEST_LOCATION );
9061 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 25% progress */);
9062 application.SendNotification();
9063 check = Quaternion( Radian(Degree(90)), Vector3::XAXIS );
9064 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), check, 0.001f, TEST_LOCATION );
9066 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 50% progress */);
9067 application.SendNotification();
9068 check = Quaternion( Radian(Degree(120)), Vector3::XAXIS );
9069 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), check, 0.001f, TEST_LOCATION );
9071 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% progress */);
9072 application.SendNotification();
9073 check = Quaternion( Radian(Degree(101.5)), Vector3(0.5f, 0.5f, 0.0f ) );
9074 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), check, 0.001f, TEST_LOCATION );
9076 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)+1/* 100% progress */);
9077 application.SendNotification();
9078 check = Quaternion( Radian(Degree(120)), Vector3::YAXIS );
9079 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), check, 0.001f, TEST_LOCATION );
9081 // We did expect the animation to finish
9083 finishCheck.CheckSignalReceived();
9087 int UtcDaliAnimationAnimateBetweenActorColorAlphaFunctionP(void)
9089 TestApplication application;
9091 float startValue(1.0f);
9092 Actor actor = Actor::New();
9093 actor.SetColor(Vector4(startValue, startValue, startValue, startValue));
9094 Stage::GetCurrent().Add(actor);
9096 DALI_TEST_EQUALS( actor.GetCurrentColor().a, startValue, TEST_LOCATION );
9097 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
9098 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
9099 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
9100 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_ALPHA), startValue, TEST_LOCATION );
9101 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
9102 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
9103 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
9104 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), startValue, TEST_LOCATION );
9106 // Build the animation
9107 float durationSeconds(1.0f);
9108 Animation animation = Animation::New(durationSeconds);
9110 KeyFrames keyFrames = KeyFrames::New();
9111 keyFrames.Add(0.0f, Vector4(0.1f, 0.2f, 0.3f, 0.4f));
9112 keyFrames.Add(0.5f, Vector4(0.9f, 0.8f, 0.7f, 0.6f));
9113 keyFrames.Add(1.0f, Vector4(1.0f, 1.0f, 1.0f, 1.0f));
9115 animation.AnimateBetween( Property(actor, Actor::Property::COLOR), keyFrames, AlphaFunction::LINEAR );
9117 // Start the animation
9120 bool signalReceived(false);
9121 AnimationFinishCheck finishCheck(signalReceived);
9122 animation.FinishedSignal().Connect(&application, finishCheck);
9123 application.SendNotification();
9124 application.Render(0);
9125 application.SendNotification();
9126 finishCheck.CheckSignalNotReceived();
9127 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.1f, 0.01f, TEST_LOCATION );
9128 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.2f, 0.01f, TEST_LOCATION );
9129 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.3f, 0.01f, TEST_LOCATION );
9130 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.4f, 0.01f, TEST_LOCATION );
9132 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 25% progress */);
9133 application.SendNotification();
9134 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.5f, 0.01f, TEST_LOCATION );
9135 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.5f, 0.01f, TEST_LOCATION );
9136 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.5f, 0.01f, TEST_LOCATION );
9137 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.5f, 0.01f, TEST_LOCATION );
9139 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 50% progress */);
9140 application.SendNotification();
9141 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.9f, 0.01f, TEST_LOCATION );
9142 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.8f, 0.01f, TEST_LOCATION );
9143 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.7f, 0.01f, TEST_LOCATION );
9144 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.6f, 0.01f, TEST_LOCATION );
9146 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% progress */);
9147 application.SendNotification();
9148 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.95f, 0.01f, TEST_LOCATION );
9149 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.90f, 0.01f, TEST_LOCATION );
9150 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.85f, 0.01f, TEST_LOCATION );
9151 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.80f, 0.01f, TEST_LOCATION );
9153 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)+1/* 100% progress */);
9154 application.SendNotification();
9155 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 1.0f, 0.01f, TEST_LOCATION );
9156 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 1.0f, 0.01f, TEST_LOCATION );
9157 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 1.0f, 0.01f, TEST_LOCATION );
9158 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 1.0f, 0.01f, TEST_LOCATION );
9160 // We did expect the animation to finish
9162 finishCheck.CheckSignalReceived();
9166 int UtcDaliAnimationAnimateBetweenActorColorAlphaFunctionCubicP(void)
9168 TestApplication application;
9170 float startValue(1.0f);
9171 Actor actor = Actor::New();
9172 actor.SetColor(Vector4(startValue, startValue, startValue, startValue));
9173 Stage::GetCurrent().Add(actor);
9175 DALI_TEST_EQUALS( actor.GetCurrentColor().a, startValue, TEST_LOCATION );
9176 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
9177 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
9178 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
9179 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_ALPHA), startValue, TEST_LOCATION );
9180 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
9181 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
9182 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
9183 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), startValue, TEST_LOCATION );
9185 // Build the animation
9186 float durationSeconds(1.0f);
9187 Animation animation = Animation::New(durationSeconds);
9189 KeyFrames keyFrames = KeyFrames::New();
9190 keyFrames.Add(0.0f, Vector4(0.1f, 0.2f, 0.3f, 0.4f));
9191 keyFrames.Add(0.5f, Vector4(0.9f, 0.8f, 0.7f, 0.6f));
9192 keyFrames.Add(1.0f, Vector4(1.0f, 1.0f, 1.0f, 1.0f));
9194 animation.AnimateBetween( Property(actor, Actor::Property::COLOR), keyFrames, AlphaFunction::LINEAR, Animation::Cubic );
9196 // Start the animation
9199 bool signalReceived(false);
9200 AnimationFinishCheck finishCheck(signalReceived);
9201 animation.FinishedSignal().Connect(&application, finishCheck);
9202 application.SendNotification();
9203 application.Render(0);
9204 application.SendNotification();
9205 finishCheck.CheckSignalNotReceived();
9206 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.1f, 0.01f, TEST_LOCATION );
9207 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.2f, 0.01f, TEST_LOCATION );
9208 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.3f, 0.01f, TEST_LOCATION );
9209 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.4f, 0.01f, TEST_LOCATION );
9211 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 25% progress */);
9212 application.SendNotification();
9213 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.55f, 0.01f, TEST_LOCATION );
9214 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.525f, 0.01f, TEST_LOCATION );
9215 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.506f, 0.01f, TEST_LOCATION );
9216 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.4875f, 0.01f, TEST_LOCATION );
9218 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 50% progress */);
9219 application.SendNotification();
9220 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.9f, 0.01f, TEST_LOCATION );
9221 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.8f, 0.01f, TEST_LOCATION );
9222 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.7f, 0.01f, TEST_LOCATION );
9223 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.6f, 0.01f, TEST_LOCATION );
9225 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% progress */);
9226 application.SendNotification();
9227 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.99375f, 0.01f, TEST_LOCATION );
9228 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.925f, 0.01f, TEST_LOCATION );
9229 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.85625f, 0.01f, TEST_LOCATION );
9230 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.7875f, 0.01f, TEST_LOCATION );
9232 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)+1/* 100% progress */);
9233 application.SendNotification();
9234 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 1.0f, 0.01f, TEST_LOCATION );
9235 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 1.0f, 0.01f, TEST_LOCATION );
9236 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 1.0f, 0.01f, TEST_LOCATION );
9237 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 1.0f, 0.01f, TEST_LOCATION );
9239 // We did expect the animation to finish
9241 finishCheck.CheckSignalReceived();
9245 int UtcDaliAnimationAnimateBetweenActorColorTimePeriodP(void)
9247 TestApplication application;
9249 float startValue(1.0f);
9250 Actor actor = Actor::New();
9251 actor.SetColor(Vector4(startValue, startValue, startValue, startValue));
9252 Stage::GetCurrent().Add(actor);
9254 DALI_TEST_EQUALS( actor.GetCurrentColor().a, startValue, TEST_LOCATION );
9255 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
9256 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
9257 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
9258 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_ALPHA), startValue, TEST_LOCATION );
9259 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
9260 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
9261 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
9262 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), startValue, TEST_LOCATION );
9264 // Build the animation
9265 float durationSeconds(1.0f);
9267 Animation animation = Animation::New(durationSeconds);
9269 KeyFrames keyFrames = KeyFrames::New();
9270 keyFrames.Add(0.0f, Vector4(0.1f, 0.2f, 0.3f, 0.4f));
9271 keyFrames.Add(0.5f, Vector4(0.9f, 0.8f, 0.7f, 0.6f));
9272 keyFrames.Add(1.0f, Vector4(1.0f, 1.0f, 1.0f, 1.0f));
9274 animation.AnimateBetween( Property(actor, Actor::Property::COLOR), keyFrames, TimePeriod( delay, durationSeconds - delay ) );
9276 // Start the animation
9279 bool signalReceived(false);
9280 AnimationFinishCheck finishCheck(signalReceived);
9281 animation.FinishedSignal().Connect(&application, finishCheck);
9282 application.SendNotification();
9284 application.Render(static_cast<unsigned int>(delay*1000.0f)/* 0% progress */);
9285 application.SendNotification();
9286 finishCheck.CheckSignalNotReceived();
9287 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.1f, 0.01f, TEST_LOCATION );
9288 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.2f, 0.01f, TEST_LOCATION );
9289 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.3f, 0.01f, TEST_LOCATION );
9290 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.4f, 0.01f, TEST_LOCATION );
9292 application.Render(static_cast<unsigned int>((durationSeconds - delay)*250.0f)/* 25% progress */);
9293 application.SendNotification();
9294 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.5f, 0.01f, TEST_LOCATION );
9295 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.5f, 0.01f, TEST_LOCATION );
9296 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.5f, 0.01f, TEST_LOCATION );
9297 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.5f, 0.01f, TEST_LOCATION );
9299 application.Render(static_cast<unsigned int>((durationSeconds - delay)*250.0f)/* 50% progress */);
9300 application.SendNotification();
9301 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.9f, 0.01f, TEST_LOCATION );
9302 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.8f, 0.01f, TEST_LOCATION );
9303 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.7f, 0.01f, TEST_LOCATION );
9304 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.6f, 0.01f, TEST_LOCATION );
9306 application.Render(static_cast<unsigned int>((durationSeconds - delay)*250.0f)/* 75% progress */);
9307 application.SendNotification();
9308 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.95f, 0.01f, TEST_LOCATION );
9309 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.90f, 0.01f, TEST_LOCATION );
9310 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.85f, 0.01f, TEST_LOCATION );
9311 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.80f, 0.01f, TEST_LOCATION );
9313 application.Render(static_cast<unsigned int>((durationSeconds - delay)*250.0f)+1/* 100% progress */);
9314 application.SendNotification();
9315 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 1.0f, 0.01f, TEST_LOCATION );
9316 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 1.0f, 0.01f, TEST_LOCATION );
9317 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 1.0f, 0.01f, TEST_LOCATION );
9318 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 1.0f, 0.01f, TEST_LOCATION );
9320 // We did expect the animation to finish
9322 finishCheck.CheckSignalReceived();
9326 int UtcDaliAnimationAnimateBetweenActorColorTimePeriodCubicP(void)
9328 TestApplication application;
9330 float startValue(1.0f);
9331 Actor actor = Actor::New();
9332 actor.SetColor(Vector4(startValue, startValue, startValue, startValue));
9333 Stage::GetCurrent().Add(actor);
9335 DALI_TEST_EQUALS( actor.GetCurrentColor().a, startValue, TEST_LOCATION );
9336 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
9337 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
9338 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
9339 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_ALPHA), startValue, TEST_LOCATION );
9340 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
9341 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
9342 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
9343 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), startValue, TEST_LOCATION );
9345 // Build the animation
9346 float durationSeconds(1.0f);
9348 Animation animation = Animation::New(durationSeconds);
9350 KeyFrames keyFrames = KeyFrames::New();
9351 keyFrames.Add(0.0f, Vector4(0.1f, 0.2f, 0.3f, 0.4f));
9352 keyFrames.Add(0.5f, Vector4(0.9f, 0.8f, 0.7f, 0.6f));
9353 keyFrames.Add(1.0f, Vector4(1.0f, 1.0f, 1.0f, 1.0f));
9355 animation.AnimateBetween( Property(actor, Actor::Property::COLOR), keyFrames, TimePeriod( delay, durationSeconds - delay ), Animation::Cubic );
9357 // Start the animation
9360 bool signalReceived(false);
9361 AnimationFinishCheck finishCheck(signalReceived);
9362 animation.FinishedSignal().Connect(&application, finishCheck);
9363 application.SendNotification();
9365 application.Render(static_cast<unsigned int>(delay*1000.0f)/* 0% progress */);
9366 application.SendNotification();
9367 finishCheck.CheckSignalNotReceived();
9368 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.1f, 0.01f, TEST_LOCATION );
9369 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.2f, 0.01f, TEST_LOCATION );
9370 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.3f, 0.01f, TEST_LOCATION );
9371 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.4f, 0.01f, TEST_LOCATION );
9373 application.Render(static_cast<unsigned int>((durationSeconds - delay)*250.0f)/* 25% progress */);
9374 application.SendNotification();
9375 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.55f, 0.01f, TEST_LOCATION );
9376 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.525f, 0.01f, TEST_LOCATION );
9377 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.506f, 0.01f, TEST_LOCATION );
9378 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.4875f, 0.01f, TEST_LOCATION );
9380 application.Render(static_cast<unsigned int>((durationSeconds - delay)*250.0f)/* 50% progress */);
9381 application.SendNotification();
9382 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.9f, 0.01f, TEST_LOCATION );
9383 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN), 0.8f, 0.01f, TEST_LOCATION );
9384 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.7f, 0.01f, TEST_LOCATION );
9385 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.6f, 0.01f, TEST_LOCATION );
9387 application.Render(static_cast<unsigned int>((durationSeconds - delay)*250.0f)/* 75% progress */);
9388 application.SendNotification();
9389 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.99375f, 0.01f, TEST_LOCATION );
9390 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.925f, 0.01f, TEST_LOCATION );
9391 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.85625f, 0.01f, TEST_LOCATION );
9392 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.7875f, 0.01f, TEST_LOCATION );
9394 application.Render(static_cast<unsigned int>((durationSeconds - delay)*250.0f)+1/* 100% progress */);
9395 application.SendNotification();
9396 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 1.0f, 0.01f, TEST_LOCATION );
9397 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 1.0f, 0.01f, TEST_LOCATION );
9398 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 1.0f, 0.01f, TEST_LOCATION );
9399 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 1.0f, 0.01f, TEST_LOCATION );
9401 // We did expect the animation to finish
9403 finishCheck.CheckSignalReceived();
9407 int UtcDaliAnimationAnimateBetweenActorColorAlphaFunctionTimePeriodP(void)
9409 TestApplication application;
9411 float startValue(1.0f);
9413 Actor actor = Actor::New();
9414 actor.SetColor(Vector4(startValue, startValue, startValue, startValue));
9415 Stage::GetCurrent().Add(actor);
9417 DALI_TEST_EQUALS( actor.GetCurrentColor().a, startValue, TEST_LOCATION );
9418 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
9419 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
9420 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
9421 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_ALPHA), startValue, TEST_LOCATION );
9422 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
9423 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
9424 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
9425 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), startValue, TEST_LOCATION );
9427 // Build the animation
9428 float durationSeconds(1.0f);
9429 Animation animation = Animation::New(durationSeconds);
9431 KeyFrames keyFrames = KeyFrames::New();
9432 keyFrames.Add(0.0f, Vector4(0.1f, 0.2f, 0.3f, 0.4f));
9433 keyFrames.Add(0.5f, Vector4(0.9f, 0.8f, 0.7f, 0.6f));
9434 keyFrames.Add(1.0f, Vector4(1.0f, 1.0f, 1.0f, 1.0f));
9436 animation.AnimateBetween( Property(actor, Actor::Property::COLOR), keyFrames, AlphaFunction::LINEAR, TimePeriod( delay, durationSeconds - delay ) );
9438 // Start the animation
9441 bool signalReceived(false);
9442 AnimationFinishCheck finishCheck(signalReceived);
9443 animation.FinishedSignal().Connect(&application, finishCheck);
9444 application.SendNotification();
9446 application.Render(static_cast<unsigned int>(delay*1000.0f)/* 0% progress */);
9447 application.SendNotification();
9448 finishCheck.CheckSignalNotReceived();
9449 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.1f, 0.01f, TEST_LOCATION );
9450 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.2f, 0.01f, TEST_LOCATION );
9451 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.3f, 0.01f, TEST_LOCATION );
9452 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.4f, 0.01f, TEST_LOCATION );
9454 application.Render(static_cast<unsigned int>((durationSeconds - delay)*250.0f)/* 25% progress */);
9455 application.SendNotification();
9456 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.5f, 0.01f, TEST_LOCATION );
9457 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.5f, 0.01f, TEST_LOCATION );
9458 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.5f, 0.01f, TEST_LOCATION );
9459 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.5f, 0.01f, TEST_LOCATION );
9461 application.Render(static_cast<unsigned int>((durationSeconds - delay)*250.0f)/* 50% progress */);
9462 application.SendNotification();
9463 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.9f, 0.01f, TEST_LOCATION );
9464 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.8f, 0.01f, TEST_LOCATION );
9465 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.7f, 0.01f, TEST_LOCATION );
9466 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.6f, 0.01f, TEST_LOCATION );
9468 application.Render(static_cast<unsigned int>((durationSeconds - delay)*250.0f)/* 75% progress */);
9469 application.SendNotification();
9470 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.95f, 0.01f, TEST_LOCATION );
9471 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.90f, 0.01f, TEST_LOCATION );
9472 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.85f, 0.01f, TEST_LOCATION );
9473 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.80f, 0.01f, TEST_LOCATION );
9475 application.Render(static_cast<unsigned int>((durationSeconds - delay)*250.0f)+1/* 100% progress */);
9476 application.SendNotification();
9477 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 1.0f, 0.01f, TEST_LOCATION );
9478 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 1.0f, 0.01f, TEST_LOCATION );
9479 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 1.0f, 0.01f, TEST_LOCATION );
9480 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 1.0f, 0.01f, TEST_LOCATION );
9482 // We did expect the animation to finish
9484 finishCheck.CheckSignalReceived();
9488 int UtcDaliAnimationAnimateBetweenActorColorCubicWithDelayP(void)
9490 TestApplication application;
9492 float startValue(1.0f);
9493 Actor actor = Actor::New();
9494 actor.SetColor(Vector4(startValue, startValue, startValue, startValue));
9495 Stage::GetCurrent().Add(actor);
9497 DALI_TEST_EQUALS( actor.GetCurrentColor().a, startValue, TEST_LOCATION );
9498 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_RED), startValue, TEST_LOCATION );
9499 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_GREEN), startValue, TEST_LOCATION );
9500 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_BLUE), startValue, TEST_LOCATION );
9501 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_ALPHA), startValue, TEST_LOCATION );
9502 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), startValue, TEST_LOCATION );
9503 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), startValue, TEST_LOCATION );
9504 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), startValue, TEST_LOCATION );
9505 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), startValue, TEST_LOCATION );
9508 // Build the animation
9509 float durationSeconds(1.0f);
9511 Animation animation = Animation::New(durationSeconds);
9513 KeyFrames keyFrames = KeyFrames::New();
9514 keyFrames.Add(0.0f, Vector4(0.1f, 0.2f, 0.3f, 0.4f));
9515 keyFrames.Add(0.5f, Vector4(0.9f, 0.8f, 0.7f, 0.6f));
9516 keyFrames.Add(1.0f, Vector4(1.0f, 1.0f, 1.0f, 1.0f));
9518 animation.AnimateBetween( Property(actor, Actor::Property::COLOR), keyFrames, AlphaFunction::LINEAR, TimePeriod( delay, durationSeconds - delay ), Animation::Cubic );
9520 // Start the animation
9523 bool signalReceived(false);
9524 AnimationFinishCheck finishCheck(signalReceived);
9525 animation.FinishedSignal().Connect(&application, finishCheck);
9526 application.SendNotification();
9528 application.Render(static_cast<unsigned int>(delay*1000.0f)/* 0% progress */);
9529 application.SendNotification();
9530 finishCheck.CheckSignalNotReceived();
9531 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.1f, 0.01f, TEST_LOCATION );
9532 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.2f, 0.01f, TEST_LOCATION );
9533 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.3f, 0.01f, TEST_LOCATION );
9534 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.4f, 0.01f, TEST_LOCATION );
9536 application.Render(static_cast<unsigned int>((durationSeconds - delay)*250.0f)/* 25% progress */);
9537 application.SendNotification();
9538 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.55f, 0.01f, TEST_LOCATION );
9539 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.525f, 0.01f, TEST_LOCATION );
9540 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.506f, 0.01f, TEST_LOCATION );
9541 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.4875f, 0.01f, TEST_LOCATION );
9543 application.Render(static_cast<unsigned int>((durationSeconds - delay)*250.0f)/* 50% progress */);
9544 application.SendNotification();
9545 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.9f, 0.01f, TEST_LOCATION );
9546 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.8f, 0.01f, TEST_LOCATION );
9547 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.7f, 0.01f, TEST_LOCATION );
9548 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.6f, 0.01f, TEST_LOCATION );
9550 application.Render(static_cast<unsigned int>((durationSeconds - delay)*250.0f)/* 75% progress */);
9551 application.SendNotification();
9552 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 0.99375f, 0.01f, TEST_LOCATION );
9553 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 0.925f, 0.01f, TEST_LOCATION );
9554 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 0.85625f, 0.01f, TEST_LOCATION );
9555 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 0.7875f, 0.01f, TEST_LOCATION );
9557 application.Render(static_cast<unsigned int>((durationSeconds - delay)*250.0f)+1/* 100% progress */);
9558 application.SendNotification();
9559 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_RED ), 1.0f, 0.01f, TEST_LOCATION );
9560 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_GREEN ), 1.0f, 0.01f, TEST_LOCATION );
9561 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_BLUE ), 1.0f, 0.01f, TEST_LOCATION );
9562 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, Actor::Property::COLOR_ALPHA ), 1.0f, 0.01f, TEST_LOCATION );
9564 // We did expect the animation to finish
9566 finishCheck.CheckSignalReceived();
9570 int UtcDaliAnimationAnimateP(void)
9572 TestApplication application;
9574 Actor actor = Actor::New();
9575 Stage::GetCurrent().Add(actor);
9578 Vector3 position0( 30.0, 80.0, 0.0);
9579 Vector3 position1( 70.0, 120.0, 0.0);
9580 Vector3 position2( 100.0, 100.0, 0.0);
9582 Dali::Path path = Dali::Path::New();
9583 path.AddPoint(position0);
9584 path.AddPoint(position1);
9585 path.AddPoint(position2);
9587 //Control points for first segment
9588 path.AddControlPoint( Vector3( 39.0, 90.0, 0.0) );
9589 path.AddControlPoint(Vector3( 56.0, 119.0, 0.0) );
9591 //Control points for second segment
9592 path.AddControlPoint(Vector3( 78.0, 120.0, 0.0));
9593 path.AddControlPoint(Vector3( 93.0, 104.0, 0.0));
9595 // Build the animation
9596 float durationSeconds( 1.0f );
9597 Animation animation = Animation::New(durationSeconds);
9598 animation.Animate(actor, path, Vector3::XAXIS);
9600 // Start the animation
9603 bool signalReceived(false);
9604 AnimationFinishCheck finishCheck(signalReceived);
9605 animation.FinishedSignal().Connect(&application, finishCheck);
9606 application.SendNotification();
9607 application.Render(0);
9608 application.SendNotification();
9609 finishCheck.CheckSignalNotReceived();
9610 Vector3 position, tangent;
9611 Quaternion rotation;
9612 path.Sample( 0.0f, position, tangent );
9613 rotation = Quaternion( Vector3::XAXIS, tangent );
9614 DALI_TEST_EQUALS( actor.GetCurrentPosition(), position, TEST_LOCATION );
9615 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), rotation, TEST_LOCATION );
9617 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 25% progress */);
9618 application.SendNotification();
9619 path.Sample( 0.25f, position, tangent );
9620 rotation = Quaternion( Vector3::XAXIS, tangent );
9621 DALI_TEST_EQUALS( actor.GetCurrentPosition(), position, TEST_LOCATION );
9622 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), rotation, TEST_LOCATION );
9624 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 50% progress */);
9625 application.SendNotification();
9626 path.Sample( 0.5f, position, tangent );
9627 rotation = Quaternion( Vector3::XAXIS, tangent );
9628 DALI_TEST_EQUALS( actor.GetCurrentPosition(), position, TEST_LOCATION );
9629 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), rotation, TEST_LOCATION );
9631 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% progress */);
9632 application.SendNotification();
9633 path.Sample( 0.75f, position, tangent );
9634 rotation = Quaternion( Vector3::XAXIS, tangent );
9635 DALI_TEST_EQUALS( actor.GetCurrentPosition(), position, TEST_LOCATION );
9636 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), rotation, TEST_LOCATION );
9638 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)+1/* 100% progress */);
9639 application.SendNotification();
9640 path.Sample( 1.0f, position, tangent );
9641 rotation = Quaternion( Vector3::XAXIS, tangent );
9642 DALI_TEST_EQUALS( actor.GetCurrentPosition(), position, TEST_LOCATION );
9643 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), rotation, TEST_LOCATION );
9645 finishCheck.CheckSignalReceived();
9649 int UtcDaliAnimationAnimateAlphaFunctionP(void)
9651 TestApplication application;
9653 Actor actor = Actor::New();
9654 Stage::GetCurrent().Add(actor);
9657 Vector3 position0( 30.0, 80.0, 0.0);
9658 Vector3 position1( 70.0, 120.0, 0.0);
9659 Vector3 position2( 100.0, 100.0, 0.0);
9661 Dali::Path path = Dali::Path::New();
9662 path.AddPoint(position0);
9663 path.AddPoint(position1);
9664 path.AddPoint(position2);
9666 //Control points for first segment
9667 path.AddControlPoint( Vector3( 39.0, 90.0, 0.0) );
9668 path.AddControlPoint(Vector3( 56.0, 119.0, 0.0) );
9670 //Control points for second segment
9671 path.AddControlPoint(Vector3( 78.0, 120.0, 0.0));
9672 path.AddControlPoint(Vector3( 93.0, 104.0, 0.0));
9674 // Build the animation
9675 float durationSeconds( 1.0f );
9676 Animation animation = Animation::New(durationSeconds);
9677 animation.Animate(actor, path, Vector3::XAXIS, AlphaFunction::LINEAR);
9679 // Start the animation
9682 bool signalReceived(false);
9683 AnimationFinishCheck finishCheck(signalReceived);
9684 animation.FinishedSignal().Connect(&application, finishCheck);
9685 application.SendNotification();
9686 application.Render(0);
9687 application.SendNotification();
9688 finishCheck.CheckSignalNotReceived();
9689 Vector3 position, tangent;
9690 Quaternion rotation;
9691 path.Sample( 0.0f, position, tangent );
9692 rotation = Quaternion( Vector3::XAXIS, tangent );
9693 DALI_TEST_EQUALS( actor.GetCurrentPosition(), position, TEST_LOCATION );
9694 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), rotation, TEST_LOCATION );
9696 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 25% progress */);
9697 application.SendNotification();
9698 path.Sample( 0.25f, position, tangent );
9699 rotation = Quaternion( Vector3::XAXIS, tangent );
9700 DALI_TEST_EQUALS( actor.GetCurrentPosition(), position, TEST_LOCATION );
9701 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), rotation, TEST_LOCATION );
9703 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 50% progress */);
9704 application.SendNotification();
9705 path.Sample( 0.5f, position, tangent );
9706 rotation = Quaternion( Vector3::XAXIS, tangent );
9707 DALI_TEST_EQUALS( actor.GetCurrentPosition(), position, TEST_LOCATION );
9708 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), rotation, TEST_LOCATION );
9710 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% progress */);
9711 application.SendNotification();
9712 path.Sample( 0.75f, position, tangent );
9713 rotation = Quaternion( Vector3::XAXIS, tangent );
9714 DALI_TEST_EQUALS( actor.GetCurrentPosition(), position, TEST_LOCATION );
9715 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), rotation, TEST_LOCATION );
9717 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)+1/* 100% progress */);
9718 application.SendNotification();
9719 path.Sample( 1.0f, position, tangent );
9720 rotation = Quaternion( Vector3::XAXIS, tangent );
9721 DALI_TEST_EQUALS( actor.GetCurrentPosition(), position, TEST_LOCATION );
9722 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), rotation, TEST_LOCATION );
9724 finishCheck.CheckSignalReceived();
9728 int UtcDaliAnimationAnimateTimePeriodP(void)
9730 TestApplication application;
9732 Actor actor = Actor::New();
9733 Stage::GetCurrent().Add(actor);
9736 Vector3 position0( 30.0, 80.0, 0.0);
9737 Vector3 position1( 70.0, 120.0, 0.0);
9738 Vector3 position2( 100.0, 100.0, 0.0);
9740 Dali::Path path = Dali::Path::New();
9741 path.AddPoint(position0);
9742 path.AddPoint(position1);
9743 path.AddPoint(position2);
9745 //Control points for first segment
9746 path.AddControlPoint( Vector3( 39.0, 90.0, 0.0) );
9747 path.AddControlPoint(Vector3( 56.0, 119.0, 0.0) );
9749 //Control points for second segment
9750 path.AddControlPoint(Vector3( 78.0, 120.0, 0.0));
9751 path.AddControlPoint(Vector3( 93.0, 104.0, 0.0));
9753 // Build the animation
9754 float durationSeconds( 1.0f );
9755 Animation animation = Animation::New(durationSeconds);
9756 animation.Animate(actor, path, Vector3::XAXIS, TimePeriod(0.0f, 1.0f));
9758 // Start the animation
9761 bool signalReceived(false);
9762 AnimationFinishCheck finishCheck(signalReceived);
9763 animation.FinishedSignal().Connect(&application, finishCheck);
9764 application.SendNotification();
9765 application.Render(0);
9766 application.SendNotification();
9767 finishCheck.CheckSignalNotReceived();
9768 Vector3 position, tangent;
9769 Quaternion rotation;
9770 path.Sample( 0.0f, position, tangent );
9771 rotation = Quaternion( Vector3::XAXIS, tangent );
9772 DALI_TEST_EQUALS( actor.GetCurrentPosition(), position, TEST_LOCATION );
9773 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), rotation, TEST_LOCATION );
9775 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 25% progress */);
9776 application.SendNotification();
9777 path.Sample( 0.25f, position, tangent );
9778 rotation = Quaternion( Vector3::XAXIS, tangent );
9779 DALI_TEST_EQUALS( actor.GetCurrentPosition(), position, TEST_LOCATION );
9780 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), rotation, TEST_LOCATION );
9782 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 50% progress */);
9783 application.SendNotification();
9784 path.Sample( 0.5f, position, tangent );
9785 rotation = Quaternion( Vector3::XAXIS, tangent );
9786 DALI_TEST_EQUALS( actor.GetCurrentPosition(), position, TEST_LOCATION );
9787 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), rotation, TEST_LOCATION );
9789 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% progress */);
9790 application.SendNotification();
9791 path.Sample( 0.75f, position, tangent );
9792 rotation = Quaternion( Vector3::XAXIS, tangent );
9793 DALI_TEST_EQUALS( actor.GetCurrentPosition(), position, TEST_LOCATION );
9794 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), rotation, TEST_LOCATION );
9796 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)+1/* 100% progress */);
9797 application.SendNotification();
9798 path.Sample( 1.0f, position, tangent );
9799 rotation = Quaternion( Vector3::XAXIS, tangent );
9800 DALI_TEST_EQUALS( actor.GetCurrentPosition(), position, TEST_LOCATION );
9801 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), rotation, TEST_LOCATION );
9803 finishCheck.CheckSignalReceived();
9807 int UtcDaliAnimationAnimateAlphaFunctionTimePeriodP(void)
9809 TestApplication application;
9811 Actor actor = Actor::New();
9812 Stage::GetCurrent().Add(actor);
9815 Vector3 position0( 30.0, 80.0, 0.0);
9816 Vector3 position1( 70.0, 120.0, 0.0);
9817 Vector3 position2( 100.0, 100.0, 0.0);
9819 Dali::Path path = Dali::Path::New();
9820 path.AddPoint(position0);
9821 path.AddPoint(position1);
9822 path.AddPoint(position2);
9824 //Control points for first segment
9825 path.AddControlPoint( Vector3( 39.0, 90.0, 0.0) );
9826 path.AddControlPoint(Vector3( 56.0, 119.0, 0.0) );
9828 //Control points for second segment
9829 path.AddControlPoint(Vector3( 78.0, 120.0, 0.0));
9830 path.AddControlPoint(Vector3( 93.0, 104.0, 0.0));
9832 // Build the animation
9833 float durationSeconds( 1.0f );
9834 Animation animation = Animation::New(durationSeconds);
9835 animation.Animate(actor, path, Vector3::XAXIS, AlphaFunction::LINEAR, TimePeriod(0.0f, 1.0f));
9837 // Start the animation
9840 bool signalReceived(false);
9841 AnimationFinishCheck finishCheck(signalReceived);
9842 animation.FinishedSignal().Connect(&application, finishCheck);
9843 application.SendNotification();
9844 application.Render(0);
9845 application.SendNotification();
9846 finishCheck.CheckSignalNotReceived();
9847 Vector3 position, tangent;
9848 Quaternion rotation;
9849 path.Sample( 0.0f, position, tangent );
9850 rotation = Quaternion( Vector3::XAXIS, tangent );
9851 DALI_TEST_EQUALS( actor.GetCurrentPosition(), position, TEST_LOCATION );
9852 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), rotation, TEST_LOCATION );
9854 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 25% progress */);
9855 application.SendNotification();
9856 path.Sample( 0.25f, position, tangent );
9857 rotation = Quaternion( Vector3::XAXIS, tangent );
9858 DALI_TEST_EQUALS( actor.GetCurrentPosition(), position, TEST_LOCATION );
9859 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), rotation, TEST_LOCATION );
9861 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 50% progress */);
9862 application.SendNotification();
9863 path.Sample( 0.5f, position, tangent );
9864 rotation = Quaternion( Vector3::XAXIS, tangent );
9865 DALI_TEST_EQUALS( actor.GetCurrentPosition(), position, TEST_LOCATION );
9866 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), rotation, TEST_LOCATION );
9868 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)/* 75% progress */);
9869 application.SendNotification();
9870 path.Sample( 0.75f, position, tangent );
9871 rotation = Quaternion( Vector3::XAXIS, tangent );
9872 DALI_TEST_EQUALS( actor.GetCurrentPosition(), position, TEST_LOCATION );
9873 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), rotation, TEST_LOCATION );
9875 application.Render(static_cast<unsigned int>(durationSeconds*250.0f)+1/* 100% progress */);
9876 application.SendNotification();
9877 path.Sample( 1.0f, position, tangent );
9878 rotation = Quaternion( Vector3::XAXIS, tangent );
9879 DALI_TEST_EQUALS( actor.GetCurrentPosition(), position, TEST_LOCATION );
9880 DALI_TEST_EQUALS( actor.GetCurrentOrientation(), rotation, TEST_LOCATION );
9882 finishCheck.CheckSignalReceived();
9886 int UtcDaliAnimationShowP(void)
9888 TestApplication application;
9890 Actor actor = Actor::New();
9891 actor.SetVisible(false);
9892 application.SendNotification();
9893 application.Render(0);
9894 DALI_TEST_CHECK( !actor.IsVisible() );
9895 Stage::GetCurrent().Add(actor);
9897 // Start the animation
9898 float durationSeconds(10.0f);
9899 Animation animation = Animation::New(durationSeconds);
9900 animation.Show(actor, durationSeconds*0.5f);
9903 bool signalReceived(false);
9904 AnimationFinishCheck finishCheck(signalReceived);
9905 animation.FinishedSignal().Connect(&application, finishCheck);
9907 application.SendNotification();
9908 application.Render(static_cast<unsigned int>(durationSeconds*490.0f));
9910 // We didn't expect the animation to finish yet
9911 application.SendNotification();
9912 finishCheck.CheckSignalNotReceived();
9913 DALI_TEST_CHECK( !actor.IsVisible() );
9915 application.SendNotification();
9916 application.Render(static_cast<unsigned int>(durationSeconds*10.0f)/*Should be shown now*/);
9918 // We didn't expect the animation to finish yet
9919 application.SendNotification();
9920 finishCheck.CheckSignalNotReceived();
9921 DALI_TEST_CHECK( actor.IsVisible() );
9923 application.SendNotification();
9924 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
9926 // We did expect the animation to finish
9927 application.SendNotification();
9928 finishCheck.CheckSignalReceived();
9929 DALI_TEST_CHECK( actor.IsVisible() );
9933 int UtcDaliAnimationHideP(void)
9935 TestApplication application;
9937 Actor actor = Actor::New();
9938 DALI_TEST_CHECK( actor.IsVisible() );
9939 Stage::GetCurrent().Add(actor);
9941 // Start the animation
9942 float durationSeconds(10.0f);
9943 Animation animation = Animation::New(durationSeconds);
9944 animation.Hide(actor, durationSeconds*0.5f);
9947 bool signalReceived(false);
9948 AnimationFinishCheck finishCheck(signalReceived);
9949 animation.FinishedSignal().Connect(&application, finishCheck);
9951 application.SendNotification();
9952 application.Render(static_cast<unsigned int>(durationSeconds*490.0f));
9954 // We didn't expect the animation to finish yet
9955 application.SendNotification();
9956 finishCheck.CheckSignalNotReceived();
9957 DALI_TEST_CHECK( actor.IsVisible() );
9959 application.SendNotification();
9960 application.Render(static_cast<unsigned int>(durationSeconds*10.0f)/*Should be hidden now*/);
9962 // We didn't expect the animation to finish yet
9963 application.SendNotification();
9964 finishCheck.CheckSignalNotReceived();
9965 DALI_TEST_CHECK( !actor.IsVisible() );
9967 application.SendNotification();
9968 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
9970 // We did expect the animation to finish
9971 application.SendNotification();
9972 finishCheck.CheckSignalReceived();
9973 DALI_TEST_CHECK( !actor.IsVisible() );
9977 int UtcDaliAnimationShowHideAtEndP(void)
9979 // Test that show/hide delay can be the same as animation duration
9980 // i.e. to show/hide at the end of the animation
9982 TestApplication application;
9984 Actor actor = Actor::New();
9985 DALI_TEST_CHECK( actor.IsVisible() );
9986 Stage::GetCurrent().Add(actor);
9988 // Start Hide animation
9989 float durationSeconds(10.0f);
9990 Animation animation = Animation::New(durationSeconds);
9991 animation.Hide(actor, durationSeconds/*Hide at end*/);
9994 bool signalReceived(false);
9995 AnimationFinishCheck finishCheck(signalReceived);
9996 animation.FinishedSignal().Connect(&application, finishCheck);
9998 application.SendNotification();
9999 application.Render(static_cast<unsigned int>(durationSeconds*1000.0f) + 1u/*just beyond the animation duration*/);
10001 // We did expect the animation to finish
10002 application.SendNotification();
10003 finishCheck.CheckSignalReceived();
10004 DALI_TEST_CHECK( !actor.IsVisible() );
10006 // Start Show animation
10007 animation = Animation::New(durationSeconds);
10008 animation.Show(actor, durationSeconds/*Show at end*/);
10009 animation.FinishedSignal().Connect(&application, finishCheck);
10012 application.SendNotification();
10013 application.Render(static_cast<unsigned int>(durationSeconds*1000.0f) + 1u/*just beyond the animation duration*/);
10015 // We did expect the animation to finish
10016 application.SendNotification();
10017 finishCheck.CheckSignalReceived();
10018 DALI_TEST_CHECK( actor.IsVisible() );
10022 int UtcDaliKeyFramesCreateDestroyP(void)
10024 tet_infoline("Testing Dali::Animation::UtcDaliKeyFramesCreateDestroy()");
10026 KeyFrames* keyFrames = new KeyFrames;
10028 DALI_TEST_CHECK( true );
10032 int UtcDaliKeyFramesDownCastP(void)
10034 TestApplication application;
10035 tet_infoline("Testing Dali::Animation::KeyFramesDownCast()");
10037 KeyFrames keyFrames = KeyFrames::New();
10038 BaseHandle object(keyFrames);
10040 KeyFrames keyFrames2 = KeyFrames::DownCast(object);
10041 DALI_TEST_CHECK(keyFrames2);
10043 KeyFrames keyFrames3 = DownCast< KeyFrames >(object);
10044 DALI_TEST_CHECK(keyFrames3);
10046 BaseHandle unInitializedObject;
10047 KeyFrames keyFrames4 = KeyFrames::DownCast(unInitializedObject);
10048 DALI_TEST_CHECK(!keyFrames4);
10050 KeyFrames keyFrames5 = DownCast< KeyFrames >(unInitializedObject);
10051 DALI_TEST_CHECK(!keyFrames5);
10055 int UtcDaliAnimationCreateDestroyP(void)
10057 TestApplication application;
10058 Animation* animation = new Animation;
10059 DALI_TEST_CHECK( animation );
10064 struct UpdateManagerTestConstraint
10066 UpdateManagerTestConstraint(TestApplication& application)
10067 : mApplication(application)
10071 void operator()( Vector3& current, const PropertyInputContainer& /* inputs */)
10073 mApplication.SendNotification(); // Process events
10076 TestApplication& mApplication;
10079 int UtcDaliAnimationUpdateManagerP(void)
10081 TestApplication application;
10083 Actor actor = Actor::New();
10084 Stage::GetCurrent().Add( actor );
10086 // Build the animation
10087 Animation animation = Animation::New( 0.0f );
10089 bool signalReceived = false;
10090 AnimationFinishCheck finishCheck( signalReceived );
10091 animation.FinishedSignal().Connect( &application, finishCheck );
10093 Vector3 startValue(1.0f, 1.0f, 1.0f);
10094 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
10095 Constraint constraint = Constraint::New<Vector3>( actor, index, UpdateManagerTestConstraint( application ) );
10096 constraint.Apply();
10098 // Apply animation to actor
10099 animation.AnimateTo( Property(actor, Actor::Property::POSITION), Vector3( 100.f, 90.f, 80.f ), AlphaFunction::LINEAR );
10100 animation.AnimateTo( Property(actor, DevelActor::Property::OPACITY), 0.3f, AlphaFunction::LINEAR );
10104 application.SendNotification();
10105 application.UpdateOnly( 16 );
10107 finishCheck.CheckSignalNotReceived();
10109 application.SendNotification(); // Process events
10111 finishCheck.CheckSignalReceived();
10116 int UtcDaliAnimationSignalOrderP(void)
10118 TestApplication application;
10120 Actor actor = Actor::New();
10121 Stage::GetCurrent().Add( actor );
10123 // Build the animations
10124 Animation animation1 = Animation::New( 0.0f ); // finishes first frame
10125 Animation animation2 = Animation::New( 0.02f ); // finishes in 20 ms
10127 bool signal1Received = false;
10128 animation1.FinishedSignal().Connect( &application, AnimationFinishCheck( signal1Received ) );
10130 bool signal2Received = false;
10131 animation2.FinishedSignal().Connect( &application, AnimationFinishCheck( signal2Received ) );
10133 // Apply animations to actor
10134 animation1.AnimateTo( Property(actor, Actor::Property::POSITION), Vector3( 3.0f, 2.0f, 1.0f ), AlphaFunction::LINEAR );
10136 animation2.AnimateTo( Property(actor, Actor::Property::SIZE ), Vector3( 10.0f, 20.0f, 30.0f ), AlphaFunction::LINEAR );
10139 DALI_TEST_EQUALS( signal1Received, false, TEST_LOCATION );
10140 DALI_TEST_EQUALS( signal2Received, false, TEST_LOCATION );
10142 application.SendNotification();
10143 application.UpdateOnly( 10 ); // 10ms progress
10145 // no notifications yet
10146 DALI_TEST_EQUALS( signal1Received, false, TEST_LOCATION );
10147 DALI_TEST_EQUALS( signal2Received, false, TEST_LOCATION );
10149 application.SendNotification();
10152 DALI_TEST_EQUALS( signal1Received, true, TEST_LOCATION );
10153 DALI_TEST_EQUALS( signal2Received, false, TEST_LOCATION );
10154 signal1Received = false;
10156 // 1st animation is complete now, do another update with no ProcessEvents in between
10157 application.UpdateOnly( 20 ); // 20ms progress
10160 application.SendNotification();
10162 // 2nd should complete now
10163 DALI_TEST_EQUALS( signal1Received, false, TEST_LOCATION );
10164 DALI_TEST_EQUALS( signal2Received, true, TEST_LOCATION );
10169 int UtcDaliAnimationExtendDurationP(void)
10171 TestApplication application;
10173 Actor actor = Actor::New();
10175 // Register a float property
10176 float startValue(10.0f);
10177 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
10178 Stage::GetCurrent().Add(actor);
10179 DALI_TEST_EQUALS( actor.GetProperty<float>(index), startValue, TEST_LOCATION );
10180 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), startValue, TEST_LOCATION );
10182 // Build the animation
10183 float initialDurationSeconds(1.0f);
10184 float animatorDelay = 5.0f;
10185 float animatorDurationSeconds(5.0f);
10186 float extendedDurationSeconds(animatorDelay+animatorDurationSeconds);
10187 Animation animation = Animation::New(initialDurationSeconds);
10188 float targetValue(30.0f);
10189 float relativeValue(targetValue - startValue);
10191 animation.AnimateTo(Property(actor, index),
10193 TimePeriod(animatorDelay, animatorDurationSeconds));
10195 // The duration should have been extended
10196 DALI_TEST_EQUALS( animation.GetDuration(), extendedDurationSeconds, TEST_LOCATION );
10198 // Start the animation
10201 bool signalReceived(false);
10202 AnimationFinishCheck finishCheck(signalReceived);
10203 animation.FinishedSignal().Connect(&application, finishCheck);
10205 application.SendNotification();
10206 application.Render(static_cast<unsigned int>(extendedDurationSeconds*500.0f)/* 50% animation progress, 0% animator progress */);
10208 // We didn't expect the animation to finish yet, but cached value should be the final one
10209 application.SendNotification();
10210 finishCheck.CheckSignalNotReceived();
10211 DALI_TEST_EQUALS( actor.GetProperty< float >( index ), targetValue, TEST_LOCATION );
10212 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), startValue, TEST_LOCATION );
10214 application.SendNotification();
10215 application.Render(static_cast<unsigned int>(extendedDurationSeconds*250.0f)/* 75% animation progress, 50% animator progress */);
10217 // We didn't expect the animation to finish yet
10218 application.SendNotification();
10219 finishCheck.CheckSignalNotReceived();
10220 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), startValue+(relativeValue*0.5f), TEST_LOCATION );
10222 application.SendNotification();
10223 application.Render(static_cast<unsigned int>(extendedDurationSeconds*250.0f) + 1u/*just beyond the animation duration*/);
10225 // We did expect the animation to finish
10226 application.SendNotification();
10227 finishCheck.CheckSignalReceived();
10228 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< float >( actor, index ), targetValue, TEST_LOCATION );
10229 DALI_TEST_EQUALS( actor.GetProperty< float >( index ), targetValue, TEST_LOCATION );
10233 int UtcDaliAnimationCustomIntProperty(void)
10235 TestApplication application;
10237 Actor actor = Actor::New();
10238 Stage::GetCurrent().Add(actor);
10239 int startValue(0u);
10241 Property::Index index = actor.RegisterProperty("anIndex", startValue);
10242 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), startValue, TEST_LOCATION );
10244 // Build the animation
10245 float durationSeconds(1.0f);
10246 Animation animation = Animation::New(durationSeconds);
10247 animation.AnimateTo( Property(actor, index), 20 );
10249 // Start the animation
10252 bool signalReceived(false);
10253 AnimationFinishCheck finishCheck(signalReceived);
10254 animation.FinishedSignal().Connect(&application, finishCheck);
10256 application.SendNotification();
10257 application.Render(static_cast<unsigned int>(durationSeconds*500.0f)/* 50% progress */);
10259 // We didn't expect the animation to finish yet
10260 application.SendNotification();
10261 finishCheck.CheckSignalNotReceived();
10262 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), 10, TEST_LOCATION );
10264 application.SendNotification();
10265 application.Render(static_cast<unsigned int>(durationSeconds*500.0f) + 1u/*just beyond the animation duration*/);
10267 // We did expect the animation to finish
10268 application.SendNotification();
10269 finishCheck.CheckSignalReceived();
10270 DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< int >( actor, index ), 20, TEST_LOCATION );
10274 int UtcDaliAnimationDuration(void)
10276 TestApplication application;
10278 Actor actor = Actor::New();
10279 Stage::GetCurrent().Add(actor);
10281 Animation animation = Animation::New( 0.0f );
10282 DALI_TEST_EQUALS( 0.0f, animation.GetDuration(), TEST_LOCATION );
10284 // The animation duration should automatically increase depending on the animator time period
10286 animation.AnimateTo( Property( actor, Actor::Property::POSITION_X ), 100.0f, TimePeriod( 0.0f, 1.0f ) );
10287 DALI_TEST_EQUALS( 1.0f, animation.GetDuration(), TEST_LOCATION );
10289 animation.AnimateTo( Property( actor, Actor::Property::POSITION_Y ), 200.0f, TimePeriod( 10.0f, 1.0f ) );
10290 DALI_TEST_EQUALS( 11.0f, animation.GetDuration(), TEST_LOCATION );
10295 int UtcDaliAnimationAnimateByNonAnimateableTypeN(void)
10297 TestApplication application;
10299 Actor actor = Actor::New();
10301 // Register an integer property
10303 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
10304 Stage::GetCurrent().Add(actor);
10305 DALI_TEST_EQUALS( actor.GetProperty<int>(index), startValue, TEST_LOCATION );
10309 // Build the animation
10310 Animation animation = Animation::New( 2.0f );
10311 std::string relativeValue = "relative string";
10312 animation.AnimateBy( Property(actor, index), relativeValue );
10313 tet_result(TET_FAIL);
10315 catch ( Dali::DaliException& e )
10317 DALI_TEST_ASSERT( e, "Animated value and Property type don't match", TEST_LOCATION );
10325 int UtcDaliAnimationAnimateToNonAnimateableTypeN(void)
10327 TestApplication application;
10329 Actor actor = Actor::New();
10331 // Register an integer property
10333 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
10334 Stage::GetCurrent().Add(actor);
10335 DALI_TEST_EQUALS( actor.GetProperty<int>(index), startValue, TEST_LOCATION );
10339 // Build the animation
10340 Animation animation = Animation::New( 2.0f );
10341 std::string relativeValue = "relative string";
10342 animation.AnimateTo( Property(actor, index), relativeValue );
10344 tet_result(TET_FAIL);
10346 catch ( Dali::DaliException& e )
10348 DALI_TEST_ASSERT( e, "Animated value and Property type don't match", TEST_LOCATION );
10354 int UtcDaliAnimationAnimateBetweenNonAnimateableTypeN(void)
10356 TestApplication application;
10358 Actor actor = Actor::New();
10360 // Register an integer property
10362 Property::Index index = actor.RegisterProperty( "testProperty", startValue );
10363 Stage::GetCurrent().Add(actor);
10364 DALI_TEST_EQUALS( actor.GetProperty<int>(index), startValue, TEST_LOCATION );
10368 // Build the animation
10369 KeyFrames keyFrames = KeyFrames::New();
10370 keyFrames.Add( 0.0f, std::string("relative string1") );
10371 keyFrames.Add( 1.0f, std::string("relative string2") );
10372 // no need to really create the animation as keyframes do the check
10374 tet_result(TET_FAIL);
10376 catch ( Dali::DaliException& e )
10378 DALI_TEST_ASSERT( e, "Type not animateable", TEST_LOCATION );
10384 int UtcDaliAnimationSetAndGetTargetBeforePlayP(void)
10386 tet_infoline("Setting up an animation should not effect it's position property until the animation plays");
10388 TestApplication application;
10390 tet_infoline("Set initial position and set up animation to re-position actor");
10392 Actor actor = Actor::New();
10393 Stage::GetCurrent().Add(actor);
10394 Vector3 initialPosition(0.0f, 0.0f, 0.0f);
10395 actor.SetProperty( Actor::Property::POSITION, initialPosition );
10397 // Build the animation
10398 Animation animation = Animation::New(2.0f);
10400 //Test GetCurrentProgress return 0.0 as the duration is 0.0
10401 DALI_TEST_EQUALS( 0.0f, animation.GetCurrentProgress(), TEST_LOCATION );
10402 DALI_TEST_EQUALS( Vector3( 0.0f, 0.0f, 0.0f ), actor.GetCurrentPosition(), TEST_LOCATION );
10404 tet_infoline("Set target position in animation without intiating play");
10406 Vector3 targetPosition(100.0f, 100.0f, 100.0f);
10407 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPosition, AlphaFunction::LINEAR);
10409 application.SendNotification();
10410 application.Render();
10412 tet_infoline("Ensure position of actor is still at intial value");
10414 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_X), initialPosition.x, TEST_LOCATION );
10415 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Y), initialPosition.y, TEST_LOCATION );
10416 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Z), initialPosition.z, TEST_LOCATION );
10418 tet_infoline("Play animation and ensure actor position is now target");
10421 application.SendNotification();
10422 application.Render(1000u);
10424 tet_infoline("Ensure position of actor is at target value when aninmation half way");
10426 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_X), targetPosition.x, TEST_LOCATION );
10427 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Y), targetPosition.y, TEST_LOCATION );
10428 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Z), targetPosition.z, TEST_LOCATION );
10430 tet_printf( "x position at half way point(%f)\n", actor.GetCurrentPosition().x );
10432 application.Render(2000u);
10434 tet_infoline("Ensure position of actor is still at target value when aninmation complete");
10436 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_X), targetPosition.x, TEST_LOCATION );
10437 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Y), targetPosition.y, TEST_LOCATION );
10438 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Z), targetPosition.z, TEST_LOCATION );
10443 int UtcDaliAnimationSetAndGetTargetBeforePlayMulitpleAnimatorsPositionP(void)
10445 tet_infoline("Setting up an animation should not effect it's position property until the animation plays even with mulitple animators");
10447 TestApplication application;
10449 std::vector<Vector3> targetPositions;
10451 targetPositions.push_back( Vector3( 100.0f, 100.0f, 100.0f ) );
10452 targetPositions.push_back( Vector3( 200.0f, 1.0f, 100.0f ) );
10453 targetPositions.push_back( Vector3( 50.0f, 10.0f, 100.0f ) );
10455 tet_infoline("Set initial position and set up animation to re-position actor");
10457 Actor actor = Actor::New();
10458 Stage::GetCurrent().Add(actor);
10459 Vector3 initialPosition(0.0f, 0.0f, 0.0f);
10460 actor.SetProperty( Actor::Property::POSITION, initialPosition );
10462 // Build the animation
10463 Animation animation = Animation::New(2.0f);
10465 //Test GetCurrentProgress return 0.0 as the duration is 0.0
10466 DALI_TEST_EQUALS( 0.0f, animation.GetCurrentProgress(), TEST_LOCATION );
10467 DALI_TEST_EQUALS( Vector3( 0.0f, 0.0f, 0.0f ), actor.GetCurrentPosition(), TEST_LOCATION );
10469 tet_infoline("Set target position in animation without intiating play");
10471 for ( unsigned int i = 0; i < targetPositions.size(); i++ )
10473 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPositions[i], AlphaFunction::LINEAR);
10476 application.SendNotification();
10477 application.Render();
10479 tet_infoline("Ensure position of actor is still at intial value");
10481 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_X), initialPosition.x, TEST_LOCATION );
10482 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Y), initialPosition.y, TEST_LOCATION );
10483 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Z), initialPosition.z, TEST_LOCATION );
10485 tet_infoline("Play animation and ensure actor position is now target");
10488 application.SendNotification();
10489 application.Render(1000u);
10491 tet_infoline("Ensure position of actor is at target value when aninmation half way");
10493 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_X), targetPositions[2].x, TEST_LOCATION );
10494 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Y), targetPositions[2].y, TEST_LOCATION );
10495 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Z), targetPositions[2].z, TEST_LOCATION );
10497 tet_printf( "x position at half way point(%f)\n", actor.GetCurrentPosition().x );
10499 application.Render(2000u);
10501 tet_infoline("Ensure position of actor is still at target value when aninmation complete");
10503 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_X), targetPositions[2].x, TEST_LOCATION );
10504 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Y), targetPositions[2].y, TEST_LOCATION );
10505 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Z), targetPositions[2].z, TEST_LOCATION );
10510 int UtcDaliAnimationSetAndGetTargetBeforePlayMulitpleAnimatorsSizeAndPositionP(void)
10512 tet_infoline("Setting up an animation should not effect it's size property until the animation plays even with mulitple animators of different Property Indexes");
10514 TestApplication application;
10516 std::vector<Vector3> targetSizes;
10517 std::vector<Vector3> targetPositions;
10519 targetSizes.push_back( Vector3( 100.0f, 100.0f, 100.0f ) );
10520 targetSizes.push_back( Vector3( 50.0f, 10.0f, 100.0f ) );
10522 targetPositions.push_back( Vector3( 200.0f, 1.0f, 100.0f ) );
10524 tet_infoline("Set initial position and set up animation to re-position actor");
10526 Actor actor = Actor::New();
10527 Stage::GetCurrent().Add(actor);
10528 Vector3 initialSize( 10.0f, 10.0f, 10.0f);
10529 Vector3 initialPosition(10.0f, 10.0f, 10.0f);
10531 actor.SetProperty( Actor::Property::SIZE, initialSize );
10532 actor.SetProperty( Actor::Property::POSITION, initialPosition );
10534 // Build the animation
10535 Animation animation = Animation::New(2.0f);
10537 tet_infoline("Set target size in animation without intiating play");
10538 animation.AnimateTo(Property(actor, Actor::Property::SIZE), targetSizes[0], AlphaFunction::LINEAR);
10539 tet_infoline("Set target position in animation without intiating play");
10540 animation.AnimateTo(Property(actor, Actor::Property::POSITION), targetPositions[0], AlphaFunction::LINEAR);
10541 animation.AnimateTo(Property(actor, Actor::Property::SIZE), targetSizes[1], AlphaFunction::LINEAR);
10543 application.SendNotification();
10544 application.Render();
10546 tet_infoline("Ensure position of actor is still at intial size and position");
10548 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SIZE_WIDTH), initialSize.x, TEST_LOCATION );
10549 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SIZE_HEIGHT), initialSize.y, TEST_LOCATION );
10550 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SIZE_DEPTH), initialSize.z, TEST_LOCATION );
10552 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SIZE_WIDTH), initialPosition.x, TEST_LOCATION );
10553 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SIZE_HEIGHT), initialPosition.y, TEST_LOCATION );
10554 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SIZE_DEPTH), initialPosition.z, TEST_LOCATION );
10556 tet_infoline("Play animation and ensure actor position and size is now matches targets");
10559 application.SendNotification();
10560 application.Render(2000u);
10562 tet_infoline("Ensure position and size of actor is at target value when aninmation playing");
10564 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SIZE_WIDTH), targetSizes[1].x, TEST_LOCATION );
10565 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SIZE_HEIGHT), targetSizes[1].y, TEST_LOCATION );
10566 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SIZE_DEPTH), targetSizes[1].z, TEST_LOCATION );
10568 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_X), targetPositions[0].x, TEST_LOCATION );
10569 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Y), targetPositions[0].y, TEST_LOCATION );
10570 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::POSITION_Z), targetPositions[0].z, TEST_LOCATION );
10575 int UtcDaliAnimationSetAndGetTargetBeforePlayMulitpleAnimatorsSizeAndPositionColourP(void)
10577 tet_infoline("Setting up an animation should not effect it's size property until the animation plays even if other Properties animated");
10579 TestApplication application;
10581 std::vector<Vector3> targetSizes;
10582 std::vector<float> targetColors;
10584 targetSizes.push_back( Vector3( 100.0f, 100.0f, 100.0f ) );
10585 targetSizes.push_back( Vector3( 50.0f, 10.0f, 150.0f ) );
10587 targetColors.push_back( 1.0f );
10589 tet_infoline("Set initial position and set up animation to re-position actor");
10591 Actor actor = Actor::New();
10592 Stage::GetCurrent().Add(actor);
10593 Vector3 initialSize( 10.0f, 5.0f, 10.0f);
10595 actor.SetProperty( Actor::Property::SIZE, initialSize );
10597 // Build the animation
10598 Animation animation = Animation::New(2.0f);
10600 tet_infoline("Set target size in animation without initiating play");
10601 animation.AnimateTo(Property(actor, Actor::Property::SIZE), targetSizes[0], AlphaFunction::LINEAR);
10602 tet_infoline("Set target position in animation without intiating play");
10603 animation.AnimateTo(Property(actor, Actor::Property::COLOR_RED), targetColors[0], AlphaFunction::LINEAR);
10604 animation.AnimateTo(Property(actor, Actor::Property::SIZE), targetSizes[1], AlphaFunction::LINEAR);
10606 application.SendNotification();
10607 application.Render();
10609 tet_infoline("Ensure position of actor is still at initial size and position");
10611 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SIZE_WIDTH), initialSize.x, TEST_LOCATION );
10612 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SIZE_HEIGHT), initialSize.y, TEST_LOCATION );
10613 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SIZE_DEPTH), initialSize.z, TEST_LOCATION );
10615 tet_infoline("Play animation and ensure actor position and size is now matches targets");
10618 application.SendNotification();
10619 application.Render(2000u);
10621 tet_infoline("Ensure position and size of actor is at target value when animation playing");
10623 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SIZE_WIDTH), targetSizes[1].x, TEST_LOCATION );
10624 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SIZE_HEIGHT), targetSizes[1].y, TEST_LOCATION );
10625 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::SIZE_DEPTH), targetSizes[1].z, TEST_LOCATION );
10627 DALI_TEST_EQUALS( actor.GetProperty<float>(Actor::Property::COLOR_RED), targetColors[0], TEST_LOCATION );
10632 int UtcDaliAnimationTimePeriodOrder(void)
10634 tet_infoline("Animate the same property with different time periods and ensure it runs correctly and ends up in the right place" );
10636 TestApplication application;
10638 Actor actor = Actor::New();
10639 Stage::GetCurrent().Add( actor );
10641 application.SendNotification();
10642 application.Render();
10644 DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3::ZERO, TEST_LOCATION );
10646 tet_infoline( "With two AnimateTo calls" );
10648 Animation animation = Animation::New( 0.0f );
10649 animation.AnimateTo( Property( actor, Actor::Property::POSITION_X ), 100.0f, TimePeriod( 3.0f, 1.0f ) );
10650 animation.AnimateTo( Property( actor, Actor::Property::POSITION_X ), 10.0f, TimePeriod( 1.0f, 1.0f ) );
10653 application.SendNotification();
10654 application.Render(5000); // After the animation is complete
10656 DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3( 100.0f, 0.0f, 0.0f ), TEST_LOCATION );
10658 tet_infoline( "Same animation again but in a different order - should yield the same result" );
10660 actor.SetX( 0.0f );
10661 application.SendNotification();
10662 application.Render();
10664 animation = Animation::New( 0.0f );
10665 animation.AnimateTo( Property( actor, Actor::Property::POSITION_X ), 10.0f, TimePeriod( 1.0f, 1.0f ) );
10666 animation.AnimateTo( Property( actor, Actor::Property::POSITION_X ), 100.0f, TimePeriod( 3.0f, 1.0f ) );
10669 application.SendNotification();
10670 application.Render(5000); // After the animation is complete
10672 DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3( 100.0f, 0.0f, 0.0f ), TEST_LOCATION );
10674 tet_infoline( "Now with several AnimateTo calls" );
10676 actor.SetX( 0.0f );
10677 application.SendNotification();
10678 application.Render();
10680 animation = Animation::New( 0.0f );
10681 animation.AnimateTo( Property( actor, Actor::Property::POSITION_X ), 1000.0f, TimePeriod( 4.0f, 2.0f ) );
10682 animation.AnimateTo( Property( actor, Actor::Property::POSITION_X ), 145.0f, TimePeriod( 3.0f, 10.0f ) );
10683 animation.AnimateTo( Property( actor, Actor::Property::POSITION_X ), 109.0f, TimePeriod( 1.0f, 1.0f ) );
10684 animation.AnimateTo( Property( actor, Actor::Property::POSITION_X ), 1.0f, TimePeriod( 3.0f, 4.0f ) );
10685 animation.AnimateTo( Property( actor, Actor::Property::POSITION_X ), 200.0f, TimePeriod( 2.0f, 5.0f ) );
10686 animation.AnimateTo( Property( actor, Actor::Property::POSITION_X ), 10.0f, TimePeriod( 10.0f, 2.0f ) );
10689 application.SendNotification();
10690 application.Render(14000); // After the animation is complete
10692 DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3( 145.0f, 0.0f, 0.0f ), TEST_LOCATION );
10694 tet_infoline( "Same animation again but in a different order - should end up at the same point" );
10696 actor.SetX( 0.0f );
10697 application.SendNotification();
10698 application.Render();
10700 animation = Animation::New( 0.0f );
10701 animation.AnimateTo( Property( actor, Actor::Property::POSITION_X ), 200.0f, TimePeriod( 2.0f, 5.0f ) );
10702 animation.AnimateTo( Property( actor, Actor::Property::POSITION_X ), 10.0f, TimePeriod( 10.0f, 2.0f ) );
10703 animation.AnimateTo( Property( actor, Actor::Property::POSITION_X ), 145.0f, TimePeriod( 3.0f, 10.0f ) );
10704 animation.AnimateTo( Property( actor, Actor::Property::POSITION_X ), 1000.0f, TimePeriod( 4.0f, 2.0f ) );
10705 animation.AnimateTo( Property( actor, Actor::Property::POSITION_X ), 1.0f, TimePeriod( 3.0f, 4.0f ) );
10706 animation.AnimateTo( Property( actor, Actor::Property::POSITION_X ), 109.0f, TimePeriod( 1.0f, 1.0f ) );
10709 application.SendNotification();
10710 application.Render(14000); // After the animation is complete
10712 DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3( 145.0f, 0.0f, 0.0f ), TEST_LOCATION );