Remove dali-any from Property::Value
[platform/core/uifw/dali-core.git] / automated-tests / src / dali-devel / utc-Dali-Atlas.cpp
1 /*
2  * Copyright (c) 2014 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 #include <algorithm>
20 #include <stdlib.h>
21 #include <dali/public-api/dali-core.h>
22 #include <dali/integration-api/bitmap.h>
23 #include <dali/devel-api/images/atlas.h>
24 #include <dali-test-suite-utils.h>
25 #include <test-native-image.h>
26
27 using namespace Dali;
28
29 namespace
30 {
31 static const char* gTestImageFilename = "icon_wrt.png";
32
33 void PrepareResourceImage( TestApplication& application, unsigned int imageHeight, unsigned int imageWidth, Pixel::Format pixelFormat )
34 {
35   TestPlatformAbstraction& platform = application.GetPlatform();
36   platform.SetClosestImageSize(Vector2( 16, 16));
37
38   Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::RETAIN );
39   Integration::PixelBuffer* pixbuffer = bitmap->GetPackedPixelsProfile()->ReserveBuffer( pixelFormat, imageWidth, imageHeight, imageWidth, imageHeight );
40   unsigned int bytesPerPixel = GetBytesPerPixel(  pixelFormat );
41   unsigned int initialColor = 0xFF;
42   memset( pixbuffer, initialColor, imageHeight*imageWidth*bytesPerPixel);
43
44   Integration::ResourcePointer resourcePtr(bitmap);
45   platform.SetResourceLoaded( 0, Dali::Integration::ResourceBitmap, resourcePtr );
46 }
47
48 }
49
50 void utc_dali_atlas_startup(void)
51 {
52   test_return_value = TET_UNDEF;
53 }
54
55 void utc_dali_atlas_cleanup(void)
56 {
57   test_return_value = TET_PASS;
58 }
59
60 // 1.1
61 int UtcDaliAtlasNew01(void)
62 {
63   TestApplication application;
64
65   // invoke default handle constructor
66   Atlas atlas;
67
68   DALI_TEST_CHECK( !atlas );
69
70   // initialise handle
71   atlas = Atlas::New( 16, 16 );
72
73   DALI_TEST_CHECK( atlas );
74   END_TEST;
75 }
76
77
78 // 1.2
79 int UtcDaliAtlasUpload01(void)
80 {
81   TestApplication application;
82
83   Atlas atlas = Atlas::New( 16, 16, Pixel::RGBA8888 );
84   DALI_TEST_CHECK( atlas );
85
86   // Using correct pixel format
87   PixelBuffer* buffer = new PixelBuffer[16 * 16];
88   BufferImage image = BufferImage::New( buffer, 16, 16, Pixel::RGBA8888 );
89   DALI_TEST_CHECK( atlas.Upload( image, 0, 0 ) );
90
91   PrepareResourceImage( application, 16, 16, Pixel::RGBA8888 );
92   DALI_TEST_CHECK( atlas.Upload( gTestImageFilename, 0, 0 ) );
93
94   END_TEST;
95 }
96
97 // 1.3
98 int UtcDaliAtlasUpload02(void)
99 {
100   TestApplication application;
101
102   Atlas atlas = Atlas::New( 10, 10, Pixel::RGBA8888 );
103   DALI_TEST_CHECK( atlas );
104
105   // Using INCORRECT pixel format
106   PixelBuffer* buffer = new PixelBuffer[16 * 16];
107   BufferImage image = BufferImage::New( buffer, 16, 16, Pixel::A8 );
108   DALI_TEST_CHECK( !atlas.Upload( image, 0, 0 ) );
109
110   PrepareResourceImage( application, 16, 16, Pixel::A8 );
111   DALI_TEST_CHECK( !atlas.Upload( gTestImageFilename, 0, 0 ) );
112
113   END_TEST;
114 }
115
116 // 1.4
117 int UtcDaliAtlasUpload03(void)
118 {
119   TestApplication application;
120
121   Atlas atlas = Atlas::New( 10, 10, Pixel::RGBA8888 );
122   DALI_TEST_CHECK( atlas );
123
124   // Using image too big for atlas
125   PixelBuffer* buffer = new PixelBuffer[16 * 16];
126   BufferImage image = BufferImage::New( buffer, 16, 16, Pixel::RGBA8888 );
127   DALI_TEST_CHECK( !atlas.Upload( image, 0, 0 ) );
128
129   PrepareResourceImage( application, 16, 16, Pixel::RGBA8888 );
130   DALI_TEST_CHECK( !atlas.Upload( gTestImageFilename, 0, 0 ) );
131
132   END_TEST;
133 }
134
135 // 1.5
136 int UtcDaliAtlasUpload04(void)
137 {
138   TestApplication application;
139
140   Atlas atlas = Atlas::New( 32, 32, Pixel::RGBA8888 );
141   DALI_TEST_CHECK( atlas );
142
143   // Using valid offsets
144   PixelBuffer* buffer = new PixelBuffer[16 * 16];
145   BufferImage image = BufferImage::New( buffer, 16, 16, Pixel::RGBA8888 );
146
147   DALI_TEST_CHECK( atlas.Upload( image,  0,  0 ) );
148   DALI_TEST_CHECK( atlas.Upload( image, 16,  0 ) );
149   DALI_TEST_CHECK( atlas.Upload( image,  0, 16 ) );
150   DALI_TEST_CHECK( atlas.Upload( image, 16, 16 ) );
151
152   PrepareResourceImage( application, 16, 16, Pixel::RGBA8888 );
153   DALI_TEST_CHECK( atlas.Upload( gTestImageFilename,  0,  0 ) );
154   DALI_TEST_CHECK( atlas.Upload( gTestImageFilename, 16,  0 ) );
155   DALI_TEST_CHECK( atlas.Upload( gTestImageFilename,  0, 16 ) );
156   DALI_TEST_CHECK( atlas.Upload( gTestImageFilename, 16, 16 ) );
157
158   END_TEST;
159 }
160
161 // 1.6
162 int UtcDaliAtlasUpload05(void)
163 {
164   TestApplication application;
165
166   Atlas atlas = Atlas::New( 32, 32, Pixel::RGBA8888 );
167   DALI_TEST_CHECK( atlas );
168
169   // Using invalid offsets
170   PixelBuffer* buffer = new PixelBuffer[16 * 16];
171   BufferImage image = BufferImage::New( buffer, 16, 16, Pixel::RGBA8888 );
172
173   DALI_TEST_CHECK( !atlas.Upload( image,  0, 17 ) );
174   DALI_TEST_CHECK( !atlas.Upload( image, 17,  0 ) );
175   DALI_TEST_CHECK( !atlas.Upload( image, 17, 17 ) );
176   DALI_TEST_CHECK( !atlas.Upload( image, 99,  0 ) );
177   DALI_TEST_CHECK( !atlas.Upload( image,  0, 99 ) );
178   DALI_TEST_CHECK( !atlas.Upload( image, 99, 99 ) );
179
180   PrepareResourceImage( application, 16, 16, Pixel::RGBA8888 );
181
182   DALI_TEST_CHECK( !atlas.Upload( gTestImageFilename,  0, 17 ) );
183   DALI_TEST_CHECK( !atlas.Upload( gTestImageFilename, 17,  0 ) );
184   DALI_TEST_CHECK( !atlas.Upload( gTestImageFilename, 17, 17 ) );
185   DALI_TEST_CHECK( !atlas.Upload( gTestImageFilename, 99,  0 ) );
186   DALI_TEST_CHECK( !atlas.Upload( gTestImageFilename,  0, 99 ) );
187   DALI_TEST_CHECK( !atlas.Upload( gTestImageFilename, 99, 99 ) );
188
189   END_TEST;
190 }
191