2 * Copyright (c) 2020 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-toolkit-test-suite-utils.h>
23 #include <dali-toolkit/dali-toolkit.h>
24 #include <toolkit-text-utils.h>
25 #include <toolkit-event-thread-callback.h>
26 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
27 #include <dali-toolkit/internal/visuals/visual-factory-cache.h>
28 #include <dali-toolkit/internal/visuals/color/color-visual.h>
29 #include <dummy-visual.h>
30 #include <../dali-toolkit/dali-toolkit-test-utils/dummy-control.h>
31 #include <dali-toolkit/devel-api/visuals/arc-visual-properties-devel.h>
34 using namespace Toolkit;
39 const char* TEST_VECTOR_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/insta_camera.json";
43 int UtcDaliVisualAction(void)
45 ToolkitTestApplication application;
46 tet_infoline( "Register an ImageVisual and and perform an Action on Visual directly" );
47 Vector2 controlSize( 20.f, 30.f );
50 Property::Map settings;
51 Toolkit::Internal::DummyVisualPtr dummyVisualPtr = Toolkit::Internal::DummyVisual::New( settings );
53 DummyControl dummyControl = DummyControl::New( true );
54 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
56 tet_infoline( "Register visual and stage control" );
58 Toolkit::Visual::Base visualBaseHandle = Toolkit::Visual::Base( dummyVisualPtr.Get() );
59 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visualBaseHandle );
60 dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
61 application.GetScene().Add( dummyControl );
63 application.SendNotification();
66 tet_infoline( "Check action counter is 0 before DoAction" );
67 DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 0, TEST_LOCATION );
69 tet_infoline( "Perform TEST_ACTION action on Visual. Should increase the action counter" );
71 Property::Map attributes;
72 Toolkit::Internal::Visual::Base& internalVisualBase = GetImplementation( visualBaseHandle );
73 internalVisualBase.DoAction( Dali::Toolkit::Internal::DummyVisual::TEST_ACTION, attributes );
74 application.SendNotification();
75 DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 1, TEST_LOCATION );
80 int UtcDaliVisualActionNotImplemented(void)
82 ToolkitTestApplication application;
83 tet_infoline( "Register an ImageVisual and and perform an Action on a Visual which does not support any Actions" );
84 Vector2 controlSize( 20.f, 30.f );
87 Property::Map settings;
88 Toolkit::Internal::DummyVisualPtr dummyVisualPtr = Toolkit::Internal::DummyVisual::New( settings );
90 DummyControl dummyControl = DummyControl::New( true );
91 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
93 tet_infoline( "Register visual and stage control" );
95 VisualFactory factory = VisualFactory::Get();
96 Property::Map propertyMap;
97 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
98 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
99 Visual::Base visual = factory.CreateVisual( propertyMap );
101 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
102 dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
103 application.GetScene().Add( dummyControl );
105 application.SendNotification();
106 application.Render();
108 tet_infoline( "Check action counter is 0 before DoAction" );
109 DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 0, TEST_LOCATION );
111 tet_infoline( "Perform TEST_ACTION action on Color Visual which does not support it.. Should not increment the action counter" );
112 Property::Map attributes;
113 GetImplementation( visual ).DoAction( Dali::Toolkit::Internal::DummyVisual::TEST_ACTION, attributes );
114 application.SendNotification();
115 DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 0, TEST_LOCATION );
120 int UtcDaliVisualSetProperties(void)
122 ToolkitTestApplication application;
123 tet_infoline( "Register a visual and SetProperties" );
125 Toolkit::Internal::VisualFactoryCache* factoryCache = new Toolkit::Internal::VisualFactoryCache(false);
127 //Created ColorVisual
128 Property::Map propertyMap1;
129 propertyMap1.Insert(Visual::Property::TYPE, Visual::COLOR);
130 propertyMap1.Insert(ColorVisual::Property::MIX_COLOR, Color::RED);
131 Toolkit::Internal::ColorVisualPtr colorVisualPtr = Toolkit::Internal::ColorVisual::New( *factoryCache, propertyMap1 );
133 DummyControl dummyControl = DummyControl::New( true );
134 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummyControl.GetImplementation() );
136 Toolkit::Visual::Base visualBaseHandle = Toolkit::Visual::Base( colorVisualPtr.Get() );
137 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visualBaseHandle );
138 dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
139 application.GetScene().Add( dummyControl );
141 application.SendNotification();
142 application.Render();
144 Property::Map propertyMap;
145 propertyMap.Insert( Visual::Property::MIX_COLOR, Color::BLUE );
147 colorVisualPtr->SetProperties( propertyMap );
148 application.SendNotification();
149 application.Render();
151 Property::Map resultMap;
152 visualBaseHandle.CreatePropertyMap( resultMap );
154 Property::Value* colorValue = resultMap.Find( Visual::Property::MIX_COLOR, Property::VECTOR4 );
155 DALI_TEST_CHECK( colorValue );
156 DALI_TEST_CHECK( colorValue->Get< Vector4 >() == Color::BLUE );
163 int UtcDaliAnimatedVectorImageVisualCreateInstancePropertyMap(void)
165 ToolkitTestApplication application;
166 tet_infoline( "UtcDaliAnimatedVectorImageVisualCreateInstancePropertyMap" );
168 Property::Map propertyMap;
169 propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
170 .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME );
172 // request AnimatedVectorImageVisual with a property map
173 VisualFactory factory = VisualFactory::Get();
174 Visual::Base visual = factory.CreateVisual( propertyMap );
175 Toolkit::Internal::Visual::Base& visualImpl = GetImplementation( visual );
177 Property::Map resultMap;
178 visualImpl.CreateInstancePropertyMap( resultMap );
180 // check the property values from the returned map from a visual
181 DALI_TEST_CHECK( resultMap.Empty() ); // Now the map is empty
186 int UtcDaliAnimatedVectorImageVisualSetProperties(void)
188 ToolkitTestApplication application;
189 tet_infoline( "UtcDaliAnimatedVectorImageVisualSetProperties" );
191 Property::Map propertyMap;
192 propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
193 .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME )
194 .Add( DevelImageVisual::Property::LOOP_COUNT, 3 )
195 .Add( DevelImageVisual::Property::PLAY_RANGE, Vector2( 0.2f, 0.8f ) );
197 Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap );
198 Toolkit::Internal::Visual::Base& visualImpl = GetImplementation( visual );
199 DALI_TEST_CHECK( visual );
201 DummyControl actor = DummyControl::New( true );
202 DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
203 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
204 actor.SetProperty( Actor::Property::SIZE, Vector2( 200.0f, 200.0f ) );
205 application.GetScene().Add( actor );
207 application.SendNotification();
208 application.Render();
210 // renderer is added to actor
211 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
212 Renderer renderer = actor.GetRendererAt( 0u );
213 DALI_TEST_CHECK( renderer );
215 Property::Map propertyMap1;
216 propertyMap1.Add( DevelImageVisual::Property::LOOP_COUNT, 1 )
217 .Add( DevelImageVisual::Property::PLAY_RANGE, Vector2( 0.4f, 0.6f ) );
219 visualImpl.SetProperties( propertyMap1 );
221 application.SendNotification();
222 application.Render();
224 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
225 renderer = actor.GetRendererAt( 0u );
226 DALI_TEST_CHECK( renderer );
229 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
234 int UtcDaliArcVisualCreateInstancePropertyMap(void)
236 ToolkitTestApplication application;
237 tet_infoline( "UtcDaliArcVisualCreateInstancePropertyMap" );
239 Property::Map propertyMap;
240 propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ARC )
241 .Add( DevelArcVisual::Property::THICKNESS, 20.0f );
243 // request ArcVisual with a property map
244 VisualFactory factory = VisualFactory::Get();
245 Visual::Base visual = factory.CreateVisual( propertyMap );
246 Toolkit::Internal::Visual::Base& visualImpl = GetImplementation( visual );
248 Property::Map resultMap;
249 visualImpl.CreateInstancePropertyMap( resultMap );
251 // check the property values from the returned map from a visual
252 DALI_TEST_CHECK( resultMap.Empty() ); // Now the map is empty