License conversion from Flora to Apache 2.0
[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/dali.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   END_TEST;
83 }
84
85 int UtcDaliPixelGetBytesPerPixel(void)
86 {
87   TestApplication application;
88
89   tet_infoline("UtcDaliPixelGetBytesPerPixel");
90
91   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::L8) == 1);
92   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::A8) == 1);
93
94   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::LA88) == 2);
95   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::RGB565) == 2);
96   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::RGBA5551) == 2);
97   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::RGBA4444) == 2);
98   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::BGR565) == 2);
99   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::BGRA5551) == 2);
100   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::BGRA4444) == 2);
101
102   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::RGB888) == 3);
103
104   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::RGB8888) == 4);
105   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::BGR8888) == 4);
106   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::RGBA8888) == 4);
107   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::BGRA8888) == 4);
108
109   DALI_TEST_CHECK( Pixel::GetBytesPerPixel(Pixel::L8) == 1);
110   END_TEST;
111 }
112
113 int UtcDaliPixelGetAlphaOffsetAndMask(void)
114 {
115   TestApplication application;
116
117   tet_infoline("UtcDaliPixelGetAlphaOffsetAndMask");
118
119   int byteOffset = 0;
120   int bitMask = 0;
121
122   // Be sure that the number of cases tested below is correct:
123   TestPixelEnumSize( 26 );
124
125   Pixel::GetAlphaOffsetAndMask(Pixel::L8, byteOffset, bitMask);
126   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
127   Pixel::GetAlphaOffsetAndMask(Pixel::A8, byteOffset, bitMask);
128   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xff);
129   Pixel::GetAlphaOffsetAndMask(Pixel::RGB888, byteOffset, bitMask);
130   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
131   Pixel::GetAlphaOffsetAndMask(Pixel::RGB565, byteOffset, bitMask);
132   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
133   Pixel::GetAlphaOffsetAndMask(Pixel::RGB8888, byteOffset, bitMask);
134   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
135   Pixel::GetAlphaOffsetAndMask(Pixel::BGR8888, byteOffset, bitMask);
136   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
137   Pixel::GetAlphaOffsetAndMask(Pixel::LA88, byteOffset, bitMask);
138   DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0xff);
139   Pixel::GetAlphaOffsetAndMask(Pixel::RGBA4444, byteOffset, bitMask);
140   DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0x0f);
141   Pixel::GetAlphaOffsetAndMask(Pixel::RGBA5551, byteOffset, bitMask);
142   DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0x01);
143   Pixel::GetAlphaOffsetAndMask(Pixel::RGBA8888, byteOffset, bitMask);
144   DALI_TEST_CHECK( byteOffset == 3 && bitMask == 0xff);
145   Pixel::GetAlphaOffsetAndMask(Pixel::BGRA8888, byteOffset, bitMask);
146   DALI_TEST_CHECK( byteOffset == 3 && bitMask == 0xff);
147   Pixel::GetAlphaOffsetAndMask(Pixel::BGR565, byteOffset, bitMask);
148   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
149   Pixel::GetAlphaOffsetAndMask(Pixel::BGRA4444, byteOffset, bitMask);
150   DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0x0f);
151   Pixel::GetAlphaOffsetAndMask(Pixel::BGRA5551, byteOffset, bitMask);
152   DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0x01);
153
154   // Compressed formats with no meaningful result:
155   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_R11_EAC, byteOffset, bitMask);
156   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
157   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_SIGNED_R11_EAC, byteOffset, bitMask);
158   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
159   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_RG11_EAC, byteOffset, bitMask);
160   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
161   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_SIGNED_RG11_EAC, byteOffset, bitMask);
162   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
163   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_RGB8_ETC2, byteOffset, bitMask);
164   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
165   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_SRGB8_ETC2, byteOffset, bitMask);
166   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
167   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_RGB8_ETC1, byteOffset, bitMask);
168   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
169   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_RGB_PVRTC_4BPPV1, byteOffset, bitMask);
170   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
171   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, byteOffset, bitMask);
172   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
173   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, byteOffset, bitMask);
174   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
175   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_RGBA8_ETC2_EAC, byteOffset, bitMask);
176   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
177   Pixel::GetAlphaOffsetAndMask(Pixel::COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, byteOffset, bitMask);
178   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0);
179   END_TEST;
180 }