+ DALI_TEST_CHECK(true);
+ END_TEST;
+}
+
+int UtcDaliControlWrapperTestControlProperties(void)
+{
+ ToolkitTestApplication application;
+
+ Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl(Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT);
+ ControlWrapper controlWrapper = ControlWrapper::New(customControlTypeName, *controlWrapperImpl);
+
+ application.GetScene().Add(controlWrapper);
+
+ // "background" property
+ Property::Map rendererMap;
+ rendererMap[Visual::Property::TYPE] = Visual::COLOR;
+ rendererMap[ColorVisual::Property::MIX_COLOR] = Color::RED;
+ controlWrapper.SetProperty(Control::Property::BACKGROUND, rendererMap);
+ Property::Value propertyValue = controlWrapper.GetProperty(Control::Property::BACKGROUND);
+ Property::Map* resultMap = propertyValue.GetMap();
+ DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE));
+ DALI_TEST_EQUALS(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get<int>(), (int)Visual::COLOR, TEST_LOCATION);
+ DALI_TEST_CHECK(resultMap->Find(ColorVisual::Property::MIX_COLOR));
+ DALI_TEST_EQUALS(resultMap->Find(ColorVisual::Property::MIX_COLOR)->Get<Vector4>(), Color::RED, TEST_LOCATION);
+
+ // "keyInputFocus" property
+ controlWrapper.SetProperty(Control::Property::KEY_INPUT_FOCUS, true);
+ DALI_TEST_EQUALS(true, controlWrapper.GetProperty(Control::Property::KEY_INPUT_FOCUS).Get<bool>(), TEST_LOCATION);
+
+ // "styleName" property
+ controlWrapper.SetProperty(Control::Property::STYLE_NAME, "MyCustomStyle");
+ DALI_TEST_EQUALS("MyCustomStyle", controlWrapper.GetProperty(Control::Property::STYLE_NAME).Get<std::string>(), TEST_LOCATION);
+
+ END_TEST;
+}
+
+int UtcDaliControlWrapperTypeRegistryCreation(void)
+{
+ ToolkitTestApplication application;
+
+ TypeInfo typeInfo = TypeRegistry::Get().GetTypeInfo("ControlWrapper");
+ DALI_TEST_CHECK(typeInfo)
+
+ // Check that we can't create a ControlWrapper instance
+ BaseHandle baseHandle = typeInfo.CreateInstance();
+ DALI_TEST_CHECK(!baseHandle)
+
+ END_TEST;
+}
+
+void SetProperty(BaseObject* object, const char* const name, Property::Value* value)
+{
+}
+Property::Value* GetProperty(BaseObject* object, const char* const name)
+{
+ return NULL;
+}
+
+int UtcDaliControlWrapperAnimateVisual(void)
+{
+ tet_infoline("Test that the control wrapper's visuals can be animated by name when registered");
+
+ ToolkitTestApplication application;
+ Test::ObjectDestructionTracker objectDestructionTracker(application.GetCore().GetObjectRegistry());
+
+ {
+ Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl(Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT);
+ ControlWrapper controlWrapper = ControlWrapper::New(customControlTypeName, *controlWrapperImpl);
+
+ Property::Index index = Control::CONTROL_PROPERTY_END_INDEX + 1;
+ std::string visualName("colorVisual");
+ CSharpTypeRegistry::RegisterProperty(customControlTypeName, visualName, index, Property::VECTOR4, SetProperty, GetProperty);
+
+ objectDestructionTracker.Start(controlWrapper);
+
+ Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get();
+ Toolkit::Visual::Base visual;
+
+ Property::Map map;
+ map[Visual::Property::TYPE] = Visual::COLOR;
+ map[ColorVisual::Property::MIX_COLOR] = Color::RED;
+
+ visual = visualFactory.CreateVisual(map);
+ DALI_TEST_CHECK(visual);
+
+ // Register to self
+ controlWrapperImpl->TestRegisterVisual(index, visual);
+
+ application.GetScene().Add(controlWrapper);
+ controlWrapper.SetProperty(Actor::Property::SIZE, Vector2(100, 100));
+ application.SendNotification();
+ application.Render(0); // Trigger animation start
+
+ Property::Map transition;
+ transition["target"] = visualName;
+ transition["property"] = "mixColor";
+ transition["targetValue"] = Color::GREEN;
+ Property::Map animator;
+ animator["alphaFunction"] = "LINEAR";
+ animator["duration"] = 1.0f;
+ animator["delay"] = 0.0f;
+ transition["animator"] = animator;
+
+ TransitionData transitionData = TransitionData::New(transition);
+ Animation anim = DevelControl::CreateTransition(*controlWrapperImpl, transitionData);
+ anim.Play();
+
+ application.SendNotification();
+ application.Render(0); // Trigger animation start
+
+ application.Render(1000); // animation end
+ application.Render(10);
+
+ Property::Map visualMap;
+ visual.CreatePropertyMap(visualMap);
+ Property::Value* value = visualMap.Find(ColorVisual::Property::MIX_COLOR, "mixColor");
+ DALI_TEST_CHECK(value != NULL);
+ if(value)
+ {
+ Vector4 testColor = value->Get<Vector4>();
+ DALI_TEST_EQUALS(testColor, Color::GREEN, 0.001f, TEST_LOCATION);
+ }
+
+ DALI_TEST_EQUALS(objectDestructionTracker.IsDestroyed(), false, TEST_LOCATION); // Control not destroyed yet
+ DALI_TEST_EQUALS(controlWrapperImpl->GetVisual(index), visual, TEST_LOCATION);
+
+ application.GetScene().Remove(controlWrapper);
+ }
+
+ DALI_TEST_EQUALS(objectDestructionTracker.IsDestroyed(), true, TEST_LOCATION); // Should be destroyed
+
+ END_TEST;
+}
+
+int UtcDaliControlWrapperEmitKeyFocusSignal(void)
+{
+ ToolkitTestApplication application;
+
+ Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl(Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT);
+ ControlWrapper controlWrapper = ControlWrapper::New(customControlTypeName, *controlWrapperImpl);
+
+ gKeyInputFocusCallBackCalled = false;
+ controlWrapper.KeyInputFocusGainedSignal().Connect(&TestKeyInputFocusCallback);
+
+ application.SendNotification();
+ application.Render();
+
+ controlWrapperImpl->EmitKeyInputFocusSignal(true);
+
+ DALI_TEST_CHECK(gKeyInputFocusCallBackCalled);
+