Compute min/max value if min/max is not defined.
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-scene-loader / utc-Dali-EnvironmentDefinition.cpp
1 /*
2  * Copyright (c) 2020 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-scene-loader/public-api/environment-definition.h"
22 #include <dali-test-suite-utils.h>
23 #include <string_view>
24
25 using namespace Dali;
26 using namespace Dali::SceneLoader;
27
28 int UtcDaliEnvironmentDefinitionLoadRawDefault(void)
29 {
30   EnvironmentDefinition envDef;
31   auto rawData = envDef.LoadRaw("");
32
33   DALI_TEST_EQUAL(rawData.mDiffuse.data.size(), 6u);
34   for (auto& face: rawData.mDiffuse.data)
35   {
36     DALI_TEST_EQUAL(face.size(), 1u);
37   }
38
39   DALI_TEST_EQUAL(rawData.mSpecular.data.size(), 6u);
40   for (auto& face: rawData.mSpecular.data)
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.data.size(), 6u);
68   for (auto& face: rawData.mDiffuse.data)
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.data.size(), 6u);
82   for (auto& face: rawData.mSpecular.data)
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
112 void CheckTextureDefault(Texture texture)
113 {
114   DALI_TEST_CHECK(texture);
115   DALI_TEST_EQUAL(texture.GetWidth(), 1u);
116   DALI_TEST_EQUAL(texture.GetHeight(), 1u);
117 }
118
119 void CheckTextureNotDefault(Texture texture)
120 {
121   DALI_TEST_CHECK(texture);
122   DALI_TEST_CHECK(texture.GetWidth() > 1u);
123   DALI_TEST_CHECK(texture.GetHeight() > 1u);
124 }
125
126 }
127
128 int UtcDaliEnvironmentDefinitionLoadDefault(void)
129 {
130   EnvironmentDefinition envDef{};
131   auto rawData = envDef.LoadRaw(TEST_RESOURCE_DIR "/");;
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   TestApplication app;
148   auto textures = envDef.Load(std::move(rawData));
149
150   CheckTextureNotDefault(textures.mDiffuse);
151   CheckTextureDefault(textures.mSpecular);
152
153   END_TEST;
154 }
155
156 int UtcDaliEnvironmentDefinitionLoadSpecular(void)
157 {
158   EnvironmentDefinition envDef{ "", "forest_radiance.ktx" };
159   auto rawData = envDef.LoadRaw(TEST_RESOURCE_DIR "/");;
160
161   TestApplication app;
162   auto textures = envDef.Load(std::move(rawData));
163
164   CheckTextureDefault(textures.mDiffuse);
165   CheckTextureNotDefault(textures.mSpecular);
166
167   END_TEST;
168 }
169
170 int UtcDaliEnvironmentDefinitionLoadBoth(void)
171 {
172   EnvironmentDefinition envDef{ "forest_irradiance.ktx", "forest_radiance.ktx" };
173   auto rawData = envDef.LoadRaw(TEST_RESOURCE_DIR "/");;
174
175   TestApplication app;
176   auto textures = envDef.Load(std::move(rawData));
177
178   CheckTextureNotDefault(textures.mDiffuse);
179   CheckTextureNotDefault(textures.mSpecular);
180
181   END_TEST;
182 }