2 * Copyright (c) 2014 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.
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>
30 static const char* gTestImageFilename = "icon_wrt.png";
32 void PrepareResourceImage( TestApplication& application, unsigned int imageHeight, unsigned int imageWidth, Pixel::Format pixelFormat )
34 TestPlatformAbstraction& platform = application.GetPlatform();
35 platform.SetClosestImageSize(Vector2( 16, 16));
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);
43 Integration::ResourcePointer resourcePtr(bitmap);
44 platform.SetResourceLoaded( 0, Dali::Integration::ResourceBitmap, resourcePtr );
49 void utc_dali_atlas_startup(void)
51 test_return_value = TET_UNDEF;
54 void utc_dali_atlas_cleanup(void)
56 test_return_value = TET_PASS;
60 int UtcDaliAtlasNew01(void)
62 TestApplication application;
64 // invoke default handle constructor
67 DALI_TEST_CHECK( !atlas );
70 atlas = Atlas::New( 16, 16 );
72 DALI_TEST_CHECK( atlas );
78 int UtcDaliAtlasUpload01(void)
80 TestApplication application;
82 Atlas atlas = Atlas::New( 16, 16, Pixel::RGBA8888 );
83 DALI_TEST_CHECK( atlas );
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 ) );
90 PrepareResourceImage( application, 16, 16, Pixel::RGBA8888 );
91 DALI_TEST_CHECK( atlas.Upload( gTestImageFilename, 0, 0 ) );
97 int UtcDaliAtlasUpload02(void)
99 TestApplication application;
101 Atlas atlas = Atlas::New( 10, 10, Pixel::RGBA8888 );
102 DALI_TEST_CHECK( atlas );
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 ) );
109 PrepareResourceImage( application, 16, 16, Pixel::A8 );
110 DALI_TEST_CHECK( !atlas.Upload( gTestImageFilename, 0, 0 ) );
116 int UtcDaliAtlasUpload03(void)
118 TestApplication application;
120 Atlas atlas = Atlas::New( 10, 10, Pixel::RGBA8888 );
121 DALI_TEST_CHECK( atlas );
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 ) );
128 PrepareResourceImage( application, 16, 16, Pixel::RGBA8888 );
129 DALI_TEST_CHECK( !atlas.Upload( gTestImageFilename, 0, 0 ) );
135 int UtcDaliAtlasUpload04(void)
137 TestApplication application;
139 Atlas atlas = Atlas::New( 32, 32, Pixel::RGBA8888 );
140 DALI_TEST_CHECK( atlas );
142 // Using valid offsets
143 PixelBuffer* buffer = new PixelBuffer[16 * 16];
144 BufferImage image = BufferImage::New( buffer, 16, 16, Pixel::RGBA8888 );
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 ) );
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 ) );
161 int UtcDaliAtlasUpload05(void)
163 TestApplication application;
165 Atlas atlas = Atlas::New( 32, 32, Pixel::RGBA8888 );
166 DALI_TEST_CHECK( atlas );
168 // Using invalid offsets
169 PixelBuffer* buffer = new PixelBuffer[16 * 16];
170 BufferImage image = BufferImage::New( buffer, 16, 16, Pixel::RGBA8888 );
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 ) );
179 PrepareResourceImage( application, 16, 16, Pixel::RGBA8888 );
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 ) );