Upload package dali_0.9.11.
[platform/core/uifw/dali-core.git] / automated-tests / TET / dali-test-suite / images / utc-Dali-Pixel.cpp
1 //
2 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
3 //
4 // Licensed under the Flora License, Version 1.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://floralicense.org/license/
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 #include <iostream>
18 #include <algorithm>
19
20 #include <stdlib.h>
21 #include <tet_api.h>
22
23 #include <dali/public-api/dali-core.h>
24 #include <dali/public-api/images/pixel.h>
25 #include <dali-test-suite-utils.h>
26
27 using std::max;
28 using namespace Dali;
29
30 static void Startup();
31 static void Cleanup();
32
33 extern "C" {
34   void (*tet_startup)() = Startup;
35   void (*tet_cleanup)() = Cleanup;
36 }
37
38 static void UtcDaliPixelHasAlpha();
39 static void UtcDaliPixelGetBytesPerPixel();
40 static void UtcDaliPixelGetAlphaOffsetAndMask();
41
42 enum {
43   POSITIVE_TC_IDX = 0x01,
44   NEGATIVE_TC_IDX,
45 };
46
47 static const float ROTATION_EPSILON = 0.0001f;
48
49 // Add test functionality for all APIs in the class (Positive and Negative)
50 extern "C" {
51   struct tet_testlist tet_testlist[] = {
52     { UtcDaliPixelHasAlpha,               POSITIVE_TC_IDX },
53     { UtcDaliPixelGetBytesPerPixel,       POSITIVE_TC_IDX },
54     { UtcDaliPixelGetAlphaOffsetAndMask,  POSITIVE_TC_IDX },
55     { NULL, 0 }
56   };
57 }
58
59 // Called only once before first test is run.
60 static void Startup()
61 {
62 }
63
64 // Called only once after last test is run
65 static void Cleanup()
66 {
67 }
68
69 static void TestPixelEnumSize(const int size)
70 {
71   DALI_TEST_CHECK( (static_cast<int>( Pixel::LAST_VALID_PIXEL_FORMAT ) - static_cast<int>( Pixel::FIRST_VALID_PIXEL_FORMAT ) + 1 ) == size &&
72       "The Pixel::Format enum may have had new formats added. Expand the test cases to include them.");
73 }
74
75 static void UtcDaliPixelHasAlpha()
76 {
77   TestApplication application;
78
79   tet_infoline("UtcDaliPixelHasAlpha");
80
81   TestPixelEnumSize( 26 );
82
83   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::L8) == false);
84   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::RGB565) == false);
85   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::RGB888) == false);
86   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::RGB8888) == false);
87   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::BGR8888) == false);
88   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::BGR565) == false);
89   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::COMPRESSED_R11_EAC) == false);
90   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::COMPRESSED_SIGNED_R11_EAC) == false);
91   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::COMPRESSED_RG11_EAC) == false);
92   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::COMPRESSED_SIGNED_RG11_EAC) == false);
93   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::COMPRESSED_RGB8_ETC2) == false);
94   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::COMPRESSED_SRGB8_ETC2) == false);
95   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::COMPRESSED_RGB8_ETC1) == false);
96   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::COMPRESSED_RGB_PVRTC_4BPPV1) == false);
97
98   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::A8) == true);
99   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::LA88) == true);
100   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::RGBA5551) == true);
101   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::RGBA4444) == true);
102   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::RGBA8888) == true);
103   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::BGRA8888) == true);
104   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::BGRA5551) == true);
105   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::BGRA4444) == true);
106   DALI_TEST_CHECK( Pixel::HasAlpha( Pixel::COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 ) == true );
107   DALI_TEST_CHECK( Pixel::HasAlpha( Pixel::COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 ) == true );
108   DALI_TEST_CHECK( Pixel::HasAlpha( Pixel::COMPRESSED_RGBA8_ETC2_EAC ) == true );
109   DALI_TEST_CHECK( Pixel::HasAlpha( Pixel::COMPRESSED_SRGB8_ALPHA8_ETC2_EAC) == true );
110 }
111
112 static void UtcDaliPixelGetBytesPerPixel()
113 {
114   TestApplication application;
115
116   tet_infoline("UtcDaliPixelGetBytesPerPixel");
117
118   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::L8) == 1);
119   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::A8) == 1);
120
121   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::LA88) == 2);
122   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::RGB565) == 2);
123   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::RGBA5551) == 2);
124   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::RGBA4444) == 2);
125   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::BGR565) == 2);
126   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::BGRA5551) == 2);
127   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::BGRA4444) == 2);
128
129   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::RGB888) == 3);
130
131   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::RGB8888) == 4);
132   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::BGR8888) == 4);
133   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::RGBA8888) == 4);
134   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::BGRA8888) == 4);
135
136   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::L8) == 1);
137 }
138
139 static void UtcDaliPixelGetAlphaOffsetAndMask()
140 {
141   TestApplication application;
142
143   tet_infoline("UtcDaliPixelGetAlphaOffsetAndMask");
144
145   int byteOffset = 0;
146   int bitMask = 0;
147
148   // Be sure that the number of cases tested below is correct:
149   TestPixelEnumSize( 26 );
150
151   Pixel::GetAlphaOffsetAndMask(Pixel::L8, byteOffset, bitMask);
152   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
153   Pixel::GetAlphaOffsetAndMask(Pixel::A8, byteOffset, bitMask);
154   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
155   Pixel::GetAlphaOffsetAndMask(Pixel::RGB888, byteOffset, bitMask);
156   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
157   Pixel::GetAlphaOffsetAndMask(Pixel::RGB565, byteOffset, bitMask);
158   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
159   Pixel::GetAlphaOffsetAndMask(Pixel::RGB8888, byteOffset, bitMask);
160   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
161   Pixel::GetAlphaOffsetAndMask(Pixel::BGR8888, byteOffset, bitMask);
162   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
163   Pixel::GetAlphaOffsetAndMask(Pixel::LA88, byteOffset, bitMask);
164   DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0xff);
165   Pixel::GetAlphaOffsetAndMask(Pixel::RGBA4444, byteOffset, bitMask);
166   DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0x0f);
167   Pixel::GetAlphaOffsetAndMask(Pixel::RGBA5551, byteOffset, bitMask);
168   DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0x01);
169   Pixel::GetAlphaOffsetAndMask(Pixel::RGBA8888, byteOffset, bitMask);
170   DALI_TEST_CHECK( byteOffset == 3 && bitMask == 0xff);
171   Pixel::GetAlphaOffsetAndMask(Pixel::BGRA8888, byteOffset, bitMask);
172   DALI_TEST_CHECK( byteOffset == 3 && bitMask == 0xff);
173   Pixel::GetAlphaOffsetAndMask(Pixel::BGR565, byteOffset, bitMask);
174   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
175   Pixel::GetAlphaOffsetAndMask(Pixel::BGRA4444, byteOffset, bitMask);
176   DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0x0f);
177   Pixel::GetAlphaOffsetAndMask(Pixel::BGRA5551, byteOffset, bitMask);
178   DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0x01);
179
180   // Compressed formats with no meaningful result:
181   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_R11_EAC, byteOffset, bitMask);
182   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
183   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_SIGNED_R11_EAC, byteOffset, bitMask);
184   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
185   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_RG11_EAC, byteOffset, bitMask);
186   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
187   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_SIGNED_RG11_EAC, byteOffset, bitMask);
188   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
189   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_RGB8_ETC2, byteOffset, bitMask);
190   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
191   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_SRGB8_ETC2, byteOffset, bitMask);
192   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
193   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_RGB8_ETC1, byteOffset, bitMask);
194   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
195   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_RGB_PVRTC_4BPPV1, byteOffset, bitMask);
196   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
197   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, byteOffset, bitMask);
198   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
199   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, byteOffset, bitMask);
200   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
201   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_RGBA8_ETC2_EAC, byteOffset, bitMask);
202   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
203   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, byteOffset, bitMask);
204   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
205 }
206