Merge remote-tracking branch 'origin/tizen' into devel/new_mesh
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / utc-Dali-Pixel.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
21 #include <stdlib.h>
22 #include <dali/public-api/dali-core.h>
23 #include <dali-test-suite-utils.h>
24
25 using std::max;
26 using namespace Dali;
27
28
29 static const float ROTATION_EPSILON = 0.0001f;
30
31 void utc_dali_pixel_startup(void)
32 {
33   test_return_value = TET_UNDEF;
34 }
35
36 void utc_dali_pixel_cleanup(void)
37 {
38   test_return_value = TET_PASS;
39 }
40
41 static void TestPixelEnumSize(const int size)
42 {
43   DALI_TEST_CHECK( (static_cast<int>( Pixel::LAST_VALID_PIXEL_FORMAT ) - static_cast<int>( Pixel::FIRST_VALID_PIXEL_FORMAT ) + 1 ) == size &&
44       "The Pixel::Format enum may have had new formats added. Expand the test cases to include them.");
45 }
46
47 int UtcDaliPixelHasAlpha(void)
48 {
49   TestApplication application;
50
51   tet_infoline("UtcDaliPixelHasAlpha");
52
53   TestPixelEnumSize( 26 );
54
55   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::L8) == false);
56   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::RGB565) == false);
57   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::RGB888) == false);
58   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::RGB8888) == false);
59   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::BGR8888) == false);
60   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::BGR565) == false);
61   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::COMPRESSED_R11_EAC) == false);
62   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::COMPRESSED_SIGNED_R11_EAC) == false);
63   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::COMPRESSED_RG11_EAC) == false);
64   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::COMPRESSED_SIGNED_RG11_EAC) == false);
65   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::COMPRESSED_RGB8_ETC2) == false);
66   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::COMPRESSED_SRGB8_ETC2) == false);
67   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::COMPRESSED_RGB8_ETC1) == false);
68   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::COMPRESSED_RGB_PVRTC_4BPPV1) == false);
69
70   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::A8) == true);
71   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::LA88) == true);
72   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::RGBA5551) == true);
73   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::RGBA4444) == true);
74   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::RGBA8888) == true);
75   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::BGRA8888) == true);
76   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::BGRA5551) == true);
77   DALI_TEST_CHECK( Pixel::HasAlpha(Pixel::BGRA4444) == true);
78   DALI_TEST_CHECK( Pixel::HasAlpha( Pixel::COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 ) == true );
79   DALI_TEST_CHECK( Pixel::HasAlpha( Pixel::COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 ) == true );
80   DALI_TEST_CHECK( Pixel::HasAlpha( Pixel::COMPRESSED_RGBA8_ETC2_EAC ) == true );
81   DALI_TEST_CHECK( Pixel::HasAlpha( Pixel::COMPRESSED_SRGB8_ALPHA8_ETC2_EAC) == true );
82
83   END_TEST;
84 }
85
86 int UtcDaliPixelHasAlphaN(void)
87 {
88   DALI_TEST_EQUALS( Pixel::HasAlpha( Pixel::Format( 123123123123 ) ), false, TEST_LOCATION );
89   END_TEST;
90 }
91
92 int UtcDaliPixelGetBytesPerPixel(void)
93 {
94   TestApplication application;
95
96   tet_infoline("UtcDaliPixelGetBytesPerPixel");
97
98   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::L8) == 1);
99   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::A8) == 1);
100
101   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::LA88) == 2);
102   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::RGB565) == 2);
103   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::RGBA5551) == 2);
104   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::RGBA4444) == 2);
105   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::BGR565) == 2);
106   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::BGRA5551) == 2);
107   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::BGRA4444) == 2);
108
109   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::RGB888) == 3);
110
111   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::RGB8888) == 4);
112   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::BGR8888) == 4);
113   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::RGBA8888) == 4);
114   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::BGRA8888) == 4);
115
116   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::L8) == 1);
117
118   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::COMPRESSED_R11_EAC) == 0);
119
120   END_TEST;
121 }
122
123 int UtcDaliPixelGetBytesPerPixelN(void)
124 {
125   DALI_TEST_EQUALS( Pixel::GetBytesPerPixel( Pixel::Format( 123123123123 ) ), 0u, TEST_LOCATION );
126   END_TEST;
127 }
128
129 int UtcDaliPixelGetAlphaOffsetAndMask(void)
130 {
131   TestApplication application;
132
133   tet_infoline("UtcDaliPixelGetAlphaOffsetAndMask");
134
135   int byteOffset = 0;
136   int bitMask = 0;
137
138   // Be sure that the number of cases tested below is correct:
139   TestPixelEnumSize( 26 );
140
141   Pixel::GetAlphaOffsetAndMask(Pixel::L8, byteOffset, bitMask);
142   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
143   Pixel::GetAlphaOffsetAndMask(Pixel::A8, byteOffset, bitMask);
144   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xff);
145   Pixel::GetAlphaOffsetAndMask(Pixel::RGB888, byteOffset, bitMask);
146   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
147   Pixel::GetAlphaOffsetAndMask(Pixel::RGB565, byteOffset, bitMask);
148   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
149   Pixel::GetAlphaOffsetAndMask(Pixel::RGB8888, byteOffset, bitMask);
150   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
151   Pixel::GetAlphaOffsetAndMask(Pixel::BGR8888, byteOffset, bitMask);
152   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
153   Pixel::GetAlphaOffsetAndMask(Pixel::LA88, byteOffset, bitMask);
154   DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0xff);
155   Pixel::GetAlphaOffsetAndMask(Pixel::RGBA4444, byteOffset, bitMask);
156   DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0x0f);
157   Pixel::GetAlphaOffsetAndMask(Pixel::RGBA5551, byteOffset, bitMask);
158   DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0x01);
159   Pixel::GetAlphaOffsetAndMask(Pixel::RGBA8888, byteOffset, bitMask);
160   DALI_TEST_CHECK( byteOffset == 3 && bitMask == 0xff);
161   Pixel::GetAlphaOffsetAndMask(Pixel::BGRA8888, byteOffset, bitMask);
162   DALI_TEST_CHECK( byteOffset == 3 && bitMask == 0xff);
163   Pixel::GetAlphaOffsetAndMask(Pixel::BGR565, byteOffset, bitMask);
164   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
165   Pixel::GetAlphaOffsetAndMask(Pixel::BGRA4444, byteOffset, bitMask);
166   DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0x0f);
167   Pixel::GetAlphaOffsetAndMask(Pixel::BGRA5551, byteOffset, bitMask);
168   DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0x01);
169
170   // Compressed formats with no meaningful result:
171   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_R11_EAC, byteOffset, bitMask);
172   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
173   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_SIGNED_R11_EAC, byteOffset, bitMask);
174   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
175   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_RG11_EAC, byteOffset, bitMask);
176   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
177   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_SIGNED_RG11_EAC, byteOffset, bitMask);
178   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
179   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_RGB8_ETC2, byteOffset, bitMask);
180   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
181   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_SRGB8_ETC2, byteOffset, bitMask);
182   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
183   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_RGB8_ETC1, byteOffset, bitMask);
184   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
185   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_RGB_PVRTC_4BPPV1, byteOffset, bitMask);
186   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
187   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, byteOffset, bitMask);
188   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
189   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, byteOffset, bitMask);
190   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
191   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_RGBA8_ETC2_EAC, byteOffset, bitMask);
192   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
193   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, byteOffset, bitMask);
194   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
195   END_TEST;
196 }
197
198 int UtcDaliPixelGetAlphaOffsetAndMaskN(void)
199 {
200   int byteOffset = 200;
201   int bitMask = 200;
202   Pixel::GetAlphaOffsetAndMask( Pixel::Format( 123123123123 ), byteOffset, bitMask );
203   DALI_TEST_CHECK( byteOffset == 200 );
204   DALI_TEST_CHECK( bitMask == 200 );
205   END_TEST;
206 }