Merge "Cleanup .gitignore file" into devel/master
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-scene3d / utc-Dali-EnvironmentMapLoader.cpp
1 /*
2  * Copyright (c) 2022 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 // Enable debug log for test coverage
19 #define DEBUG_ENABLED 1
20
21 #include <dali-test-suite-utils.h>
22 #include <string_view>
23 #include "dali-scene3d/public-api/loader/environment-map-loader.h"
24
25 #include <fstream>
26
27 using namespace Dali;
28 using namespace Dali::Scene3D::Loader;
29
30 int UtcDaliEnvironmentMapLoaderFailNonexistent(void)
31 {
32   EnvironmentMapData environmentMapData;
33   DALI_TEST_CHECK(!LoadEnvironmentMap("non-existent.jpg", environmentMapData));
34   END_TEST;
35 }
36
37 int UtcDaliEnvironmentMapLoaderSuccess01(void)
38 {
39   EnvironmentMapData environmentMapData;
40   auto               path = TEST_RESOURCE_DIR "/forest_radiance.ktx";
41   DALI_TEST_CHECK(LoadEnvironmentMap(path, environmentMapData));
42
43   DALI_TEST_EQUAL(6u, environmentMapData.mPixelData.size());
44   for(auto& face : environmentMapData.mPixelData)
45   {
46     uint32_t size = 64;
47     for(auto& mipData : face)
48     {
49       DALI_TEST_EQUAL(size, mipData.GetWidth());
50       DALI_TEST_EQUAL(size, mipData.GetHeight());
51       DALI_TEST_EQUAL(Pixel::Format::RGB888, mipData.GetPixelFormat());
52       size /= 2;
53     }
54   }
55
56   END_TEST;
57 }
58
59 int UtcDaliEnvironmentMapLoaderAutoType01(void)
60 {
61   EnvironmentMapData environmentMapData;
62   auto               path = TEST_RESOURCE_DIR "/forest_diffuse_cubemap.png"; // cross horizontal
63   DALI_TEST_EQUAL(environmentMapData.GetEnvironmentMapType(), Scene3D::EnvironmentMapType::AUTO);
64   DALI_TEST_CHECK(LoadEnvironmentMap(path, environmentMapData));
65
66   DALI_TEST_EQUAL(environmentMapData.GetEnvironmentMapType(), Scene3D::EnvironmentMapType::CUBEMAP);
67   DALI_TEST_EQUAL(6u, environmentMapData.mPixelData.size());
68   for(auto& face : environmentMapData.mPixelData)
69   {
70     uint32_t size = 512;
71     DALI_TEST_EQUAL(size, face[0].GetWidth());
72     DALI_TEST_EQUAL(size, face[0].GetHeight());
73     DALI_TEST_EQUAL(Pixel::Format::RGBA8888, face[0].GetPixelFormat());
74   }
75
76   END_TEST;
77 }
78
79 int UtcDaliEnvironmentMapLoaderAutoType02(void)
80 {
81   EnvironmentMapData environmentMapData;
82   auto               path = TEST_RESOURCE_DIR "/forest_diffuse_cubemap_cross_vertical.png"; // cross vertical
83   DALI_TEST_EQUAL(environmentMapData.GetEnvironmentMapType(), Scene3D::EnvironmentMapType::AUTO);
84   DALI_TEST_CHECK(LoadEnvironmentMap(path, environmentMapData));
85
86   DALI_TEST_EQUAL(environmentMapData.GetEnvironmentMapType(), Scene3D::EnvironmentMapType::CUBEMAP);
87   DALI_TEST_EQUAL(6u, environmentMapData.mPixelData.size());
88   for(auto& face : environmentMapData.mPixelData)
89   {
90     uint32_t size = 256;
91     DALI_TEST_EQUAL(size, face[0].GetWidth());
92     DALI_TEST_EQUAL(size, face[0].GetHeight());
93     DALI_TEST_EQUAL(Pixel::Format::RGBA8888, face[0].GetPixelFormat());
94   }
95
96   END_TEST;
97 }
98
99 int UtcDaliEnvironmentMapLoaderAutoType03(void)
100 {
101   EnvironmentMapData environmentMapData;
102   auto               path = TEST_RESOURCE_DIR "/cubemap_array_horizontal.png"; // array horizontal
103   DALI_TEST_EQUAL(environmentMapData.GetEnvironmentMapType(), Scene3D::EnvironmentMapType::AUTO);
104   DALI_TEST_CHECK(LoadEnvironmentMap(path, environmentMapData));
105
106   DALI_TEST_EQUAL(environmentMapData.GetEnvironmentMapType(), Scene3D::EnvironmentMapType::CUBEMAP);
107   DALI_TEST_EQUAL(6u, environmentMapData.mPixelData.size());
108   for(auto& face : environmentMapData.mPixelData)
109   {
110     uint32_t size = 100;
111     DALI_TEST_EQUAL(size, face[0].GetWidth());
112     DALI_TEST_EQUAL(size, face[0].GetHeight());
113     DALI_TEST_EQUAL(Pixel::Format::RGB888, face[0].GetPixelFormat());
114   }
115
116   END_TEST;
117 }
118
119 int UtcDaliEnvironmentMapLoaderAutoType04(void)
120 {
121   EnvironmentMapData environmentMapData;
122   auto               path = TEST_RESOURCE_DIR "/cubemap_array_vertical.png"; // array horizontal
123   DALI_TEST_EQUAL(environmentMapData.GetEnvironmentMapType(), Scene3D::EnvironmentMapType::AUTO);
124   DALI_TEST_CHECK(LoadEnvironmentMap(path, environmentMapData));
125
126   DALI_TEST_EQUAL(environmentMapData.GetEnvironmentMapType(), Scene3D::EnvironmentMapType::CUBEMAP);
127   DALI_TEST_EQUAL(6u, environmentMapData.mPixelData.size());
128   for(auto& face : environmentMapData.mPixelData)
129   {
130     uint32_t size = 100;
131     DALI_TEST_EQUAL(size, face[0].GetWidth());
132     DALI_TEST_EQUAL(size, face[0].GetHeight());
133     DALI_TEST_EQUAL(Pixel::Format::RGB888, face[0].GetPixelFormat());
134   }
135
136   END_TEST;
137 }
138
139 int UtcDaliEnvironmentMapLoaderAutoType05(void)
140 {
141   EnvironmentMapData environmentMapData;
142   auto               path = TEST_RESOURCE_DIR "/equirectangular.png"; // no cube map
143   DALI_TEST_EQUAL(environmentMapData.GetEnvironmentMapType(), Scene3D::EnvironmentMapType::AUTO);
144   DALI_TEST_CHECK(LoadEnvironmentMap(path, environmentMapData));
145
146   DALI_TEST_EQUAL(environmentMapData.GetEnvironmentMapType(), Scene3D::EnvironmentMapType::EQUIRECTANGULAR);
147   DALI_TEST_EQUAL(1u, environmentMapData.mPixelData.size());
148   for(auto& face : environmentMapData.mPixelData)
149   {
150     DALI_TEST_EQUAL(20, face[0].GetWidth());
151     DALI_TEST_EQUAL(10, face[0].GetHeight());
152     DALI_TEST_EQUAL(Pixel::Format::RGB888, face[0].GetPixelFormat());
153   }
154
155   END_TEST;
156 }
157
158 int UtcDaliEnvironmentMapLoaderEquirectangularMapType01(void)
159 {
160   EnvironmentMapData environmentMapData;
161   auto               path = TEST_RESOURCE_DIR "/forest_diffuse_cubemap.png"; // no cube map
162   DALI_TEST_EQUAL(environmentMapData.GetEnvironmentMapType(), Scene3D::EnvironmentMapType::AUTO);
163   environmentMapData.SetEnvironmentMapType(Scene3D::EnvironmentMapType::EQUIRECTANGULAR);
164   DALI_TEST_CHECK(LoadEnvironmentMap(path, environmentMapData));
165
166   DALI_TEST_EQUAL(environmentMapData.GetEnvironmentMapType(), Scene3D::EnvironmentMapType::EQUIRECTANGULAR);
167   DALI_TEST_EQUAL(1u, environmentMapData.mPixelData.size());
168   for(auto& face : environmentMapData.mPixelData)
169   {
170     DALI_TEST_EQUAL(2048, face[0].GetWidth());
171     DALI_TEST_EQUAL(1536, face[0].GetHeight());
172     DALI_TEST_EQUAL(Pixel::Format::RGBA8888, face[0].GetPixelFormat());
173   }
174
175   END_TEST;
176 }
177
178 int UtcDaliEnvironmentMapLoaderEnvironmentMapDataCreateTexture01(void)
179 {
180   EnvironmentMapData environmentMapData;
181   auto               path = TEST_RESOURCE_DIR "/forest_radiance.ktx";
182   DALI_TEST_CHECK(LoadEnvironmentMap(path, environmentMapData));
183
184   TestApplication app;
185   auto            texture = environmentMapData.GetTexture();
186
187   DALI_TEST_CHECK(texture);
188   DALI_TEST_EQUAL(64u, texture.GetWidth());
189   DALI_TEST_EQUAL(64u, texture.GetHeight());
190
191   END_TEST;
192 }
193
194 int UtcDaliEnvironmentMapLoaderEnvironmentMapDataCreateTexture02(void)
195 {
196   EnvironmentMapData environmentMapData;
197   auto               path = TEST_RESOURCE_DIR "/forest_diffuse_cubemap.png";
198   DALI_TEST_CHECK(LoadEnvironmentMap(path, environmentMapData));
199
200   TestApplication app;
201   auto            texture = environmentMapData.GetTexture();
202
203   DALI_TEST_CHECK(texture);
204   DALI_TEST_EQUAL(512u, texture.GetWidth());
205   DALI_TEST_EQUAL(512u, texture.GetHeight());
206
207   END_TEST;
208 }