2 * Copyright (c) 2020 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-scene-loader/public-api/ktx-loader.h"
22 #include <dali-test-suite-utils.h>
23 #include <string_view>
28 using namespace Dali::SceneLoader;
30 int UtcDaliKtxLoaderFailNonexistent(void)
33 DALI_TEST_CHECK(!LoadCubeMapData("non-existent.ktx", data));
37 int UtcDaliKtxLoaderFailInvalid1(void)
40 DALI_TEST_CHECK(!LoadCubeMapData(TEST_RESOURCE_DIR "/invalid.svg", data)); // file smaller than KTX header
44 int UtcDaliKtxLoaderFailInvalid2(void)
47 DALI_TEST_CHECK(!LoadCubeMapData(TEST_RESOURCE_DIR "/anim.gif", data)); // not a KTX
51 int UtcDaliKtxLoaderFailTruncated(void)
54 DALI_TEST_CHECK(!LoadCubeMapData(TEST_RESOURCE_DIR "/truncated.ktx", data));
58 int UtcDaliKtxLoaderSuccess(void)
61 auto path = TEST_RESOURCE_DIR "/forest_radiance.ktx";
62 DALI_TEST_CHECK(LoadCubeMapData(path, cubeData));
64 DALI_TEST_EQUAL(6u, cubeData.data.size());
65 for (auto& face: cubeData.data)
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)
106 DALI_TEST_CHECK(LoadCubeMapData(resPath + i.first + ".ktx", cubeData));
107 DALI_TEST_EQUAL(cubeData.data[0][0].GetPixelFormat(), i.second);
113 int UtcDaliKtxLoaderCubeDataCreateTexture1(void)
115 uint32_t pixelBufferSize = 3;
116 uint8_t* pixelBuffer = new uint8_t[pixelBufferSize];
119 cubeData.data.push_back({});
121 auto pixelData = PixelData::New(pixelBuffer, pixelBufferSize, 1, 1, Pixel::Format::RGB888, PixelData::DELETE_ARRAY);
122 cubeData.data[0].push_back(pixelData);
125 auto texture = cubeData.CreateTexture();
127 DALI_TEST_CHECK(texture);
128 DALI_TEST_EQUAL(1u, texture.GetWidth());
129 DALI_TEST_EQUAL(1u, texture.GetHeight());
134 int UtcDaliKtxLoaderCubeDataCreateTexture2(void)
137 auto path = TEST_RESOURCE_DIR "/forest_radiance.ktx";
138 DALI_TEST_CHECK(LoadCubeMapData(path, cubeData));
141 auto texture = cubeData.CreateTexture();
143 DALI_TEST_CHECK(texture);
144 DALI_TEST_EQUAL(64u, texture.GetWidth());
145 DALI_TEST_EQUAL(64u, texture.GetHeight());