19#include "testing/testing.h"
20#include "gmock/gmock.h"
34using testing::Pointwise;
36TEST(udim, image_ensure_tile_token)
38 auto verify = [](
const char *original,
const char *expected) {
43 EXPECT_STREQ(
result, expected);
47 verify(
"test.<UDIM>.png",
"test.<UDIM>.png");
48 verify(
"test.<UVTILE>.png",
"test.<UVTILE>.png");
51 verify(
"test.1002.png",
"test.<UDIM>.png");
52 verify(
"test-1002-ao.png",
"test-<UDIM>-ao.png");
53 verify(
"test_1002_ao.png",
"test_<UDIM>_ao.png");
54 verify(
"test.1002.ver0023.png",
"test.<UDIM>.ver0023.png");
55 verify(
"test.ver0023.1002.png",
"test.ver0023.<UDIM>.png");
56 verify(
"test.1002.1.png",
"test.<UDIM>.1.png");
57 verify(
"test.1.1002.png",
"test.1.<UDIM>.png");
58 verify(
"test-2022-01-01.1002.png",
"test-2022-01-01.<UDIM>.png");
59 verify(
"1111_11.1002.png",
"1111_11.<UDIM>.png");
60 verify(
"2111_01.1002.png",
"2111_01.<UDIM>.png");
61 verify(
"2022_1002_100200.1002.png",
"2022_1002_100200.<UDIM>.png");
64 verify(
"uv-test.u2_v10.png",
"uv-test.<UVTILE>.png");
65 verify(
"uv-test-u2_v10-ao.png",
"uv-test-<UVTILE>-ao.png");
66 verify(
"uv-test_u2_v10_ao.png",
"uv-test_<UVTILE>_ao.png");
67 verify(
"uv-test.u10_v100.png",
"uv-test.<UVTILE>.png");
68 verify(
"u_v-test.u2_v10.png",
"u_v-test.<UVTILE>.png");
69 verify(
"u2_v10uv-test.png",
"<UVTILE>uv-test.png");
70 verify(
"u2_v10u_v-test.png",
"<UVTILE>u_v-test.png");
73 for (
const char *incorrect : {
"1002.png",
90 "test.u1_v12345.png"})
93 verify(incorrect, incorrect);
97TEST(udim, image_get_tile_strformat)
120 EXPECT_STREQ(udim_pattern,
"test.%d.png");
125 EXPECT_STREQ(udim_pattern,
"test.u%d_v%d.png");
129TEST(udim, image_get_tile_number_from_filepath)
137 EXPECT_NE(udim_pattern,
nullptr);
143 "test.1004.png",
nullptr, tile_format, &tile_number));
147 "test.1004.png", udim_pattern, tile_format,
nullptr));
151 "test.1004.png", udim_pattern, tile_format, &tile_number));
155 "has_no_number.png", udim_pattern, tile_format, &tile_number));
157 "test.X.png", udim_pattern, tile_format, &tile_number));
159 "wrong.1004.png", udim_pattern, tile_format, &tile_number));
166 EXPECT_NE(udim_pattern,
nullptr);
169 "test.u2_v2.png", udim_pattern, tile_format, &tile_number));
173 "has_no_number.png", udim_pattern, tile_format, &tile_number));
175 "test.u1_vX.png", udim_pattern, tile_format, &tile_number));
177 "test.uX_v1.png", udim_pattern, tile_format, &tile_number));
179 "wrong.u2_v2.png", udim_pattern, tile_format, &tile_number));
184TEST(udim, image_set_filepath_from_tile_number)
191 EXPECT_NE(udim_pattern,
nullptr);
200 EXPECT_STREQ(filepath,
"xxxx");
202 EXPECT_STREQ(filepath,
"xxxx");
206 EXPECT_STREQ(filepath,
"test.1028.png");
212 EXPECT_NE(udim_pattern,
nullptr);
215 EXPECT_STREQ(filepath,
"test.u8_v3.png");
220 Main *bmain_ =
nullptr;
267 const std::string asset_dir = blender::tests::flags_test_asset_dir();
274 if (!render_result) {
275 ADD_FAILURE() <<
"Missing image RenderResult";
281 layer_names.
append(layer->name);
290 if (!render_result) {
291 ADD_FAILURE() <<
"Missing image RenderResult";
296 if (layer->name == layer_name) {
299 pass_names.
append(pass->name);
316 ASSERT_NE(
image,
nullptr);
318 EXPECT_THAT(get_image_layer_names(*
image), Pointwise(Eq(), {
""}));
319 EXPECT_THAT(get_image_pass_names_for_layer(*
image,
""),
344 ASSERT_NE(
image,
nullptr);
346 EXPECT_THAT(get_image_layer_names(*
image), Pointwise(Eq(), {
""}));
347 EXPECT_THAT(get_image_pass_names_for_layer(*
image,
""),
380 ASSERT_NE(
image,
nullptr);
382 EXPECT_THAT(get_image_layer_names(*
image), Pointwise(Eq(), {
""}));
383 EXPECT_THAT(get_image_pass_names_for_layer(*
image,
""),
384 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)
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)
char * STRNCPY(char(&dst)[N], const char *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(ArmatureDeformTest, MeshDeform)
TEST(action_groups, ReconstructGroupsWithReordering)