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-test-suite-utils.h>
23 #include <test-native-image.h>
29 static const char* gTestImageFilename = "icon_wrt.png";
31 void PrepareResourceImage( TestApplication& application, unsigned int imageHeight, unsigned int imageWidth, Pixel::Format pixelFormat )
33 TestPlatformAbstraction& platform = application.GetPlatform();
34 platform.SetClosestImageSize(Vector2( 16, 16));
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);
42 Integration::ResourcePointer resourcePtr(bitmap);
43 platform.SetResourceLoaded( 0, Dali::Integration::ResourceBitmap, resourcePtr );
48 void utc_dali_atlas_startup(void)
50 test_return_value = TET_UNDEF;
53 void utc_dali_atlas_cleanup(void)
55 test_return_value = TET_PASS;
59 int UtcDaliAtlasNew01(void)
61 TestApplication application;
63 // invoke default handle constructor
66 DALI_TEST_CHECK( !atlas );
69 atlas = Atlas::New( 16, 16 );
71 DALI_TEST_CHECK( atlas );
77 int UtcDaliAtlasUpload01(void)
79 TestApplication application;
81 Atlas atlas = Atlas::New( 16, 16, Pixel::RGBA8888 );
82 DALI_TEST_CHECK( atlas );
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 ) );
89 PrepareResourceImage( application, 16, 16, Pixel::RGBA8888 );
90 DALI_TEST_CHECK( atlas.Upload( gTestImageFilename, 0, 0 ) );
96 int UtcDaliAtlasUpload02(void)
98 TestApplication application;
100 Atlas atlas = Atlas::New( 10, 10, Pixel::RGBA8888 );
101 DALI_TEST_CHECK( atlas );
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 ) );
108 PrepareResourceImage( application, 16, 16, Pixel::A8 );
109 DALI_TEST_CHECK( !atlas.Upload( gTestImageFilename, 0, 0 ) );
115 int UtcDaliAtlasUpload03(void)
117 TestApplication application;
119 Atlas atlas = Atlas::New( 10, 10, Pixel::RGBA8888 );
120 DALI_TEST_CHECK( atlas );
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 ) );
127 PrepareResourceImage( application, 16, 16, Pixel::RGBA8888 );
128 DALI_TEST_CHECK( !atlas.Upload( gTestImageFilename, 0, 0 ) );
134 int UtcDaliAtlasUpload04(void)
136 TestApplication application;
138 Atlas atlas = Atlas::New( 32, 32, Pixel::RGBA8888 );
139 DALI_TEST_CHECK( atlas );
141 // Using valid offsets
142 PixelBuffer* buffer = new PixelBuffer[16 * 16];
143 BufferImage image = BufferImage::New( buffer, 16, 16, Pixel::RGBA8888 );
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 ) );
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 ) );
160 int UtcDaliAtlasUpload05(void)
162 TestApplication application;
164 Atlas atlas = Atlas::New( 32, 32, Pixel::RGBA8888 );
165 DALI_TEST_CHECK( atlas );
167 // Using invalid offsets
168 PixelBuffer* buffer = new PixelBuffer[16 * 16];
169 BufferImage image = BufferImage::New( buffer, 16, 16, Pixel::RGBA8888 );
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 ) );
178 PrepareResourceImage( application, 16, 16, Pixel::RGBA8888 );
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 ) );