2 * Copyright (c) 2018 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 <dali-toolkit/devel-api/visual-factory/visual-factory.h>
26 #include <dali-toolkit/internal/visuals/visual-factory-cache.h>
27 #include <dali-toolkit/internal/visuals/color/color-visual.h>
28 #include <dali-toolkit/internal/visuals/npatch-loader.h>
29 #include <dummy-visual.h>
30 #include <../dali-toolkit/dali-toolkit-test-utils/dummy-control.h>
33 using namespace Toolkit;
38 const char* TEST_VECTOR_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/insta_camera.json";
42 int UtcDaliVisualAction(void)
44 ToolkitTestApplication application;
45 tet_infoline( "Register an ImageVisual and and perform an Action on Visual directly" );
46 Vector2 controlSize( 20.f, 30.f );
49 Property::Map settings;
50 Toolkit::Internal::DummyVisualPtr dummyVisualPtr = Toolkit::Internal::DummyVisual::New( settings );
52 DummyControl dummyControl = DummyControl::New( true );
53 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
55 tet_infoline( "Register visual and stage control" );
57 Toolkit::Visual::Base visualBaseHandle = Toolkit::Visual::Base( dummyVisualPtr.Get() );
58 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visualBaseHandle );
59 dummyControl.SetSize(200.f, 200.f);
60 Stage::GetCurrent().Add( dummyControl );
62 application.SendNotification();
65 tet_infoline( "Check action counter is 0 before DoAction" );
66 DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 0, TEST_LOCATION );
68 tet_infoline( "Perform TEST_ACTION action on Visual. Should increase the action counter" );
70 Property::Map attributes;
71 Toolkit::Internal::Visual::Base& internalVisualBase = GetImplementation( visualBaseHandle );
72 internalVisualBase.DoAction( Dali::Toolkit::Internal::DummyVisual::TEST_ACTION, attributes );
73 application.SendNotification();
74 DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 1, TEST_LOCATION );
79 int UtcDaliVisualActionNotImplemented(void)
81 ToolkitTestApplication application;
82 tet_infoline( "Register an ImageVisual and and perform an Action on a Visual which does not support any Actions" );
83 Vector2 controlSize( 20.f, 30.f );
86 Property::Map settings;
87 Toolkit::Internal::DummyVisualPtr dummyVisualPtr = Toolkit::Internal::DummyVisual::New( settings );
89 DummyControl dummyControl = DummyControl::New( true );
90 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
92 tet_infoline( "Register visual and stage control" );
94 VisualFactory factory = VisualFactory::Get();
95 Property::Map propertyMap;
96 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
97 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
98 Visual::Base visual = factory.CreateVisual( propertyMap );
100 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
101 dummyControl.SetSize(200.f, 200.f);
102 Stage::GetCurrent().Add( dummyControl );
104 application.SendNotification();
105 application.Render();
107 tet_infoline( "Check action counter is 0 before DoAction" );
108 DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 0, TEST_LOCATION );
110 tet_infoline( "Perform TEST_ACTION action on Color Visual which does not support it.. Should not increment the action counter" );
111 Property::Map attributes;
112 GetImplementation( visual ).DoAction( Dali::Toolkit::Internal::DummyVisual::TEST_ACTION, attributes );
113 application.SendNotification();
114 DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 0, TEST_LOCATION );
119 int UtcDaliVisualSetProperties(void)
121 ToolkitTestApplication application;
122 tet_infoline( "Register a visual and SetProperties" );
124 Toolkit::Internal::VisualFactoryCache* factoryCache = new Toolkit::Internal::VisualFactoryCache(false);
126 //Created ColorVisual
127 Property::Map propertyMap1;
128 propertyMap1.Insert(Visual::Property::TYPE, Visual::COLOR);
129 propertyMap1.Insert(ColorVisual::Property::MIX_COLOR, Color::RED);
130 Toolkit::Internal::ColorVisualPtr colorVisualPtr = Toolkit::Internal::ColorVisual::New( *factoryCache, propertyMap1 );
132 DummyControl dummyControl = DummyControl::New( true );
133 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummyControl.GetImplementation() );
135 Toolkit::Visual::Base visualBaseHandle = Toolkit::Visual::Base( colorVisualPtr.Get() );
136 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visualBaseHandle );
137 dummyControl.SetSize( 200.f, 200.f );
138 Stage::GetCurrent().Add( dummyControl );
140 application.SendNotification();
141 application.Render();
143 Property::Map propertyMap;
144 propertyMap.Insert( Visual::Property::MIX_COLOR, Color::BLUE );
146 colorVisualPtr->SetProperties( propertyMap );
147 application.SendNotification();
148 application.Render();
150 Property::Map resultMap;
151 visualBaseHandle.CreatePropertyMap( resultMap );
153 Property::Value* colorValue = resultMap.Find( Visual::Property::MIX_COLOR, Property::VECTOR4 );
154 DALI_TEST_CHECK( colorValue );
155 DALI_TEST_CHECK( colorValue->Get< Vector4 >() == Color::BLUE );
162 int UtcDaliNPatchBufferGetRedOffsetAndMask(void)
164 TestApplication application;
166 tet_infoline("UtcDaliNPatchBufferGetRedOffsetAndMask");
171 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::A8, byteOffset, bitMask );
172 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
173 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::L8, byteOffset, bitMask );
174 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
175 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::LA88, byteOffset, bitMask );
176 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
178 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGB888, byteOffset, bitMask );
179 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xff );
180 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGB8888, byteOffset, bitMask );
181 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xff );
182 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGBA8888, byteOffset, bitMask );
183 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xff );
185 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::BGR8888, byteOffset, bitMask );
186 DALI_TEST_CHECK( byteOffset == 2 && bitMask == 0xff );
187 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::BGRA8888, byteOffset, bitMask );
188 DALI_TEST_CHECK( byteOffset == 2 && bitMask == 0xff );
190 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGB565, byteOffset, bitMask );
191 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xf8 );
193 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::BGR565, byteOffset, bitMask );
194 DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0x1f );
196 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGBA4444, byteOffset, bitMask );
197 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xf0 );
199 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::BGRA4444, byteOffset, bitMask );
200 DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0xf0 );
202 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGBA5551, byteOffset, bitMask );
203 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xf8 );
205 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::BGRA5551, byteOffset, bitMask );
206 DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0x1e );
208 // Compressed formats are not supported
209 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::INVALID, byteOffset, bitMask );
210 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
211 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_R11_EAC, byteOffset, bitMask );
212 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
213 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SIGNED_R11_EAC, byteOffset, bitMask );
214 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
215 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RG11_EAC, byteOffset, bitMask );
216 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
217 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SIGNED_RG11_EAC, byteOffset, bitMask );
218 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
219 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGB8_ETC2, byteOffset, bitMask );
220 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
221 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ETC2, byteOffset, bitMask );
222 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
223 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGB8_ETC1, byteOffset, bitMask );
224 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
225 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGB_PVRTC_4BPPV1, byteOffset, bitMask );
226 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
227 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, byteOffset, bitMask );
228 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
229 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, byteOffset, bitMask );
230 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
231 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA8_ETC2_EAC, byteOffset, bitMask );
232 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
233 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, byteOffset, bitMask );
234 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
235 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_4x4_KHR, byteOffset, bitMask );
236 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
237 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_5x4_KHR, byteOffset, bitMask );
238 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
239 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_5x5_KHR, byteOffset, bitMask );
240 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
241 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_6x5_KHR, byteOffset, bitMask );
242 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
243 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_6x6_KHR, byteOffset, bitMask );
244 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
245 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_8x5_KHR, byteOffset, bitMask );
246 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
247 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_8x6_KHR, byteOffset, bitMask );
248 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
249 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_8x8_KHR, byteOffset, bitMask );
250 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
251 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_10x5_KHR, byteOffset, bitMask );
252 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
253 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_10x6_KHR, byteOffset, bitMask );
254 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
255 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_10x8_KHR, byteOffset, bitMask );
256 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
257 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_10x10_KHR, byteOffset, bitMask );
258 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
259 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_12x10_KHR, byteOffset, bitMask );
260 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
261 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_12x12_KHR, byteOffset, bitMask );
262 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
263 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR, byteOffset, bitMask );
264 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
265 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR, byteOffset, bitMask );
266 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
267 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR, byteOffset, bitMask );
268 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
269 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR, byteOffset, bitMask );
270 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
271 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR, byteOffset, bitMask );
272 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
273 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR, byteOffset, bitMask );
274 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
275 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR, byteOffset, bitMask );
276 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
277 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR, byteOffset, bitMask );
278 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
279 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR, byteOffset, bitMask );
280 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
281 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR, byteOffset, bitMask );
282 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
283 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR, byteOffset, bitMask );
284 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
285 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, byteOffset, bitMask );
286 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
287 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR, byteOffset, bitMask );
288 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
289 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR, byteOffset, bitMask );
290 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
293 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGB16F, byteOffset, bitMask );
294 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
295 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGB32F, byteOffset, bitMask );
296 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
301 int UtcDaliAnimatedVectorImageVisualCreateInstancePropertyMap(void)
303 ToolkitTestApplication application;
304 tet_infoline( "UtcDaliAnimatedVectorImageVisualCreateInstancePropertyMap" );
306 Property::Map propertyMap;
307 propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
308 .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME );
310 // request AnimatedVectorImageVisual with a property map
311 VisualFactory factory = VisualFactory::Get();
312 Visual::Base visual = factory.CreateVisual( propertyMap );
313 Toolkit::Internal::Visual::Base& visualImpl = GetImplementation( visual );
315 Property::Map resultMap;
316 visualImpl.CreateInstancePropertyMap( resultMap );
318 // check the property values from the returned map from a visual
319 DALI_TEST_CHECK( resultMap.Empty() ); // Now the map is empty