X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali%2Futc-Dali-PropertyNotification.cpp;h=460c011c08b18be7099d3eb2a99293bfb8965fea;hb=9502baa1298289b85dcf263d723521ce6a400fd6;hp=18d3d70598f1aa9a5689201edbf360d2280eff77;hpb=a417708746ec455d37c85a4bf71368a3982235c6;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/automated-tests/src/dali/utc-Dali-PropertyNotification.cpp b/automated-tests/src/dali/utc-Dali-PropertyNotification.cpp index 18d3d70..460c011 100644 --- a/automated-tests/src/dali/utc-Dali-PropertyNotification.cpp +++ b/automated-tests/src/dali/utc-Dali-PropertyNotification.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,12 +15,11 @@ * */ -#include - -#include -#include -#include #include +#include +#include + +#include using namespace Dali; @@ -34,8 +33,8 @@ void utc_dali_property_notification_cleanup(void) test_return_value = TET_PASS; } -namespace { - +namespace +{ static bool gCallBackCalled; static void TestCallback(PropertyNotification& source) @@ -43,15 +42,14 @@ static void TestCallback(PropertyNotification& source) gCallBackCalled = true; } -const int RENDER_FRAME_INTERVAL(16); ///< Duration of each frame in ms. (at approx 60FPS) -const int DEFAULT_WAIT_PERIOD(100); ///< Default waiting period for check. - +const int RENDER_FRAME_INTERVAL(16); ///< Duration of each frame in ms. (at approx 60FPS) +const int DEFAULT_WAIT_PERIOD(100); ///< Default waiting period for check. class TestClass : public ConnectionTracker { public: - - TestClass() + TestClass(Integration::Scene scene) + : mScene(scene) { } @@ -62,14 +60,14 @@ public: void Initialize() { mActor = Actor::New(); - Stage::GetCurrent().Add( mActor ); - mNotification = mActor.AddPropertyNotification( Actor::POSITION_X, GreaterThanCondition(100.0f) ); - mNotification.NotifySignal().Connect( this, &TestClass::OnPropertyNotify ); + mScene.Add(mActor); + mNotification = mActor.AddPropertyNotification(Actor::Property::POSITION_X, GreaterThanCondition(100.0f)); + mNotification.NotifySignal().Connect(this, &TestClass::OnPropertyNotify); } void RemovePropertyNotification() { - mActor.RemovePropertyNotification( mNotification ); + mActor.RemovePropertyNotification(mNotification); } void RemovePropertyNotifications() @@ -79,22 +77,22 @@ public: void Terminate() { - Stage::GetCurrent().Remove( mActor ); + mScene.Remove(mActor); mActor.Reset(); mNotification.Reset(); } - void OnPropertyNotify( PropertyNotification& source ) + void OnPropertyNotify(PropertyNotification& source) { tet_infoline(" OnPropertyNotify"); gCallBackCalled = true; } - Actor mActor; + Actor mActor; PropertyNotification mNotification; + Integration::Scene mScene; }; - /* * Simulate time passed by. * @@ -108,7 +106,7 @@ int Wait(TestApplication& application, int duration = 0) { int time = 0; - for(int i = 0; i <= ( duration / RENDER_FRAME_INTERVAL); i++) + for(int i = 0; i <= (duration / RENDER_FRAME_INTERVAL); i++) { application.SendNotification(); application.Render(RENDER_FRAME_INTERVAL); @@ -120,28 +118,26 @@ int Wait(TestApplication& application, int duration = 0) } // unnamed namespace - // Positive test case for a method int UtcDaliPropertyNotificationDownCast(void) { TestApplication application; tet_infoline(" UtcDaliPropertyNotificationDownCast"); - Actor actor = Actor::New(); - PropertyNotification notification = actor.AddPropertyNotification(Actor::POSITION_X, GreaterThanCondition(100.0f)); - BaseHandle handle = notification; + Actor actor = Actor::New(); + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X, GreaterThanCondition(100.0f)); + BaseHandle handle = notification; PropertyNotification notificationHandle; DALI_TEST_CHECK(notification); DALI_TEST_CHECK(handle); DALI_TEST_CHECK(!notificationHandle); - notificationHandle = PropertyNotification::DownCast( handle ); + notificationHandle = PropertyNotification::DownCast(handle); DALI_TEST_CHECK(notificationHandle); END_TEST; } - // Negative test case for a method int UtcDaliPropertyNotificationDownCastNegative(void) { @@ -152,15 +148,83 @@ int UtcDaliPropertyNotificationDownCastNegative(void) Actor somethingElse = Actor::New(); Actor actor = Actor::New(); - actor.AddPropertyNotification(Actor::POSITION_X, GreaterThanCondition(100.0f)); - BaseHandle handle = somethingElse; + actor.AddPropertyNotification(Actor::Property::POSITION_X, GreaterThanCondition(100.0f)); + BaseHandle handle = somethingElse; PropertyNotification notificationHandle; - notificationHandle = PropertyNotification::DownCast( handle ); + notificationHandle = PropertyNotification::DownCast(handle); DALI_TEST_CHECK(!notificationHandle); END_TEST; } +int UtcDaliPropertyNotificationMoveConstructor(void) +{ + TestApplication application; + + Actor actor = Actor::New(); + + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X, GreaterThanCondition(100.0f)); + DALI_TEST_CHECK(notification); + DALI_TEST_EQUALS(2, notification.GetBaseObject().ReferenceCount(), TEST_LOCATION); + + PropertyNotification movedNotification = std::move(notification); + DALI_TEST_CHECK(movedNotification); + + // Check that object is moved (not copied, so ref count keeps the same) + DALI_TEST_EQUALS(2, movedNotification.GetBaseObject().ReferenceCount(), TEST_LOCATION); + DALI_TEST_CHECK(!notification); + + PropertyCondition condition = movedNotification.GetCondition(); + DALI_TEST_CHECK(condition); + DALI_TEST_EQUALS(2, condition.GetBaseObject().ReferenceCount(), TEST_LOCATION); + DALI_TEST_EQUALS(1, condition.GetArgumentCount(), TEST_LOCATION); + + PropertyCondition movedCondition = std::move(condition); + DALI_TEST_CHECK(movedCondition); + + // Check that object is moved (not copied, so ref count keeps the same) + DALI_TEST_EQUALS(2, movedCondition.GetBaseObject().ReferenceCount(), TEST_LOCATION); + DALI_TEST_EQUALS(1, movedCondition.GetArgumentCount(), TEST_LOCATION); + DALI_TEST_CHECK(!condition); + + END_TEST; +} + +int UtcDaliPropertyNotificationMoveAssignment(void) +{ + TestApplication application; + + Actor actor = Actor::New(); + + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X, GreaterThanCondition(100.0f)); + DALI_TEST_CHECK(notification); + DALI_TEST_EQUALS(2, notification.GetBaseObject().ReferenceCount(), TEST_LOCATION); + + PropertyNotification movedNotification; + movedNotification = std::move(notification); + DALI_TEST_CHECK(movedNotification); + + // Check that object is moved (not copied, so ref count keeps the same) + DALI_TEST_EQUALS(2, movedNotification.GetBaseObject().ReferenceCount(), TEST_LOCATION); + DALI_TEST_CHECK(!notification); + + PropertyCondition condition = movedNotification.GetCondition(); + DALI_TEST_CHECK(condition); + DALI_TEST_EQUALS(2, condition.GetBaseObject().ReferenceCount(), TEST_LOCATION); + DALI_TEST_EQUALS(1, condition.GetArgumentCount(), TEST_LOCATION); + + PropertyCondition movedCondition; + movedCondition = std::move(condition); + DALI_TEST_CHECK(movedCondition); + + // Check that object is moved (not copied, so ref count keeps the same) + DALI_TEST_EQUALS(2, movedCondition.GetBaseObject().ReferenceCount(), TEST_LOCATION); + DALI_TEST_EQUALS(1, movedCondition.GetArgumentCount(), TEST_LOCATION); + DALI_TEST_CHECK(!condition); + + END_TEST; +} + int UtcDaliAddPropertyNotification(void) { TestApplication application; // Reset all test adapter return codes @@ -168,8 +232,10 @@ int UtcDaliAddPropertyNotification(void) Actor actor = Actor::New(); - PropertyNotification notification = actor.AddPropertyNotification(Actor::POSITION_X, GreaterThanCondition(100.0f)); - DALI_TEST_CHECK( notification ); + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X, GreaterThanCondition(100.0f)); + PropertyNotification notification2 = actor.AddPropertyNotification(Actor::Property::SIZE, StepCondition(1.0f, 1.0f)); + DALI_TEST_CHECK(notification); + DALI_TEST_CHECK(notification2); END_TEST; } @@ -177,7 +243,7 @@ int UtcDaliAddPropertyNotificationCallback(void) { TestApplication application; // Reset all test adapter return codes - TestClass* object = new TestClass; + TestClass* object = new TestClass(application.GetScene()); object->Initialize(); application.Render(RENDER_FRAME_INTERVAL); @@ -186,31 +252,31 @@ int UtcDaliAddPropertyNotificationCallback(void) gCallBackCalled = false; tet_infoline(" UtcDaliAddPropertyNotificationCallback - Forcing notification condition true, should receive a notification"); - object->mActor.SetPosition(Vector3(200.0f, 0.0f, 0.0f)); + object->mActor.SetProperty(Actor::Property::POSITION, Vector3(200.0f, 0.0f, 0.0f)); application.Render(RENDER_FRAME_INTERVAL); application.SendNotification(); application.Render(RENDER_FRAME_INTERVAL); application.SendNotification(); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); gCallBackCalled = false; tet_infoline(" UtcDaliAddPropertyNotificationCallback - Forcing notification condition false, should not receive a notification"); - object->mActor.SetPosition(Vector3(0.0f, 0.0f, 0.0f)); + object->mActor.SetProperty(Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f)); application.Render(RENDER_FRAME_INTERVAL); application.SendNotification(); application.Render(RENDER_FRAME_INTERVAL); application.SendNotification(); - DALI_TEST_CHECK( !gCallBackCalled ); + DALI_TEST_CHECK(!gCallBackCalled); gCallBackCalled = false; tet_infoline(" UtcDaliAddPropertyNotificationCallback - Deleting notification and it's owning object, should not receive a notification"); - object->mActor.SetPosition(Vector3(200.0f, 0.0f, 0.0f)); + object->mActor.SetProperty(Actor::Property::POSITION, Vector3(200.0f, 0.0f, 0.0f)); application.Render(RENDER_FRAME_INTERVAL); application.SendNotification(); object->Terminate(); application.Render(RENDER_FRAME_INTERVAL); application.SendNotification(); - DALI_TEST_CHECK( !gCallBackCalled ); + DALI_TEST_CHECK(!gCallBackCalled); tet_infoline(" UtcDaliAddPropertyNotificationCallback - Removing notification and it's owning object, should not receive a notification"); object->Initialize(); @@ -220,12 +286,12 @@ int UtcDaliAddPropertyNotificationCallback(void) object->RemovePropertyNotification(); - object->mActor.SetPosition(Vector3(200.0f, 0.0f, 0.0f)); + object->mActor.SetProperty(Actor::Property::POSITION, Vector3(200.0f, 0.0f, 0.0f)); application.Render(RENDER_FRAME_INTERVAL); application.SendNotification(); application.Render(RENDER_FRAME_INTERVAL); application.SendNotification(); - DALI_TEST_CHECK( !gCallBackCalled ); + DALI_TEST_CHECK(!gCallBackCalled); tet_infoline(" UtcDaliAddPropertyNotificationCallback - Removing all notifications and it's owning object, should not receive a notification"); object->Initialize(); @@ -235,13 +301,12 @@ int UtcDaliAddPropertyNotificationCallback(void) object->RemovePropertyNotifications(); - object->mActor.SetPosition(Vector3(200.0f, 0.0f, 0.0f)); + object->mActor.SetProperty(Actor::Property::POSITION, Vector3(200.0f, 0.0f, 0.0f)); application.Render(RENDER_FRAME_INTERVAL); application.SendNotification(); application.Render(RENDER_FRAME_INTERVAL); application.SendNotification(); - DALI_TEST_CHECK( !gCallBackCalled ); - + DALI_TEST_CHECK(!gCallBackCalled); delete object; END_TEST; @@ -256,15 +321,45 @@ int UtcDaliAddPropertyNotificationTypeProperty(void) // Currently, Type registry properties cannot be animated try { - actor.AddPropertyNotification( PROPERTY_REGISTRATION_START_INDEX, GreaterThanCondition( 100.0f ) ); + actor.AddPropertyNotification(PROPERTY_REGISTRATION_START_INDEX, GreaterThanCondition(100.0f)); + } + catch(DaliException& e) + { + DALI_TEST_ASSERT(e, "Property notification added to event side only property", TEST_LOCATION); + } + END_TEST; +} + +int UtcDaliAddPropertyNotificationEventSidePropertyN(void) +{ + TestApplication application; + + Actor actor = Actor::New(); + + // Currently, Type registry properties cannot be animated + try + { + actor.AddPropertyNotification(PROPERTY_REGISTRATION_MAX_INDEX - 1, GreaterThanCondition(100.0f)); } - catch ( DaliException& e ) + catch(DaliException& e) { - DALI_TEST_ASSERT_CONDITION_STARTS_WITH_SUBSTRING( e, "false && \"Property notification added to non animatable property", TEST_LOCATION ); + DALI_TEST_ASSERT(e, "Property notification added to event side only property", TEST_LOCATION); } END_TEST; } +int UtcDaliAddPropertyNotificationSize(void) +{ + TestApplication application; + tet_infoline(" UtcDaliAddPropertyNotificationSize"); + + Actor actor = Actor::New(); + + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::SIZE, StepCondition(1.0f, 1.0f)); + DALI_TEST_CHECK(notification); + END_TEST; +} + int UtcDaliPropertyNotificationGetCondition(void) { TestApplication application; @@ -272,20 +367,18 @@ int UtcDaliPropertyNotificationGetCondition(void) Actor actor = Actor::New(); - PropertyCondition condition = GreaterThanCondition(100.0f); - PropertyNotification notification = actor.AddPropertyNotification(Actor::POSITION_X, condition); - DALI_TEST_CHECK( condition == notification.GetCondition() ); + PropertyCondition condition = GreaterThanCondition(100.0f); + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X, condition); + DALI_TEST_CHECK(condition == notification.GetCondition()); END_TEST; } class PropertyNotificationConstWrapper { public: - PropertyNotificationConstWrapper(PropertyNotification propertyNotification) - :mPropertyNotification(propertyNotification) + : mPropertyNotification(propertyNotification) { - } /** @@ -307,14 +400,14 @@ int UtcDaliPropertyNotificationGetConditionConst(void) Actor actor = Actor::New(); - PropertyCondition condition = GreaterThanCondition(100.0f); - PropertyNotification notification = actor.AddPropertyNotification(Actor::POSITION_X, condition); + PropertyCondition condition = GreaterThanCondition(100.0f); + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X, condition); PropertyNotificationConstWrapper notificationConst(notification); - const PropertyCondition& conditionReference1 = notificationConst.GetCondition(); - const PropertyCondition& conditionReference2 = notificationConst.GetCondition(); + const PropertyCondition& conditionReference1 = notificationConst.GetCondition(); + const PropertyCondition& conditionReference2 = notificationConst.GetCondition(); - DALI_TEST_CHECK( (&conditionReference1) == (&conditionReference2) ); - DALI_TEST_CHECK( conditionReference1 == condition ); + DALI_TEST_CHECK((&conditionReference1) == (&conditionReference2)); + DALI_TEST_CHECK(conditionReference1 == condition); END_TEST; } @@ -323,14 +416,14 @@ int UtcDaliPropertyNotificationGetTarget(void) TestApplication application; tet_infoline(" UtcDaliPropertyNotificationGetTarget"); - Actor actor = Actor::New(); + Actor actor = Actor::New(); Actor actor2 = Actor::New(); - PropertyNotification notification = actor.AddPropertyNotification(Actor::POSITION_X, + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X, GreaterThanCondition(100.0f)); - Actor targetActor = Actor::DownCast( notification.GetTarget() ); + Actor targetActor = Actor::DownCast(notification.GetTarget()); - DALI_TEST_CHECK( targetActor == actor ); + DALI_TEST_CHECK(targetActor == actor); END_TEST; } @@ -341,11 +434,11 @@ int UtcDaliPropertyNotificationGetProperty(void) Actor actor = Actor::New(); - PropertyNotification notification = actor.AddPropertyNotification(Actor::POSITION_X, + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X, GreaterThanCondition(100.0f)); - Property::Index targetProperty = notification.GetTargetProperty(); + Property::Index targetProperty = notification.GetTargetProperty(); - DALI_TEST_EQUALS( targetProperty, Actor::POSITION_X, TEST_LOCATION ); + DALI_TEST_EQUALS(targetProperty, (Property::Index)Actor::Property::POSITION_X, TEST_LOCATION); END_TEST; } @@ -356,12 +449,39 @@ int UtcDaliPropertyNotificationGetNotifyMode(void) Actor actor = Actor::New(); - PropertyNotification notification = actor.AddPropertyNotification(Actor::POSITION_X, + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X, GreaterThanCondition(100.0f)); - notification.SetNotifyMode(PropertyNotification::NotifyOnChanged); + notification.SetNotifyMode(PropertyNotification::NOTIFY_ON_CHANGED); PropertyNotification::NotifyMode notifyMode = notification.GetNotifyMode(); - DALI_TEST_EQUALS( notifyMode, PropertyNotification::NotifyOnChanged, TEST_LOCATION ); + DALI_TEST_EQUALS(notifyMode, PropertyNotification::NOTIFY_ON_CHANGED, TEST_LOCATION); + END_TEST; +} + +int UtcDaliPropertyNotificationGetNotifyResultP(void) +{ + TestApplication application; + tet_infoline(" UtcDaliPropertyNotificationGetNotifyMode"); + + Actor actor = Actor::New(); + + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X, + GreaterThanCondition(100.0f)); + notification.SetNotifyMode(PropertyNotification::NOTIFY_ON_CHANGED); + gCallBackCalled = false; + notification.NotifySignal().Connect(&TestCallback); + + actor.SetProperty(Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f)); + + application.Render(RENDER_FRAME_INTERVAL); + application.SendNotification(); + application.Render(RENDER_FRAME_INTERVAL); + application.SendNotification(); + + bool notifyResult = notification.GetNotifyResult(); + + DALI_TEST_EQUALS(notifyResult, false, TEST_LOCATION); + END_TEST; } @@ -371,32 +491,32 @@ int UtcDaliPropertyNotificationGreaterThan(void) tet_infoline(" UtcDaliPropertyNotificationGreaterThan"); Actor actor = Actor::New(); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); - PropertyNotification notification = actor.AddPropertyNotification( Actor::POSITION_X, GreaterThanCondition(100.0f) ); - notification.NotifySignal().Connect( &TestCallback ); + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X, GreaterThanCondition(100.0f)); + notification.NotifySignal().Connect(&TestCallback); - actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); // Move right to satisfy condition gCallBackCalled = false; - actor.SetPosition(Vector3(200.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(200.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); // Move left to un-satisfy condition gCallBackCalled = false; - actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( !gCallBackCalled ); + DALI_TEST_CHECK(!gCallBackCalled); // Move right to satisfy condition again. gCallBackCalled = false; Wait(application, DEFAULT_WAIT_PERIOD); - actor.SetPosition(Vector3(200.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(200.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); END_TEST; } @@ -406,32 +526,32 @@ int UtcDaliPropertyNotificationLessThan(void) tet_infoline(" UtcDaliPropertyNotificationLessThan"); Actor actor = Actor::New(); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); - PropertyNotification notification = actor.AddPropertyNotification( Actor::POSITION_X, LessThanCondition(100.0f ) ); - notification.NotifySignal().Connect( &TestCallback ); + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X, LessThanCondition(100.0f)); + notification.NotifySignal().Connect(&TestCallback); - actor.SetPosition(Vector3(200.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(200.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); // Move left to satisfy condition gCallBackCalled = false; - actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); // Move right to un-satisfy condition gCallBackCalled = false; - actor.SetPosition(Vector3(200.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(200.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( !gCallBackCalled ); + DALI_TEST_CHECK(!gCallBackCalled); // Move left to satisfy condition again. gCallBackCalled = false; Wait(application, DEFAULT_WAIT_PERIOD); - actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); END_TEST; } @@ -441,32 +561,32 @@ int UtcDaliPropertyNotificationInside(void) tet_infoline(" UtcDaliPropertyNotificationInside"); Actor actor = Actor::New(); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); - PropertyNotification notification = actor.AddPropertyNotification( Actor::POSITION_X, InsideCondition(100.0f, 200.0f) ); - notification.NotifySignal().Connect( &TestCallback ); + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X, InsideCondition(100.0f, 200.0f)); + notification.NotifySignal().Connect(&TestCallback); - actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); // Move inside to satisfy condition gCallBackCalled = false; - actor.SetPosition(Vector3(150.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(150.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); // Move outside (right) to un-satisfy condition gCallBackCalled = false; - actor.SetPosition(Vector3(300.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(300.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( !gCallBackCalled ); + DALI_TEST_CHECK(!gCallBackCalled); // Move inside to satisfy condition again. gCallBackCalled = false; Wait(application, DEFAULT_WAIT_PERIOD); - actor.SetPosition(Vector3(150.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(150.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); END_TEST; } @@ -476,32 +596,32 @@ int UtcDaliPropertyNotificationOutside(void) tet_infoline(" UtcDaliPropertyNotificationOutside"); Actor actor = Actor::New(); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); - PropertyNotification notification = actor.AddPropertyNotification( Actor::POSITION_X, OutsideCondition(100.0f, 200.0f) ); - notification.NotifySignal().Connect( &TestCallback ); + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X, OutsideCondition(100.0f, 200.0f)); + notification.NotifySignal().Connect(&TestCallback); - actor.SetPosition(Vector3(150.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(150.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); // Move outside (left) to satisfy condition gCallBackCalled = false; - actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); // Move inside to un-satisfy condition gCallBackCalled = false; - actor.SetPosition(Vector3(150.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(150.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( !gCallBackCalled ); + DALI_TEST_CHECK(!gCallBackCalled); // Move outside (right) to satisfy condition again. gCallBackCalled = false; Wait(application, DEFAULT_WAIT_PERIOD); - actor.SetPosition(Vector3(300.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(300.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); END_TEST; } @@ -511,46 +631,46 @@ int UtcDaliPropertyNotificationVectorComponentGreaterThan(void) tet_infoline(" UtcDaliPropertyNotificationGreaterThan"); Actor actor = Actor::New(); - Stage::GetCurrent().Add(actor); - - PropertyNotification notification = actor.AddPropertyNotification( Actor::POSITION, 0, GreaterThanCondition(100.0f) ); - notification.NotifySignal().Connect( &TestCallback ); - notification = actor.AddPropertyNotification( Actor::POSITION, 1, GreaterThanCondition(100.0f) ); - notification.NotifySignal().Connect( &TestCallback ); - notification = actor.AddPropertyNotification( Actor::POSITION, 2, GreaterThanCondition(100.0f) ); - notification.NotifySignal().Connect( &TestCallback ); - notification = actor.AddPropertyNotification( Actor::COLOR, 3, GreaterThanCondition(0.5f) ); - notification.NotifySignal().Connect( &TestCallback ); - - actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f)); - actor.SetColor(Vector4(0.0f, 0.0f, 0.0f, 0.0f)); + application.GetScene().Add(actor); + + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION, 0, GreaterThanCondition(100.0f)); + notification.NotifySignal().Connect(&TestCallback); + notification = actor.AddPropertyNotification(Actor::Property::POSITION, 1, GreaterThanCondition(100.0f)); + notification.NotifySignal().Connect(&TestCallback); + notification = actor.AddPropertyNotification(Actor::Property::POSITION, 2, GreaterThanCondition(100.0f)); + notification.NotifySignal().Connect(&TestCallback); + notification = actor.AddPropertyNotification(Actor::Property::COLOR, 3, GreaterThanCondition(0.5f)); + notification.NotifySignal().Connect(&TestCallback); + + actor.SetProperty(Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::COLOR, Vector4(0.0f, 0.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); // Move right to satisfy XAxis condition gCallBackCalled = false; - actor.SetPosition(Vector3(200.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(200.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); // Move down to satisfy YAxis condition gCallBackCalled = false; - actor.SetPosition(Vector3(200.0f, 200.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(200.0f, 200.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); // Move forward to satisfy ZAxis gCallBackCalled = false; Wait(application, DEFAULT_WAIT_PERIOD); - actor.SetPosition(Vector3(200.0f, 200.0f, 200.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(200.0f, 200.0f, 200.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); // Change alpha Colour to satisfy w/alpha component condition gCallBackCalled = false; Wait(application, DEFAULT_WAIT_PERIOD); - actor.SetColor(Vector4(0.0f, 0.0f, 0.0f, 1.0f)); + actor.SetProperty(Actor::Property::COLOR, Vector4(0.0f, 0.0f, 0.0f, 1.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); END_TEST; } @@ -560,46 +680,46 @@ int UtcDaliPropertyNotificationVectorComponentLessThan(void) tet_infoline(" UtcDaliPropertyNotificationLessThan"); Actor actor = Actor::New(); - Stage::GetCurrent().Add(actor); - - PropertyNotification notification = actor.AddPropertyNotification( Actor::POSITION, 0, LessThanCondition(-100.0f) ); - notification.NotifySignal().Connect( &TestCallback ); - notification = actor.AddPropertyNotification( Actor::POSITION, 1, LessThanCondition(-100.0f) ); - notification.NotifySignal().Connect( &TestCallback ); - notification = actor.AddPropertyNotification( Actor::POSITION, 2, LessThanCondition(-100.0f) ); - notification.NotifySignal().Connect( &TestCallback ); - notification = actor.AddPropertyNotification( Actor::COLOR, 3, LessThanCondition(0.5f) ); - notification.NotifySignal().Connect( &TestCallback ); - - actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f)); - actor.SetColor(Vector4(0.0f, 0.0f, 0.0f, 1.0f)); + application.GetScene().Add(actor); + + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION, 0, LessThanCondition(-100.0f)); + notification.NotifySignal().Connect(&TestCallback); + notification = actor.AddPropertyNotification(Actor::Property::POSITION, 1, LessThanCondition(-100.0f)); + notification.NotifySignal().Connect(&TestCallback); + notification = actor.AddPropertyNotification(Actor::Property::POSITION, 2, LessThanCondition(-100.0f)); + notification.NotifySignal().Connect(&TestCallback); + notification = actor.AddPropertyNotification(Actor::Property::COLOR, 3, LessThanCondition(0.5f)); + notification.NotifySignal().Connect(&TestCallback); + + actor.SetProperty(Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::COLOR, Vector4(0.0f, 0.0f, 0.0f, 1.0f)); Wait(application, DEFAULT_WAIT_PERIOD); // Move left to satisfy XAxis condition gCallBackCalled = false; - actor.SetPosition(Vector3(-200.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(-200.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); // Move up to satisfy YAxis condition gCallBackCalled = false; - actor.SetPosition(Vector3(-200.0f, -200.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(-200.0f, -200.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); // Move back to satisfy ZAxis gCallBackCalled = false; Wait(application, DEFAULT_WAIT_PERIOD); - actor.SetPosition(Vector3(-200.0f, -200.0f, -200.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(-200.0f, -200.0f, -200.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); // Change alpha Colour to satisfy w/alpha component condition gCallBackCalled = false; Wait(application, DEFAULT_WAIT_PERIOD); - actor.SetColor(Vector4(0.0f, 0.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::COLOR, Vector4(0.0f, 0.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); END_TEST; } @@ -609,47 +729,47 @@ int UtcDaliPropertyNotificationVectorComponentInside(void) tet_infoline(" UtcDaliPropertyNotificationInside"); Actor actor = Actor::New(); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); - PropertyNotification notification = actor.AddPropertyNotification( Actor::POSITION, 0, InsideCondition(-100.0f, 100.0f) ); - notification.NotifySignal().Connect( &TestCallback ); - notification = actor.AddPropertyNotification( Actor::POSITION, 1, InsideCondition(-100.0f, 100.0f) ); - notification.NotifySignal().Connect( &TestCallback ); - notification = actor.AddPropertyNotification( Actor::POSITION, 2, InsideCondition(-100.0f, 100.0f) ); - notification.NotifySignal().Connect( &TestCallback ); - notification = actor.AddPropertyNotification( Actor::COLOR, 3, InsideCondition(0.25f, 0.75f) ); - notification.NotifySignal().Connect( &TestCallback ); + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION, 0, InsideCondition(-100.0f, 100.0f)); + notification.NotifySignal().Connect(&TestCallback); + notification = actor.AddPropertyNotification(Actor::Property::POSITION, 1, InsideCondition(-100.0f, 100.0f)); + notification.NotifySignal().Connect(&TestCallback); + notification = actor.AddPropertyNotification(Actor::Property::POSITION, 2, InsideCondition(-100.0f, 100.0f)); + notification.NotifySignal().Connect(&TestCallback); + notification = actor.AddPropertyNotification(Actor::Property::COLOR, 3, InsideCondition(0.25f, 0.75f)); + notification.NotifySignal().Connect(&TestCallback); // set outside all conditions - actor.SetPosition(Vector3(200.0f, 200.0f, 200.0f)); - actor.SetColor(Vector4(0.0f, 0.0f, 0.0f, 1.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(200.0f, 200.0f, 200.0f)); + actor.SetProperty(Actor::Property::COLOR, Vector4(0.0f, 0.0f, 0.0f, 1.0f)); Wait(application, DEFAULT_WAIT_PERIOD); // Move x to inside condition gCallBackCalled = false; - actor.SetPosition(Vector3(0.0f, 200.0f, 200.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(0.0f, 200.0f, 200.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); // Move y to inside condition gCallBackCalled = false; - actor.SetPosition(Vector3(0.0f, 0.0f, 200.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(0.0f, 0.0f, 200.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); // Move z to inside condition gCallBackCalled = false; Wait(application, DEFAULT_WAIT_PERIOD); - actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); // change alpha to inside condition gCallBackCalled = false; Wait(application, DEFAULT_WAIT_PERIOD); - actor.SetColor(Vector4(0.0f, 0.0f, 0.0f, 0.5f)); + actor.SetProperty(Actor::Property::COLOR, Vector4(0.0f, 0.0f, 0.0f, 0.5f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); END_TEST; } @@ -659,47 +779,87 @@ int UtcDaliPropertyNotificationVectorComponentOutside(void) tet_infoline(" UtcDaliPropertyNotificationOutside"); Actor actor = Actor::New(); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); - PropertyNotification notification = actor.AddPropertyNotification( Actor::POSITION, 0, OutsideCondition(-100.0f, 100.0f) ); - notification.NotifySignal().Connect( &TestCallback ); - notification = actor.AddPropertyNotification( Actor::POSITION, 1, OutsideCondition(-100.0f, 100.0f) ); - notification.NotifySignal().Connect( &TestCallback ); - notification = actor.AddPropertyNotification( Actor::POSITION, 2, OutsideCondition(-100.0f, 100.0f) ); - notification.NotifySignal().Connect( &TestCallback ); - notification = actor.AddPropertyNotification( Actor::COLOR, 3, OutsideCondition(0.25f, 0.75f) ); - notification.NotifySignal().Connect( &TestCallback ); + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION, 0, OutsideCondition(-100.0f, 100.0f)); + notification.NotifySignal().Connect(&TestCallback); + notification = actor.AddPropertyNotification(Actor::Property::POSITION, 1, OutsideCondition(-100.0f, 100.0f)); + notification.NotifySignal().Connect(&TestCallback); + notification = actor.AddPropertyNotification(Actor::Property::POSITION, 2, OutsideCondition(-100.0f, 100.0f)); + notification.NotifySignal().Connect(&TestCallback); + notification = actor.AddPropertyNotification(Actor::Property::COLOR, 3, OutsideCondition(0.25f, 0.75f)); + notification.NotifySignal().Connect(&TestCallback); // set inside all conditions - actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f)); - actor.SetColor(Vector4(0.0f, 0.0f, 0.0f, 0.5f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(0.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::COLOR, Vector4(0.0f, 0.0f, 0.0f, 0.5f)); Wait(application, DEFAULT_WAIT_PERIOD); // Move x to outside condition gCallBackCalled = false; - actor.SetPosition(Vector3(200.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(200.0f, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); // Move y to outside condition gCallBackCalled = false; - actor.SetPosition(Vector3(200.0f, 200.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(200.0f, 200.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); // Move z to outside condition gCallBackCalled = false; Wait(application, DEFAULT_WAIT_PERIOD); - actor.SetPosition(Vector3(200.0f, 200.0f, 200.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(200.0f, 200.0f, 200.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); // change alpha to outside condition gCallBackCalled = false; Wait(application, DEFAULT_WAIT_PERIOD); - actor.SetColor(Vector4(0.0f, 0.0f, 0.0f, 1.0f)); + actor.SetProperty(Actor::Property::COLOR, Vector4(0.0f, 0.0f, 0.0f, 1.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); + END_TEST; +} + +int UtcDaliPropertyNotificationSetSizeResultP(void) +{ + TestApplication application; + bool notifyResult; + tet_infoline(" UtcDaliPropertyNotificationSetSizeResultP"); + + Actor actor = Actor::New(); + + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::SIZE, StepCondition(1.0f, 1.0f)); + notification.SetNotifyMode(PropertyNotification::NOTIFY_ON_CHANGED); + gCallBackCalled = false; + notification.NotifySignal().Connect(&TestCallback); + + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + + application.Render(RENDER_FRAME_INTERVAL); + application.SendNotification(); + application.Render(RENDER_FRAME_INTERVAL); + application.SendNotification(); + + notifyResult = notification.GetNotifyResult(); + + DALI_TEST_EQUALS(notifyResult, true, TEST_LOCATION); + + gCallBackCalled = false; + + actor.SetProperty(Actor::Property::SIZE, Vector2(200.0f, 200.0f)); + + application.Render(RENDER_FRAME_INTERVAL); + application.SendNotification(); + application.Render(RENDER_FRAME_INTERVAL); + application.SendNotification(); + + notifyResult = notification.GetNotifyResult(); + + DALI_TEST_EQUALS(notifyResult, true, TEST_LOCATION); + END_TEST; } @@ -708,101 +868,224 @@ int UtcDaliPropertyConditionGetArguments(void) TestApplication application; tet_infoline(" UtcDaliPropertyConditionGetArguments"); - PropertyCondition condition = GreaterThanCondition( 50.0f ); - PropertyCondition::ArgumentContainer arguments = condition.GetArguments(); + PropertyCondition condition = GreaterThanCondition(50.0f); - DALI_TEST_EQUALS( arguments.size(), 1u, TEST_LOCATION ); - Property::Value value = arguments[0]; - DALI_TEST_EQUALS( value.Get(), 50.0f, TEST_LOCATION ); + DALI_TEST_EQUALS(condition.GetArgumentCount(), 1u, TEST_LOCATION); + float value = condition.GetArgument(0); + DALI_TEST_EQUALS(value, 50.0f, TEST_LOCATION); - condition = InsideCondition( 125.0f, 250.0f ); - arguments = condition.GetArguments(); + condition = InsideCondition(125.0f, 250.0f); - DALI_TEST_EQUALS( arguments.size(), 2u, TEST_LOCATION ); - Property::Value value1 = arguments[0]; - Property::Value value2 = arguments[1]; - DALI_TEST_EQUALS( value1.Get(), 125.0f, TEST_LOCATION ); - DALI_TEST_EQUALS( value2.Get(), 250.0f, TEST_LOCATION ); + DALI_TEST_EQUALS(condition.GetArgumentCount(), 2u, TEST_LOCATION); + float value1 = condition.GetArgument(0); + float value2 = condition.GetArgument(1); + DALI_TEST_EQUALS(value1, 125.0f, TEST_LOCATION); + DALI_TEST_EQUALS(value2, 250.0f, TEST_LOCATION); END_TEST; } -namespace +int UtcDaliPropertyNotificationStepVector4(void) { + TestApplication application; + tet_infoline(" UtcDaliPropertyNotificationStepVector4"); -class PropertyConditionConstWrapper -{ -public: + Actor actor = Actor::New(); + application.GetScene().Add(actor); + + const float step = 10.0f; + float initValue = 5.0f; - PropertyConditionConstWrapper(PropertyCondition propertyCondition) - :mPropertyCondition(propertyCondition) + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::COLOR, StepCondition(step * 2, 0.0f)); + notification.NotifySignal().Connect(&TestCallback); + + actor.SetProperty(Actor::Property::COLOR, Vector4(initValue, 0.0f, 0.0f, 0.0f)); + Wait(application, DEFAULT_WAIT_PERIOD); + + // test both directions + for(int i = 1; i < 10;) { + // Move x to positive + gCallBackCalled = false; + actor.SetProperty(Actor::Property::COLOR, Vector4(initValue + (i++ * step), 0.0f, 0.0f, 0.0f)); + Wait(application, DEFAULT_WAIT_PERIOD); + DALI_TEST_CHECK(!gCallBackCalled); + actor.SetProperty(Actor::Property::COLOR, Vector4(initValue + (i++ * step), 0.0f, 0.0f, 0.0f)); + Wait(application, DEFAULT_WAIT_PERIOD); + DALI_TEST_CHECK(gCallBackCalled); } - /** - * Returns const reference to property arguments. - * @return const reference. - */ - const PropertyCondition::ArgumentContainer& GetArguments() const + initValue = -5.0f; + actor.SetProperty(Actor::Property::COLOR, Vector4(initValue, 0.0f, 0.0f, 0.0f)); + Wait(application, DEFAULT_WAIT_PERIOD); + + for(int i = 1; i < 10;) { - return mPropertyCondition.GetArguments(); + // Move x to negative + gCallBackCalled = false; + actor.SetProperty(Actor::Property::COLOR, Vector4(initValue - (i++ * step), 0.0f, 0.0f, 0.0f)); + Wait(application, DEFAULT_WAIT_PERIOD); + DALI_TEST_CHECK(!gCallBackCalled); + + actor.SetProperty(Actor::Property::COLOR, Vector4(initValue - (i++ * step), 0.0f, 0.0f, 0.0f)); + Wait(application, DEFAULT_WAIT_PERIOD); + DALI_TEST_CHECK(gCallBackCalled); } + END_TEST; +} - PropertyCondition mPropertyCondition; -}; -} // anon namespace +int UtcDaliPropertyNotificationStepFloat(void) +{ + TestApplication application; + tet_infoline(" UtcDaliPropertyNotificationStepFloat"); + + Actor actor = Actor::New(); + application.GetScene().Add(actor); + + const float step = 10.0f; + float initValue = 5.0f; + + // float + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION, 0, StepCondition(step * 2, 0.0f)); + notification.NotifySignal().Connect(&TestCallback); + + // set initial position + actor.SetProperty(Actor::Property::POSITION, Vector3(initValue, 0.0f, 0.0f)); + Wait(application, DEFAULT_WAIT_PERIOD); + + // test both directions + for(int i = 1; i < 10;) + { + // Move x to positive + gCallBackCalled = false; + actor.SetProperty(Actor::Property::POSITION, Vector3(initValue + (i++ * step), 0.0f, 0.0f)); + Wait(application, DEFAULT_WAIT_PERIOD); + DALI_TEST_CHECK(!gCallBackCalled); + + actor.SetProperty(Actor::Property::POSITION, Vector3(initValue + (i++ * step), 0.0f, 0.0f)); + Wait(application, DEFAULT_WAIT_PERIOD); + DALI_TEST_CHECK(gCallBackCalled); + } + + initValue = -5.0f; + actor.SetProperty(Actor::Property::POSITION, Vector3(initValue, 0.0f, 0.0f)); + Wait(application, DEFAULT_WAIT_PERIOD); + + for(int i = 1; i < 10;) + { + // Move x to negative + gCallBackCalled = false; + actor.SetProperty(Actor::Property::POSITION, Vector3(initValue - (i++ * step), 0.0f, 0.0f)); + Wait(application, DEFAULT_WAIT_PERIOD); + DALI_TEST_CHECK(!gCallBackCalled); + + actor.SetProperty(Actor::Property::POSITION, Vector3(initValue - (i++ * step), 0.0f, 0.0f)); + Wait(application, DEFAULT_WAIT_PERIOD); + DALI_TEST_CHECK(gCallBackCalled); + } + END_TEST; +} -int UtcDaliPropertyConditionGetArgumentsConst(void) +int UtcDaliPropertyNotificationStepVector2(void) { TestApplication application; - tet_infoline(" UtcDaliPropertyConditionGetArgumentsConst"); + tet_infoline(" UtcDaliPropertyNotificationStepVector2"); - PropertyCondition condition = GreaterThanCondition( 50.0f ); - PropertyConditionConstWrapper conditionConst(condition); - const PropertyCondition::ArgumentContainer& argumentsRef1 = conditionConst.GetArguments(); - const PropertyCondition::ArgumentContainer& argumentsRef2 = conditionConst.GetArguments(); + Actor actor = Actor::New(); + application.GetScene().Add(actor); - DALI_TEST_CHECK( (&argumentsRef1) == (&argumentsRef2) ); - DALI_TEST_EQUALS( argumentsRef1.size(), 1u, TEST_LOCATION ); - Property::Value value = argumentsRef1[0]; - DALI_TEST_EQUALS( value.Get(), 50.0f, TEST_LOCATION ); + const float step = 10.0f; + float initValue = 5.0f; + + Property::Index propertyIndex = actor.RegisterProperty("testProperty", Vector2::ZERO); + + PropertyNotification notification = actor.AddPropertyNotification(propertyIndex, StepCondition(step * 2, 0.0f)); + notification.NotifySignal().Connect(&TestCallback); + + actor.SetProperty(propertyIndex, Vector2(initValue, 0.0f)); + Wait(application, DEFAULT_WAIT_PERIOD); + + // test both directions + for(int i = 1; i < 10;) + { + // Move x to positive + gCallBackCalled = false; + actor.SetProperty(propertyIndex, Vector2(initValue + (i++ * step), 0.0f)); + Wait(application, DEFAULT_WAIT_PERIOD); + DALI_TEST_CHECK(!gCallBackCalled); + + actor.SetProperty(propertyIndex, Vector2(initValue + (i++ * step), 0.0f)); + Wait(application, DEFAULT_WAIT_PERIOD); + DALI_TEST_CHECK(gCallBackCalled); + } + + initValue = -5.0f; + actor.SetProperty(propertyIndex, Vector2(initValue, 0.0f)); + Wait(application, DEFAULT_WAIT_PERIOD); + + for(int i = 1; i < 10;) + { + // Move x to negative + gCallBackCalled = false; + actor.SetProperty(propertyIndex, Vector2(initValue - (i++ * step), 0.0f)); + Wait(application, DEFAULT_WAIT_PERIOD); + DALI_TEST_CHECK(!gCallBackCalled); + + actor.SetProperty(propertyIndex, Vector2(initValue - (i++ * step), 0.0f)); + Wait(application, DEFAULT_WAIT_PERIOD); + DALI_TEST_CHECK(gCallBackCalled); + } END_TEST; } -int UtcDaliPropertyNotificationStep(void) +int UtcDaliPropertyNotificationStepVector3(void) { TestApplication application; - tet_infoline(" UtcDaliPropertyNotificationStep"); + tet_infoline(" UtcDaliPropertyNotificationStepVector3"); Actor actor = Actor::New(); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); + + const float step = 10.0f; + float initValue = 5.0f; - const float step = 100.0f; // float - PropertyNotification notification = actor.AddPropertyNotification( Actor::POSITION, 0, StepCondition(step, 50.0f) ); - notification.NotifySignal().Connect( &TestCallback ); + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION, StepCondition(step * 2, 0.0f)); + notification.NotifySignal().Connect(&TestCallback); // set initial position - actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(initValue, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); // test both directions - for( int i = 1 ; i < 10 ; ++i ) + for(int i = 1; i < 10;) { - // Move x to negative position + // Move x to positive position gCallBackCalled = false; - actor.SetPosition(Vector3((i * step), 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(initValue + (i++ * step), 0.0f, 0.0f)); + Wait(application, DEFAULT_WAIT_PERIOD); + DALI_TEST_CHECK(!gCallBackCalled); + + actor.SetProperty(Actor::Property::POSITION, Vector3(initValue + (i++ * step), 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); } - for( int i = 1 ; i < 10 ; ++i ) + initValue = -5.0f; + actor.SetProperty(Actor::Property::POSITION, Vector3(initValue, 0.0f, 0.0f)); + Wait(application, DEFAULT_WAIT_PERIOD); + + for(int i = 1; i < 10;) { // Move x to negative position gCallBackCalled = false; - actor.SetPosition(Vector3(-(i * step), 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(initValue - (i++ * step), 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(!gCallBackCalled); + + actor.SetProperty(Actor::Property::POSITION, Vector3(initValue - (i++ * step), 0.0f, 0.0f)); + Wait(application, DEFAULT_WAIT_PERIOD); + DALI_TEST_CHECK(gCallBackCalled); } END_TEST; } @@ -813,38 +1096,38 @@ int UtcDaliPropertyNotificationVariableStep(void) tet_infoline(" UtcDaliPropertyNotificationStep"); Actor actor = Actor::New(); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); - std::vector values; + Dali::Vector values; const float averageStep = 100.0f; - for( int i = 1 ; i < 10 ; i++ ) + for(int i = 1; i < 10; i++) { - values.push_back(i * averageStep + (i % 2 == 0 ? -(averageStep * 0.2f) : (averageStep * 0.2f))); + values.PushBack(i * averageStep + (i % 2 == 0 ? -(averageStep * 0.2f) : (averageStep * 0.2f))); } // float - PropertyNotification notification = actor.AddPropertyNotification( Actor::POSITION, 0, VariableStepCondition(values) ); - notification.NotifySignal().Connect( &TestCallback ); + PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION, 0, VariableStepCondition(values)); + notification.NotifySignal().Connect(&TestCallback); // set initial position lower than first position in list - actor.SetPosition(Vector3(values[0] - averageStep, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(values[0] - averageStep, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - for( unsigned int i = 0 ; i < values.size() - 1 ; ++i ) + for(unsigned int i = 0; i < values.Count() - 1; ++i) { gCallBackCalled = false; // set position half way between the current values float position = values[i] + (0.5f * (values[i + 1] - values[i])); - actor.SetPosition(Vector3(position, 0.0f, 0.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(position, 0.0f, 0.0f)); Wait(application, DEFAULT_WAIT_PERIOD); - DALI_TEST_CHECK( gCallBackCalled ); + DALI_TEST_CHECK(gCallBackCalled); } END_TEST; } static bool gCallBack2Called = false; -void TestCallback2(PropertyNotification& source) +void TestCallback2(PropertyNotification& source) { gCallBack2Called = true; } @@ -854,15 +1137,15 @@ int UtcDaliPropertyNotificationOrder(void) TestApplication application; // Reset all test adapter return codes Actor actor = Actor::New(); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); // this should complete in first frame - PropertyNotification notification1 = actor.AddPropertyNotification( Actor::POSITION_X, GreaterThanCondition(90.0f) ); - notification1.NotifySignal().Connect( &TestCallback ); + PropertyNotification notification1 = actor.AddPropertyNotification(Actor::Property::POSITION_X, GreaterThanCondition(90.0f)); + notification1.NotifySignal().Connect(&TestCallback); // this should complete in second frame - PropertyNotification notification2 = actor.AddPropertyNotification( Actor::POSITION_X, GreaterThanCondition(150.0f) ); - notification2.NotifySignal().Connect( &TestCallback2 ); - Animation animation = Animation::New( 0.032f ); // finishes in 32 ms - animation.AnimateTo( Property(actor, Actor::POSITION ), Vector3( 200.0f, 0.0f, 0.0f ), AlphaFunctions::Linear ); + PropertyNotification notification2 = actor.AddPropertyNotification(Actor::Property::POSITION_X, GreaterThanCondition(150.0f)); + notification2.NotifySignal().Connect(&TestCallback2); + Animation animation = Animation::New(0.032f); // finishes in 32 ms + animation.AnimateTo(Property(actor, Actor::Property::POSITION), Vector3(200.0f, 0.0f, 0.0f), AlphaFunction::LINEAR); animation.Play(); // flush the queue @@ -870,29 +1153,64 @@ int UtcDaliPropertyNotificationOrder(void) // first frame application.Render(RENDER_FRAME_INTERVAL); // no notifications yet - DALI_TEST_EQUALS( gCallBackCalled, false, TEST_LOCATION ); - DALI_TEST_EQUALS( gCallBack2Called, false, TEST_LOCATION ); - gCallBackCalled = false; + DALI_TEST_EQUALS(gCallBackCalled, false, TEST_LOCATION); + DALI_TEST_EQUALS(gCallBack2Called, false, TEST_LOCATION); + gCallBackCalled = false; gCallBack2Called = false; // dont serve the notifications but run another update & render // this simulates situation where there is a notification in event side but it's not been picked up by event thread // second frame application.Render(RENDER_FRAME_INTERVAL); - DALI_TEST_EQUALS( gCallBackCalled, false, TEST_LOCATION ); - DALI_TEST_EQUALS( gCallBack2Called, false, TEST_LOCATION ); + DALI_TEST_EQUALS(gCallBackCalled, false, TEST_LOCATION); + DALI_TEST_EQUALS(gCallBack2Called, false, TEST_LOCATION); // serve the notifications application.SendNotification(); - DALI_TEST_EQUALS( gCallBackCalled, true, TEST_LOCATION ); - DALI_TEST_EQUALS( gCallBack2Called, true, TEST_LOCATION ); + DALI_TEST_EQUALS(gCallBackCalled, true, TEST_LOCATION); + DALI_TEST_EQUALS(gCallBack2Called, true, TEST_LOCATION); - gCallBackCalled = false; + gCallBackCalled = false; gCallBack2Called = false; application.Render(RENDER_FRAME_INTERVAL); application.SendNotification(); - DALI_TEST_EQUALS( gCallBackCalled, false, TEST_LOCATION ); - DALI_TEST_EQUALS( gCallBack2Called, false, TEST_LOCATION ); + DALI_TEST_EQUALS(gCallBackCalled, false, TEST_LOCATION); + DALI_TEST_EQUALS(gCallBack2Called, false, TEST_LOCATION); END_TEST; } + +int UtcDaliPropertyConditionGetArgumentNegative(void) +{ + TestApplication application; + Dali::PropertyCondition instance; + instance.Reset(); + try + { + unsigned long arg1(0u); + instance.GetArgument(arg1); + DALI_TEST_CHECK(false); // Should not get here + } + catch(...) + { + DALI_TEST_CHECK(true); // We expect an assert + } + END_TEST; +} + +int UtcDaliPropertyConditionGetArgumentCountNegative(void) +{ + TestApplication application; + Dali::PropertyCondition instance; + instance.Reset(); + try + { + instance.GetArgumentCount(); + DALI_TEST_CHECK(false); // Should not get here + } + catch(...) + { + DALI_TEST_CHECK(true); // We expect an assert + } + END_TEST; +}