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