[dali_2.3.21] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-scene3d / utc-Dali-EnvironmentDefinition.cpp
1 /*
2  * Copyright (c) 2024 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-definition.h"
24
25 using namespace Dali;
26 using namespace Dali::Scene3D::Loader;
27
28 int UtcDaliEnvironmentDefinitionLoadRawDefault(void)
29 {
30   EnvironmentDefinition envDef;
31   auto                  rawData = envDef.LoadRaw("");
32
33   DALI_TEST_EQUAL(rawData.mDiffuse.mPixelData.size(), 6u);
34   for(auto& face : rawData.mDiffuse.mPixelData)
35   {
36     DALI_TEST_EQUAL(face.size(), 1u);
37   }
38
39   DALI_TEST_EQUAL(rawData.mSpecular.mPixelData.size(), 6u);
40   for(auto& face : rawData.mSpecular.mPixelData)
41   {
42     DALI_TEST_EQUAL(face.size(), 1u);
43   }
44
45   END_TEST;
46 }
47
48 int UtcDaliEnvironmentDefinitionLoadRawFail(void)
49 {
50   for(auto name : {"nonexistent.ktx", TEST_RESOURCE_DIR "Cobe.obj", TEST_RESOURCE_DIR "truncated.ktx"})
51   {
52     EnvironmentDefinition envDef{name, name};
53     DALI_TEST_ASSERTION(envDef.LoadRaw(""), "Failed to load cubemap texture");
54
55     envDef.mDiffuseMapPath = "";
56     DALI_TEST_ASSERTION(envDef.LoadRaw(""), "Failed to load cubemap texture"); // specular map still invalid
57   }
58
59   END_TEST;
60 }
61
62 int UtcDaliEnvironmentDefinitionLoadRawSuccess(void)
63 {
64   EnvironmentDefinition envDef{"forest_irradiance.ktx", "forest_radiance.ktx"};
65   auto                  rawData = envDef.LoadRaw(TEST_RESOURCE_DIR "/");
66
67   DALI_TEST_EQUAL(rawData.mDiffuse.mPixelData.size(), 6u);
68   for(auto& face : rawData.mDiffuse.mPixelData)
69   {
70     DALI_TEST_EQUAL(face.size(), 1u);
71     uint32_t size = 64u;
72     for(auto& mipLevel : face)
73     {
74       DALI_TEST_EQUAL(mipLevel.GetPixelFormat(), Pixel::Format::RGB888);
75       DALI_TEST_EQUAL(mipLevel.GetWidth(), size);
76       DALI_TEST_EQUAL(mipLevel.GetHeight(), size);
77       size /= 2;
78     }
79   }
80
81   DALI_TEST_EQUAL(rawData.mSpecular.mPixelData.size(), 6u);
82   for(auto& face : rawData.mSpecular.mPixelData)
83   {
84     DALI_TEST_EQUAL(face.size(), 5u);
85     uint32_t size = 64u;
86     for(auto& mipLevel : face)
87     {
88       DALI_TEST_EQUAL(mipLevel.GetPixelFormat(), Pixel::Format::RGB888);
89       DALI_TEST_EQUAL(mipLevel.GetWidth(), size);
90       DALI_TEST_EQUAL(mipLevel.GetHeight(), size);
91       size /= 2;
92     }
93   }
94
95   END_TEST;
96 }
97
98 int UtcDaliEnvironmentDefinitionLoadEmptyRaw(void)
99 {
100   EnvironmentDefinition::RawData rawData;
101   EnvironmentDefinition          envDef;
102   auto                           textures = envDef.Load(std::move(rawData));
103   DALI_TEST_CHECK(!textures.mDiffuse);
104   DALI_TEST_CHECK(!textures.mSpecular);
105
106   END_TEST;
107 }
108
109 namespace
110 {
111 void CheckTextureDefault(Texture texture)
112 {
113   DALI_TEST_CHECK(texture);
114   DALI_TEST_EQUAL(texture.GetWidth(), 1u);
115   DALI_TEST_EQUAL(texture.GetHeight(), 1u);
116 }
117
118 void CheckTextureNotDefault(Texture texture)
119 {
120   DALI_TEST_CHECK(texture);
121   DALI_TEST_CHECK(texture.GetWidth() > 1u);
122   DALI_TEST_CHECK(texture.GetHeight() > 1u);
123 }
124
125 } // namespace
126
127 int UtcDaliEnvironmentDefinitionLoadDefault(void)
128 {
129   EnvironmentDefinition envDef{};
130   auto                  rawData = envDef.LoadRaw(TEST_RESOURCE_DIR "/");
131   ;
132
133   TestApplication app;
134   auto            textures = envDef.Load(std::move(rawData));
135
136   CheckTextureDefault(textures.mSpecular);
137   CheckTextureDefault(textures.mDiffuse);
138
139   END_TEST;
140 }
141
142 int UtcDaliEnvironmentDefinitionLoadDiffuse(void)
143 {
144   EnvironmentDefinition envDef{"forest_irradiance.ktx"};
145   auto                  rawData = envDef.LoadRaw(TEST_RESOURCE_DIR "/");
146   ;
147
148   TestApplication app;
149   auto            textures = envDef.Load(std::move(rawData));
150
151   CheckTextureNotDefault(textures.mDiffuse);
152   CheckTextureDefault(textures.mSpecular);
153
154   END_TEST;
155 }
156
157 int UtcDaliEnvironmentDefinitionLoadSpecular(void)
158 {
159   EnvironmentDefinition envDef{"", "forest_radiance.ktx"};
160   auto                  rawData = envDef.LoadRaw(TEST_RESOURCE_DIR "/");
161   ;
162
163   TestApplication app;
164   auto            textures = envDef.Load(std::move(rawData));
165
166   CheckTextureDefault(textures.mDiffuse);
167   CheckTextureNotDefault(textures.mSpecular);
168
169   END_TEST;
170 }
171
172 int UtcDaliEnvironmentDefinitionLoadBoth(void)
173 {
174   EnvironmentDefinition envDef{"forest_irradiance.ktx", "forest_radiance.ktx"};
175   auto                  rawData = envDef.LoadRaw(TEST_RESOURCE_DIR "/");
176   ;
177
178   TestApplication app;
179   auto            textures = envDef.Load(std::move(rawData));
180
181   CheckTextureNotDefault(textures.mDiffuse);
182   CheckTextureNotDefault(textures.mSpecular);
183
184   END_TEST;
185 }