Merge "Add new layouting support for TextLabel and ImageView." into devel/master
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-internal / utc-Dali-Visuals-internal.cpp
1 /*
2  * Copyright (c) 2018 Samsung Electronics Co., Ltd.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16  */
17
18 #include <iostream>
19
20 #include <stdlib.h>
21
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>
31
32 using namespace Dali;
33 using namespace Toolkit;
34
35 int UtcDaliVisualAction(void)
36 {
37   ToolkitTestApplication application;
38   tet_infoline( "Register an ImageVisual and and perform an Action on Visual directly" );
39   Vector2 controlSize( 20.f, 30.f );
40
41   //Created DummyVisual
42   Property::Map settings;
43   Toolkit::Internal::DummyVisualPtr dummyVisualPtr = Toolkit::Internal::DummyVisual::New( settings );
44
45   DummyControl dummyControl = DummyControl::New( true );
46   Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
47
48   tet_infoline( "Register visual and stage control" );
49
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 );
54
55   application.SendNotification();
56   application.Render();
57
58   tet_infoline( "Check action counter is 0 before DoAction" );
59   DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 0, TEST_LOCATION );
60
61   tet_infoline( "Perform TEST_ACTION action on Visual. Should increase the action counter" );
62
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 );
68
69   END_TEST;
70 }
71
72 int UtcDaliVisualActionNotImplemented(void)
73 {
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 );
77
78   //Created DummyVisual
79   Property::Map settings;
80   Toolkit::Internal::DummyVisualPtr dummyVisualPtr = Toolkit::Internal::DummyVisual::New( settings );
81
82   DummyControl dummyControl = DummyControl::New( true );
83   Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
84
85   tet_infoline( "Register visual and stage control" );
86
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 );
92
93   dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
94   dummyControl.SetSize(200.f, 200.f);
95   Stage::GetCurrent().Add( dummyControl );
96
97   application.SendNotification();
98   application.Render();
99
100   tet_infoline( "Check action counter is 0 before DoAction" );
101   DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 0, TEST_LOCATION );
102
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 );
108
109   END_TEST;
110 }
111
112 int UtcDaliVisualSetProperties(void)
113 {
114   ToolkitTestApplication application;
115   tet_infoline( "Register a visual and SetProperties" );
116
117   Toolkit::Internal::VisualFactoryCache* factoryCache = new Toolkit::Internal::VisualFactoryCache(false);
118
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 );
124
125   DummyControl dummyControl = DummyControl::New( true );
126   Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummyControl.GetImplementation() );
127
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 );
132
133   application.SendNotification();
134   application.Render();
135
136   Property::Map propertyMap;
137   propertyMap.Insert( Visual::Property::MIX_COLOR,  Color::BLUE );
138
139   colorVisualPtr->SetProperties( propertyMap );
140   application.SendNotification();
141   application.Render();
142
143   Property::Map resultMap;
144   visualBaseHandle.CreatePropertyMap( resultMap );
145
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 );
149
150   delete factoryCache;
151
152   END_TEST;
153 }
154
155 int UtcDaliNPatchBufferGetRedOffsetAndMask(void)
156 {
157   TestApplication application;
158
159   tet_infoline("UtcDaliNPatchBufferGetRedOffsetAndMask");
160
161   int byteOffset = 0;
162   int bitMask = 0;
163
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 );
170
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 );
177
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 );
182
183   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGB565, byteOffset, bitMask );
184   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xf8 );
185
186   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::BGR565, byteOffset, bitMask );
187   DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0x1f );
188
189   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGBA4444, byteOffset, bitMask );
190   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xf0 );
191
192   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::BGRA4444, byteOffset, bitMask );
193   DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0xf0 );
194
195   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGBA5551, byteOffset, bitMask );
196   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xf8 );
197
198   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::BGRA5551, byteOffset, bitMask );
199   DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0x1e );
200
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 );
284
285   // Not supported
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 );
290
291   END_TEST;
292 }