18#include "testing/testing.h"
19#include "gmock/gmock.h"
32using testing::Pointwise;
34TEST(udim, image_ensure_tile_token)
36 auto verify = [](
const char *original,
const char *expected) {
41 EXPECT_STREQ(result, expected);
45 verify(
"test.<UDIM>.png",
"test.<UDIM>.png");
46 verify(
"test.<UVTILE>.png",
"test.<UVTILE>.png");
49 verify(
"test.1002.png",
"test.<UDIM>.png");
50 verify(
"test-1002-ao.png",
"test-<UDIM>-ao.png");
51 verify(
"test_1002_ao.png",
"test_<UDIM>_ao.png");
52 verify(
"test.1002.ver0023.png",
"test.<UDIM>.ver0023.png");
53 verify(
"test.ver0023.1002.png",
"test.ver0023.<UDIM>.png");
54 verify(
"test.1002.1.png",
"test.<UDIM>.1.png");
55 verify(
"test.1.1002.png",
"test.1.<UDIM>.png");
56 verify(
"test-2022-01-01.1002.png",
"test-2022-01-01.<UDIM>.png");
57 verify(
"1111_11.1002.png",
"1111_11.<UDIM>.png");
58 verify(
"2111_01.1002.png",
"2111_01.<UDIM>.png");
59 verify(
"2022_1002_100200.1002.png",
"2022_1002_100200.<UDIM>.png");
62 verify(
"uv-test.u2_v10.png",
"uv-test.<UVTILE>.png");
63 verify(
"uv-test-u2_v10-ao.png",
"uv-test-<UVTILE>-ao.png");
64 verify(
"uv-test_u2_v10_ao.png",
"uv-test_<UVTILE>_ao.png");
65 verify(
"uv-test.u10_v100.png",
"uv-test.<UVTILE>.png");
66 verify(
"u_v-test.u2_v10.png",
"u_v-test.<UVTILE>.png");
67 verify(
"u2_v10uv-test.png",
"<UVTILE>uv-test.png");
68 verify(
"u2_v10u_v-test.png",
"<UVTILE>u_v-test.png");
71 for (
const char *incorrect : {
"1002.png",
88 "test.u1_v12345.png"})
91 verify(incorrect, incorrect);
95TEST(udim, image_get_tile_strformat)
118 EXPECT_STREQ(udim_pattern,
"test.%d.png");
123 EXPECT_STREQ(udim_pattern,
"test.u%d_v%d.png");
127TEST(udim, image_get_tile_number_from_filepath)
135 EXPECT_NE(udim_pattern,
nullptr);
141 "test.1004.png",
nullptr, tile_format, &tile_number));
145 "test.1004.png", udim_pattern, tile_format,
nullptr));
149 "test.1004.png", udim_pattern, tile_format, &tile_number));
153 "has_no_number.png", udim_pattern, tile_format, &tile_number));
155 "test.X.png", udim_pattern, tile_format, &tile_number));
157 "wrong.1004.png", udim_pattern, tile_format, &tile_number));
164 EXPECT_NE(udim_pattern,
nullptr);
167 "test.u2_v2.png", udim_pattern, tile_format, &tile_number));
171 "has_no_number.png", udim_pattern, tile_format, &tile_number));
173 "test.u1_vX.png", udim_pattern, tile_format, &tile_number));
175 "test.uX_v1.png", udim_pattern, tile_format, &tile_number));
177 "wrong.u2_v2.png", udim_pattern, tile_format, &tile_number));
182TEST(udim, image_set_filepath_from_tile_number)
189 EXPECT_NE(udim_pattern,
nullptr);
198 EXPECT_STREQ(filepath,
"xxxx");
200 EXPECT_STREQ(filepath,
"xxxx");
204 EXPECT_STREQ(filepath,
"test.1028.png");
210 EXPECT_NE(udim_pattern,
nullptr);
213 EXPECT_STREQ(filepath,
"test.u8_v3.png");
218 Main *bmain_ =
nullptr;
261 const std::string asset_dir = blender::tests::flags_test_asset_dir().c_str();
267 RenderResult *render_result = get_image_render_result(image);
268 if (!render_result) {
269 ADD_FAILURE() <<
"Missing image RenderResult";
275 layer_names.
append(layer->name);
283 RenderResult *render_result = get_image_render_result(image);
284 if (!render_result) {
285 ADD_FAILURE() <<
"Missing image RenderResult";
290 if (layer->name == layer_name) {
293 pass_names.
append(pass->name);
309 Image *image = load_image(
"multilayer" SEP_STR "108980.exr");
310 ASSERT_NE(image,
nullptr);
312 EXPECT_THAT(get_image_layer_names(*image), Pointwise(Eq(), {
""}));
313 EXPECT_THAT(get_image_pass_names_for_layer(*image,
""),
337 Image *image = load_image(
"multilayer" SEP_STR "124217.exr");
338 ASSERT_NE(image,
nullptr);
340 EXPECT_THAT(get_image_layer_names(*image), Pointwise(Eq(), {
""}));
341 EXPECT_THAT(get_image_pass_names_for_layer(*image,
""),
373 Image *image = load_image(
"multilayer" SEP_STR "101227.exr");
374 ASSERT_NE(image,
nullptr);
376 EXPECT_THAT(get_image_layer_names(*image), Pointwise(Eq(), {
""}));
377 EXPECT_THAT(get_image_pass_names_for_layer(*image,
""),
378 Pointwise(Eq(), {
"C",
"N",
"albedo",
"depth"}));
@ UDIM_TILE_FORMAT_UVTILE
ImBuf * BKE_image_acquire_ibuf(Image *ima, ImageUser *iuser, void **r_lock)
char * BKE_image_get_tile_strformat(const char *filepath, eUDIM_TILE_FORMAT *r_tile_format)
Image * BKE_image_load(Main *bmain, const char *filepath)
void BKE_image_set_filepath_from_tile_number(char *filepath, const char *pattern, eUDIM_TILE_FORMAT tile_format, int tile_number)
void BKE_image_release_ibuf(Image *ima, ImBuf *ibuf, void *lock)
bool BKE_image_get_tile_number_from_filepath(const char *filepath, const char *pattern, eUDIM_TILE_FORMAT tile_format, int *r_tile_number)
void BKE_image_ensure_tile_token_filename_only(char *filename, size_t filename_maxncpy)
void BKE_imageuser_default(ImageUser *iuser)
Main * BKE_main_new(void)
void BKE_main_free(Main *bmain)
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
#define LISTBASE_FOREACH(type, var, list)
#define STRNCPY(dst, src)
void IMB_moviecache_destruct()
void IMB_moviecache_init()
Read Guarded memory(de)allocation.
void append(const T &value)
static void SetUpTestSuite()
Image * load_image(const char *path)
static void TearDownTestSuite()
Vector< std::string > get_image_pass_names_for_layer(Image &image, StringRefNull layer_name)
Vector< std::string > get_image_layer_names(Image &image)
void MEM_freeN(void *vmemh)
TEST_F(BKE_armature_find_selected_bones_test, some_bones_selected)
TEST(action_groups, ReconstructGroupsWithReordering)