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;
35 int UtcDaliVisualAction(void)
37 ToolkitTestApplication application;
38 tet_infoline( "Register an ImageVisual and and perform an Action on Visual directly" );
39 Vector2 controlSize( 20.f, 30.f );
42 Property::Map settings;
43 Toolkit::Internal::DummyVisualPtr dummyVisualPtr = Toolkit::Internal::DummyVisual::New( settings );
45 DummyControl dummyControl = DummyControl::New( true );
46 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
48 tet_infoline( "Register visual and stage control" );
50 Toolkit::Visual::Base visualBaseHandle = Toolkit::Visual::Base( dummyVisualPtr.Get() );
51 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visualBaseHandle );
52 dummyControl.SetSize(200.f, 200.f);
53 Stage::GetCurrent().Add( dummyControl );
55 application.SendNotification();
58 tet_infoline( "Check action counter is 0 before DoAction" );
59 DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 0, TEST_LOCATION );
61 tet_infoline( "Perform TEST_ACTION action on Visual. Should increase the action counter" );
63 Property::Map attributes;
64 Toolkit::Internal::Visual::Base& internalVisualBase = GetImplementation( visualBaseHandle );
65 internalVisualBase.DoAction( Dali::Toolkit::Internal::DummyVisual::TEST_ACTION, attributes );
66 application.SendNotification();
67 DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 1, TEST_LOCATION );
72 int UtcDaliVisualActionNotImplemented(void)
74 ToolkitTestApplication application;
75 tet_infoline( "Register an ImageVisual and and perform an Action on a Visual which does not support any Actions" );
76 Vector2 controlSize( 20.f, 30.f );
79 Property::Map settings;
80 Toolkit::Internal::DummyVisualPtr dummyVisualPtr = Toolkit::Internal::DummyVisual::New( settings );
82 DummyControl dummyControl = DummyControl::New( true );
83 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
85 tet_infoline( "Register visual and stage control" );
87 VisualFactory factory = VisualFactory::Get();
88 Property::Map propertyMap;
89 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
90 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
91 Visual::Base visual = factory.CreateVisual( propertyMap );
93 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
94 dummyControl.SetSize(200.f, 200.f);
95 Stage::GetCurrent().Add( dummyControl );
97 application.SendNotification();
100 tet_infoline( "Check action counter is 0 before DoAction" );
101 DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 0, TEST_LOCATION );
103 tet_infoline( "Perform TEST_ACTION action on Color Visual which does not support it.. Should not increment the action counter" );
104 Property::Map attributes;
105 GetImplementation( visual ).DoAction( Dali::Toolkit::Internal::DummyVisual::TEST_ACTION, attributes );
106 application.SendNotification();
107 DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 0, TEST_LOCATION );
112 int UtcDaliVisualSetProperties(void)
114 ToolkitTestApplication application;
115 tet_infoline( "Register a visual and SetProperties" );
117 Toolkit::Internal::VisualFactoryCache* factoryCache = new Toolkit::Internal::VisualFactoryCache(false);
119 //Created ColorVisual
120 Property::Map propertyMap1;
121 propertyMap1.Insert(Visual::Property::TYPE, Visual::COLOR);
122 propertyMap1.Insert(ColorVisual::Property::MIX_COLOR, Color::RED);
123 Toolkit::Internal::ColorVisualPtr colorVisualPtr = Toolkit::Internal::ColorVisual::New( *factoryCache, propertyMap1 );
125 DummyControl dummyControl = DummyControl::New( true );
126 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummyControl.GetImplementation() );
128 Toolkit::Visual::Base visualBaseHandle = Toolkit::Visual::Base( colorVisualPtr.Get() );
129 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visualBaseHandle );
130 dummyControl.SetSize( 200.f, 200.f );
131 Stage::GetCurrent().Add( dummyControl );
133 application.SendNotification();
134 application.Render();
136 Property::Map propertyMap;
137 propertyMap.Insert( Visual::Property::MIX_COLOR, Color::BLUE );
139 colorVisualPtr->SetProperties( propertyMap );
140 application.SendNotification();
141 application.Render();
143 Property::Map resultMap;
144 visualBaseHandle.CreatePropertyMap( resultMap );
146 Property::Value* colorValue = resultMap.Find( Visual::Property::MIX_COLOR, Property::VECTOR4 );
147 DALI_TEST_CHECK( colorValue );
148 DALI_TEST_CHECK( colorValue->Get< Vector4 >() == Color::BLUE );
155 int UtcDaliNPatchBufferGetRedOffsetAndMask(void)
157 TestApplication application;
159 tet_infoline("UtcDaliNPatchBufferGetRedOffsetAndMask");
164 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::A8, byteOffset, bitMask );
165 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
166 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::L8, byteOffset, bitMask );
167 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
168 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::LA88, byteOffset, bitMask );
169 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
171 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGB888, byteOffset, bitMask );
172 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xff );
173 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGB8888, byteOffset, bitMask );
174 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xff );
175 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGBA8888, byteOffset, bitMask );
176 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xff );
178 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::BGR8888, byteOffset, bitMask );
179 DALI_TEST_CHECK( byteOffset == 2 && bitMask == 0xff );
180 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::BGRA8888, byteOffset, bitMask );
181 DALI_TEST_CHECK( byteOffset == 2 && bitMask == 0xff );
183 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGB565, byteOffset, bitMask );
184 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xf8 );
186 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::BGR565, byteOffset, bitMask );
187 DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0x1f );
189 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGBA4444, byteOffset, bitMask );
190 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xf0 );
192 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::BGRA4444, byteOffset, bitMask );
193 DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0xf0 );
195 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGBA5551, byteOffset, bitMask );
196 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xf8 );
198 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::BGRA5551, byteOffset, bitMask );
199 DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0x1e );
201 // Compressed formats are not supported
202 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::INVALID, byteOffset, bitMask );
203 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
204 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_R11_EAC, byteOffset, bitMask );
205 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
206 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SIGNED_R11_EAC, byteOffset, bitMask );
207 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
208 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RG11_EAC, byteOffset, bitMask );
209 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
210 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SIGNED_RG11_EAC, byteOffset, bitMask );
211 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
212 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGB8_ETC2, byteOffset, bitMask );
213 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
214 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ETC2, byteOffset, bitMask );
215 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
216 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGB8_ETC1, byteOffset, bitMask );
217 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
218 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGB_PVRTC_4BPPV1, byteOffset, bitMask );
219 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
220 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, byteOffset, bitMask );
221 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
222 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, byteOffset, bitMask );
223 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
224 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA8_ETC2_EAC, byteOffset, bitMask );
225 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
226 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, byteOffset, bitMask );
227 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
228 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_4x4_KHR, byteOffset, bitMask );
229 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
230 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_5x4_KHR, byteOffset, bitMask );
231 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
232 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_5x5_KHR, byteOffset, bitMask );
233 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
234 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_6x5_KHR, byteOffset, bitMask );
235 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
236 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_6x6_KHR, byteOffset, bitMask );
237 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
238 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_8x5_KHR, byteOffset, bitMask );
239 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
240 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_8x6_KHR, byteOffset, bitMask );
241 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
242 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_8x8_KHR, byteOffset, bitMask );
243 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
244 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_10x5_KHR, byteOffset, bitMask );
245 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
246 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_10x6_KHR, byteOffset, bitMask );
247 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
248 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_10x8_KHR, byteOffset, bitMask );
249 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
250 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_10x10_KHR, byteOffset, bitMask );
251 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
252 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_12x10_KHR, byteOffset, bitMask );
253 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
254 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_12x12_KHR, byteOffset, bitMask );
255 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
256 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR, byteOffset, bitMask );
257 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
258 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR, byteOffset, bitMask );
259 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
260 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR, byteOffset, bitMask );
261 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
262 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR, byteOffset, bitMask );
263 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
264 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR, byteOffset, bitMask );
265 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
266 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR, byteOffset, bitMask );
267 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
268 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR, byteOffset, bitMask );
269 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
270 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR, byteOffset, bitMask );
271 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
272 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR, byteOffset, bitMask );
273 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
274 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR, byteOffset, bitMask );
275 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
276 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR, byteOffset, bitMask );
277 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
278 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, byteOffset, bitMask );
279 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
280 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR, byteOffset, bitMask );
281 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
282 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR, byteOffset, bitMask );
283 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
286 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGB16F, byteOffset, bitMask );
287 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
288 Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGB32F, byteOffset, bitMask );
289 DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );