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