int UtcDaliPropertyNotificationVariableStep(void)
{
  TestApplication application;
  tet_infoline(" UtcDaliPropertyNotificationStep");

  Actor actor = Actor::New();
  Stage::GetCurrent().Add(actor);

  Dali::Vector<float> values;

  const float averageStep = 100.0f;

  for( int i = 1 ; i < 10 ; i++ )
  {
    values.PushBack(i * averageStep + (i % 2 == 0 ? -(averageStep * 0.2f) : (averageStep * 0.2f)));
  }
  // float
  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));
  Wait(application, DEFAULT_WAIT_PERIOD);

  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));
    Wait(application, DEFAULT_WAIT_PERIOD);
    DALI_TEST_CHECK( gCallBackCalled );
  }
  END_TEST;
}
int UtcDaliPropertyNotificationOutside(void)
{
  TestApplication application;
  tet_infoline(" UtcDaliPropertyNotificationOutside");

  Actor actor = Actor::New();
  Stage::GetCurrent().Add(actor);

  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));
  Wait(application, DEFAULT_WAIT_PERIOD);

  // Move outside (left) to satisfy condition
  gCallBackCalled = false;
  actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f));
  Wait(application, DEFAULT_WAIT_PERIOD);
  DALI_TEST_CHECK( gCallBackCalled );

  // Move inside to un-satisfy condition
  gCallBackCalled = false;
  actor.SetPosition(Vector3(150.0f, 0.0f, 0.0f));
  Wait(application, DEFAULT_WAIT_PERIOD);
  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));
  Wait(application, DEFAULT_WAIT_PERIOD);
  DALI_TEST_CHECK( gCallBackCalled );
  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::NotifyOnChanged);
  gCallBackCalled = false;
  notification.NotifySignal().Connect( &TestCallback );

  actor.SetPosition(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;
}
Esempio n. 4
0
void ImageView::AddImage(ImageRequest& req, PropertyCondition condition)
{
  Actor self = Self();

  PropertyNotification notification = self.AddPropertyNotification( mPropertyDetail, condition );

  notification.NotifySignal().Connect( this, &ImageView::OnDetailChange );

  mNotifications[notification] = req;
}
int UtcDaliPropertyNotificationGetCondition(void)
{
  TestApplication application;
  tet_infoline(" UtcDaliPropertyNotificationGetCondition");

  Actor actor = Actor::New();

  PropertyCondition condition = GreaterThanCondition(100.0f);
  PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X, condition);
  DALI_TEST_CHECK( condition == notification.GetCondition() );
  END_TEST;
}
int UtcDaliPropertyNotificationGetProperty(void)
{
  TestApplication application;
  tet_infoline(" UtcDaliPropertyNotificationGetProperty");

  Actor actor = Actor::New();

  PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X,
                                                                    GreaterThanCondition(100.0f));
  Property::Index targetProperty = notification.GetTargetProperty();

  DALI_TEST_EQUALS( targetProperty, (Property::Index)Actor::Property::POSITION_X, TEST_LOCATION );
  END_TEST;
}
int UtcDaliPropertyNotificationVectorComponentOutside(void)
{
  TestApplication application;
  tet_infoline(" UtcDaliPropertyNotificationOutside");

  Actor actor = Actor::New();
  Stage::GetCurrent().Add(actor);

  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));
  Wait(application, DEFAULT_WAIT_PERIOD);

  // Move x to outside condition
  gCallBackCalled = false;
  actor.SetPosition(Vector3(200.0f, 0.0f, 0.0f));
  Wait(application, DEFAULT_WAIT_PERIOD);
  DALI_TEST_CHECK( gCallBackCalled );

  // Move y to outside condition
  gCallBackCalled = false;
  actor.SetPosition(Vector3(200.0f, 200.0f, 0.0f));
  Wait(application, DEFAULT_WAIT_PERIOD);
  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));
  Wait(application, DEFAULT_WAIT_PERIOD);
  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));
  Wait(application, DEFAULT_WAIT_PERIOD);
  DALI_TEST_CHECK( gCallBackCalled );
  END_TEST;
}
int UtcDaliPropertyNotificationGetNotifyMode(void)
{
  TestApplication application;
  tet_infoline(" UtcDaliPropertyNotificationGetNotifyMode");

  Actor actor = Actor::New();

  PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X,
                                                                    GreaterThanCondition(100.0f));
  notification.SetNotifyMode(PropertyNotification::NotifyOnChanged);
  PropertyNotification::NotifyMode notifyMode = notification.GetNotifyMode();

  DALI_TEST_EQUALS( notifyMode, PropertyNotification::NotifyOnChanged, TEST_LOCATION );
  END_TEST;
}
int UtcDaliPropertyNotificationGetTarget(void)
{
  TestApplication application;
  tet_infoline(" UtcDaliPropertyNotificationGetTarget");

  Actor actor = Actor::New();
  Actor actor2 = Actor::New();

  PropertyNotification notification = actor.AddPropertyNotification(Actor::Property::POSITION_X,
                                                                    GreaterThanCondition(100.0f));
  Actor targetActor = Actor::DownCast( notification.GetTarget() );

  DALI_TEST_CHECK( targetActor == actor );
  END_TEST;
}
int UtcDaliPropertyNotificationVectorComponentLessThan(void)
{
  TestApplication application;
  tet_infoline(" UtcDaliPropertyNotificationLessThan");

  Actor actor = Actor::New();
  Stage::GetCurrent().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.SetPosition(Vector3(0.0f, 0.0f, 0.0f));
  actor.SetColor(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));
  Wait(application, DEFAULT_WAIT_PERIOD);
  DALI_TEST_CHECK( gCallBackCalled );

  // Move up to satisfy YAxis condition
  gCallBackCalled = false;
  actor.SetPosition(Vector3(-200.0f, -200.0f, 0.0f));
  Wait(application, DEFAULT_WAIT_PERIOD);
  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));
  Wait(application, DEFAULT_WAIT_PERIOD);
  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));
  Wait(application, DEFAULT_WAIT_PERIOD);
  DALI_TEST_CHECK( gCallBackCalled );
  END_TEST;
}
int UtcDaliPropertyNotificationStep(void)
{
  TestApplication application;
  tet_infoline(" UtcDaliPropertyNotificationStep");

  Actor actor = Actor::New();
  Stage::GetCurrent().Add(actor);

  const float step = 100.0f;
  // float
  PropertyNotification notification = actor.AddPropertyNotification( Actor::Property::POSITION, 0, StepCondition(step, 50.0f) );
  notification.NotifySignal().Connect( &TestCallback );

  // set initial position
  actor.SetPosition(Vector3(0.0f, 0.0f, 0.0f));
  Wait(application, DEFAULT_WAIT_PERIOD);

  // test both directions
  for( int i = 1 ; i < 10 ; ++i )
  {
    // Move x to negative position
    gCallBackCalled = false;
    actor.SetPosition(Vector3((i * step), 0.0f, 0.0f));
    Wait(application, DEFAULT_WAIT_PERIOD);
    DALI_TEST_CHECK( gCallBackCalled );
  }

  for( int i = 1 ; i < 10 ; ++i )
  {
    // Move x to negative position
    gCallBackCalled = false;
    actor.SetPosition(Vector3(-(i * step), 0.0f, 0.0f));
    Wait(application, DEFAULT_WAIT_PERIOD);
    DALI_TEST_CHECK( gCallBackCalled );
  }
  END_TEST;
}