2 * Copyright (c) 2022 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 // Enable debug log for test coverage
19 #define DEBUG_ENABLED 1
21 #include "dali-scene3d/public-api/loader/ktx-loader.h"
22 #include <dali-test-suite-utils.h>
23 #include <string_view>
28 using namespace Dali::Scene3D::Loader;
30 int UtcDaliKtxLoaderFailNonexistent(void)
32 EnvironmentMapData environmentMapData;
33 DALI_TEST_CHECK(!LoadKtxData("non-existent.ktx", environmentMapData));
37 int UtcDaliKtxLoaderFailInvalid1(void)
39 EnvironmentMapData environmentMapData;
40 DALI_TEST_CHECK(!LoadKtxData(TEST_RESOURCE_DIR "/invalid.svg", environmentMapData)); // file smaller than KTX header
44 int UtcDaliKtxLoaderFailInvalid2(void)
46 EnvironmentMapData environmentMapData;
47 DALI_TEST_CHECK(!LoadKtxData(TEST_RESOURCE_DIR "/anim.gif", environmentMapData)); // not a KTX
51 int UtcDaliKtxLoaderFailTruncated(void)
53 EnvironmentMapData environmentMapData;
54 DALI_TEST_CHECK(!LoadKtxData(TEST_RESOURCE_DIR "/truncated.ktx", environmentMapData));
58 int UtcDaliKtxLoaderSuccess(void)
60 EnvironmentMapData environmentMapData;
61 auto path = TEST_RESOURCE_DIR "/forest_radiance.ktx";
62 DALI_TEST_CHECK(LoadKtxData(path, environmentMapData));
64 DALI_TEST_EQUAL(6u, environmentMapData.mPixelData.size());
65 for (auto& face: environmentMapData.mPixelData)
68 for (auto& mipData: face)
70 DALI_TEST_EQUAL(size, mipData.GetWidth());
71 DALI_TEST_EQUAL(size, mipData.GetHeight());
72 DALI_TEST_EQUAL(Pixel::Format::RGB888, mipData.GetPixelFormat());
80 int UtcDaliKtxLoaderFormats(void)
82 auto resPath = TEST_RESOURCE_DIR "/";
83 #define FORMAT_PATH(x) { #x, Pixel::x }
84 #define FORMAT_COMPRESSED_PATH(x) { #x, Pixel::COMPRESSED_ ## x ## _KHR }
85 std::pair<std::string, Pixel::Format> pathFormats[] {
86 FORMAT_COMPRESSED_PATH(RGBA_ASTC_4x4),
87 FORMAT_COMPRESSED_PATH(RGBA_ASTC_5x4),
88 FORMAT_COMPRESSED_PATH(RGBA_ASTC_5x5),
89 FORMAT_COMPRESSED_PATH(RGBA_ASTC_6x5),
90 FORMAT_COMPRESSED_PATH(RGBA_ASTC_6x6),
91 FORMAT_COMPRESSED_PATH(RGBA_ASTC_8x5),
92 FORMAT_COMPRESSED_PATH(RGBA_ASTC_8x6),
93 FORMAT_COMPRESSED_PATH(RGBA_ASTC_8x8),
94 FORMAT_COMPRESSED_PATH(RGBA_ASTC_10x5),
95 FORMAT_COMPRESSED_PATH(RGBA_ASTC_10x6),
96 FORMAT_COMPRESSED_PATH(RGBA_ASTC_10x10),
97 FORMAT_COMPRESSED_PATH(RGBA_ASTC_12x10),
98 FORMAT_COMPRESSED_PATH(RGBA_ASTC_12x12),
101 FORMAT_PATH(RGBA8888),
103 for (auto i : pathFormats)
105 EnvironmentMapData environmentMapData;
106 DALI_TEST_CHECK(LoadKtxData(resPath + i.first + ".ktx", environmentMapData));
107 DALI_TEST_EQUAL(environmentMapData.mPixelData[0][0].GetPixelFormat(), i.second);
113 int UtcDaliKtxLoaderEnvironmentMApDataCreateTexture1(void)
115 uint32_t pixelBufferSize = 3;
116 uint8_t* pixelBuffer = new uint8_t[pixelBufferSize];
118 EnvironmentMapData environmentMapData;
119 environmentMapData.mPixelData.push_back({});
121 auto pixelData = PixelData::New(pixelBuffer, pixelBufferSize, 1, 1, Pixel::Format::RGB888, PixelData::DELETE_ARRAY);
122 environmentMapData.mPixelData[0].push_back(pixelData);
125 auto texture = environmentMapData.GetTexture();
127 DALI_TEST_CHECK(texture);
128 DALI_TEST_EQUAL(1u, texture.GetWidth());
129 DALI_TEST_EQUAL(1u, texture.GetHeight());
134 int UtcDaliKtxLoaderEnvironmentMApDataCreateTexture2(void)
136 EnvironmentMapData environmentMapData;
137 auto path = TEST_RESOURCE_DIR "/forest_radiance.ktx";
138 DALI_TEST_CHECK(LoadKtxData(path, environmentMapData));
141 auto texture = environmentMapData.GetTexture();
143 DALI_TEST_CHECK(texture);
144 DALI_TEST_EQUAL(64u, texture.GetWidth());
145 DALI_TEST_EQUAL(64u, texture.GetHeight());
150 int UtcDaliKtxLoaderEnvironmentMApDataCreateTexture3(void)
152 EnvironmentMapData environmentMapData;
153 auto path = TEST_RESOURCE_DIR "/papermill_E_diffuse-64.ktx";
154 DALI_TEST_CHECK(LoadKtxData(path, environmentMapData));
157 auto texture = environmentMapData.GetTexture();
159 DALI_TEST_CHECK(texture);
160 DALI_TEST_EQUAL(64u, texture.GetWidth());
161 DALI_TEST_EQUAL(64u, texture.GetHeight());