2 * Copyright (c) 2023 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.
17 #include <dali-toolkit-test-suite-utils.h>
18 #include <dali-toolkit/devel-api/image-loader/texture-manager.h>
19 #include <dali/public-api/rendering/texture-set.h>
20 #include <dali/public-api/rendering/texture.h>
25 using namespace Dali::Toolkit;
31 void dali_texture_manager_startup(void)
33 test_return_value = TET_UNDEF;
36 void dali_texture_manager_cleanup(void)
38 test_return_value = TET_PASS;
41 int UtcDaliTextureManagerAddRemoveP(void)
43 ToolkitTestApplication application;
44 tet_infoline("UtcDaliTextureManager");
52 // scope to ensure texturesets are kept alive by texture manager
54 auto texture = Texture::New(Dali::TextureType::TEXTURE_2D, Pixel::RGBA8888, 88, 99);
55 url = TextureManager::AddTexture(texture);
56 DALI_TEST_CHECK(url.size() > 0u);
58 auto textureSet = TextureSet::New();
59 textureSet.SetTexture(0u, texture);
60 url2 = TextureManager::AddTexture(textureSet);
61 DALI_TEST_CHECK(url2.size() > 0u);
62 DALI_TEST_CHECK(url2 != url);
64 // add same texture again, should give new Url
65 url3 = TextureManager::AddTexture(texture);
66 DALI_TEST_CHECK(url3.size() > 0u);
67 DALI_TEST_CHECK(url3 != url);
68 DALI_TEST_CHECK(url3 != url2);
70 textureSet = TextureSet::New();
71 url4 = TextureManager::AddTexture(textureSet);
72 DALI_TEST_CHECK(url4.size() > 0u);
73 DALI_TEST_CHECK(url4 != url);
74 DALI_TEST_CHECK(url4 != url2);
75 DALI_TEST_CHECK(url4 != url3);
77 // add same texture again with preMultiplied, should give new Url
78 url5 = TextureManager::AddTexture(texture, true);
79 DALI_TEST_CHECK(url5.size() > 0u);
80 DALI_TEST_CHECK(url5 != url);
81 DALI_TEST_CHECK(url5 != url2);
82 DALI_TEST_CHECK(url5 != url3);
83 DALI_TEST_CHECK(url5 != url4);
85 textureSet = TextureSet::New();
86 url6 = TextureManager::AddTexture(textureSet, true);
87 DALI_TEST_CHECK(url6.size() > 0u);
88 DALI_TEST_CHECK(url6 != url);
89 DALI_TEST_CHECK(url6 != url2);
90 DALI_TEST_CHECK(url6 != url3);
91 DALI_TEST_CHECK(url6 != url4);
92 DALI_TEST_CHECK(url6 != url5);
95 auto textureSet = TextureManager::RemoveTexture(url);
96 DALI_TEST_CHECK(textureSet && "Texture needs to be non empty handle");
97 auto texture = textureSet.GetTexture(0u);
98 DALI_TEST_EQUAL(texture.GetWidth(), 88u);
99 DALI_TEST_EQUAL(texture.GetHeight(), 99u);
100 textureSet = TextureManager::RemoveTexture(url);
101 DALI_TEST_CHECK(!textureSet && "Texture needs to be removed from texture manager");
103 textureSet = TextureManager::RemoveTexture(url2);
104 DALI_TEST_CHECK(textureSet && "Texture needs to be non empty handle");
105 texture = textureSet.GetTexture(0u);
106 DALI_TEST_EQUAL(texture.GetWidth(), 88u);
107 DALI_TEST_EQUAL(texture.GetHeight(), 99u);
108 textureSet = TextureManager::RemoveTexture(url2);
109 DALI_TEST_CHECK(!textureSet && "Texture needs to be removed from texture manager");
111 textureSet = TextureManager::RemoveTexture(url3);
112 DALI_TEST_CHECK(textureSet && "Texture needs to be non empty handle");
113 texture = textureSet.GetTexture(0u);
114 DALI_TEST_EQUAL(texture.GetWidth(), 88u);
115 DALI_TEST_EQUAL(texture.GetHeight(), 99u);
116 textureSet = TextureManager::RemoveTexture(url3);
117 DALI_TEST_CHECK(!textureSet && "Texture needs to be removed from texture manager");
119 textureSet = TextureManager::RemoveTexture(url4);
120 DALI_TEST_CHECK(textureSet && "Texture needs to be non empty handle");
121 textureSet = TextureManager::RemoveTexture(url4);
122 DALI_TEST_CHECK(!textureSet && "Texture needs to be removed from texture manager");
124 textureSet = TextureManager::RemoveTexture(url5);
125 DALI_TEST_CHECK(textureSet && "Texture needs to be non empty handle");
126 textureSet = TextureManager::RemoveTexture(url5);
127 DALI_TEST_CHECK(!textureSet && "Texture needs to be removed from texture manager");
129 textureSet = TextureManager::RemoveTexture(url6);
130 DALI_TEST_CHECK(textureSet && "Texture needs to be non empty handle");
131 textureSet = TextureManager::RemoveTexture(url6);
132 DALI_TEST_CHECK(!textureSet && "Texture needs to be removed from texture manager");
137 int UtcDaliTextureManagerAddN(void)
139 ToolkitTestApplication application;
140 tet_infoline("UtcDaliTextureManager");
142 // empty texture is ok, though pointless from app point of view
144 std::string url = TextureManager::AddTexture(empty);
145 DALI_TEST_CHECK(url.size() > 0u);
150 int UtcDaliTextureManagerRemoveN(void)
152 ToolkitTestApplication application;
153 tet_infoline("UtcDaliTextureManager");
155 // removing empty texture returns empty handle
156 auto texture = TextureManager::RemoveTexture("");
157 DALI_TEST_CHECK(!texture && "Texture should not be found");
159 // removing empty texture returns empty handle
160 texture = TextureManager::RemoveTexture("dali://");
161 DALI_TEST_CHECK(!texture && "Texture should not be found");
163 // empty texture is ok, though pointless from app point of view
165 std::string url = TextureManager::AddTexture(empty);
166 DALI_TEST_CHECK(url.size() > 0u);
167 // removing texture with wrong URL returns empty handle
168 texture = TextureManager::RemoveTexture("dali://");
169 DALI_TEST_CHECK(!texture && "Texture should not be found");
171 // removing ftp texture returns empty handle
172 texture = TextureManager::RemoveTexture("ftp://foobar");
173 DALI_TEST_CHECK(!texture && "Texture should not be found");
176 url = TextureManager::AddTexture(texture);
177 texture = TextureManager::RemoveTexture(url + "foo");
178 DALI_TEST_CHECK(!texture && "Texture should not be found");