4#include "testing/testing.h"
48 if (
bmain ==
nullptr) {
61 if (
bmain !=
nullptr) {
163TEST(lib_remap, embedded_ids_can_not_be_remapped)
168 EXPECT_NE(context.test_data.scene,
nullptr);
169 EXPECT_NE(context.test_data.compositor_nodetree,
nullptr);
170 EXPECT_EQ(context.test_data.compositor_nodetree, context.test_data.scene->nodetree);
173 context.test_data.bmain, context.test_data.compositor_nodetree, other_tree, 0);
175 EXPECT_EQ(context.test_data.compositor_nodetree, context.test_data.scene->nodetree);
176 EXPECT_NE(context.test_data.scene->nodetree, other_tree);
181TEST(lib_remap, embedded_ids_can_not_be_deleted)
185 EXPECT_NE(context.test_data.scene,
nullptr);
186 EXPECT_NE(context.test_data.compositor_nodetree,
nullptr);
187 EXPECT_EQ(context.test_data.compositor_nodetree, context.test_data.scene->nodetree);
190 context.test_data.compositor_nodetree,
194 EXPECT_EQ(context.test_data.compositor_nodetree, context.test_data.scene->nodetree);
195 EXPECT_NE(context.test_data.scene->nodetree,
nullptr);
204TEST(lib_remap, delete_when_remap_to_self_not_allowed)
208 EXPECT_NE(context.test_data.mesh,
nullptr);
209 EXPECT_NE(context.test_data.other_mesh,
nullptr);
210 context.test_data.mesh->texcomesh = context.test_data.other_mesh;
213 context.test_data.bmain, context.test_data.other_mesh, context.test_data.mesh, 0);
215 EXPECT_EQ(context.test_data.mesh->texcomesh,
nullptr);
224TEST(lib_remap, users_are_decreased_when_not_skipping_never_null)
228 EXPECT_NE(context.test_data.object,
nullptr);
229 EXPECT_EQ(context.test_data.object->data, context.test_data.mesh);
231 EXPECT_EQ(context.test_data.mesh->id.us, 1);
236 EXPECT_EQ(context.test_data.mesh->id.us, 0);
237 EXPECT_EQ(context.test_data.object->data, context.test_data.mesh);
238 EXPECT_NE(context.test_data.object->data,
nullptr);
242TEST(lib_remap, users_are_same_when_skipping_never_null)
246 EXPECT_NE(context.test_data.object,
nullptr);
247 EXPECT_EQ(context.test_data.object->data, context.test_data.mesh);
249 EXPECT_EQ(context.test_data.mesh->id.us, 1);
253 EXPECT_EQ(context.test_data.mesh->id.us, 1);
254 EXPECT_EQ(context.test_data.object->data, context.test_data.mesh);
255 EXPECT_NE(context.test_data.object->data,
nullptr);
265TEST(lib_remap, do_not_delete_when_cannot_unset)
269 EXPECT_NE(context.test_data.object,
nullptr);
270 EXPECT_EQ(context.test_data.object->data, context.test_data.mesh);
274 EXPECT_EQ(context.test_data.object->data, context.test_data.mesh);
275 EXPECT_NE(context.test_data.object->data,
nullptr);
278TEST(lib_remap, force_never_null_usage)
282 EXPECT_NE(context.test_data.object,
nullptr);
283 EXPECT_EQ(context.test_data.object->data, context.test_data.mesh);
287 EXPECT_EQ(context.test_data.object->data,
nullptr);
290TEST(lib_remap, never_null_usage_flag_not_requested_on_delete)
294 EXPECT_NE(context.test_data.object,
nullptr);
295 EXPECT_EQ(context.test_data.object->data, context.test_data.mesh);
301 EXPECT_EQ(context.test_data.object->data, context.test_data.mesh);
302 EXPECT_NE(context.test_data.object->data,
nullptr);
306TEST(lib_remap, never_null_usage_storage_requested_on_delete)
310 EXPECT_NE(context.test_data.object,
nullptr);
311 EXPECT_EQ(context.test_data.object->data, context.test_data.mesh);
316 remapper.
add(&context.test_data.mesh->id,
nullptr);
318 context.test_data.bmain,
324 EXPECT_EQ(context.test_data.object->data, context.test_data.mesh);
325 EXPECT_NE(context.test_data.object->data,
nullptr);
329TEST(lib_remap, never_null_usage_flag_not_requested_on_remap)
334 EXPECT_NE(context.test_data.object,
nullptr);
335 EXPECT_EQ(context.test_data.object->data, context.test_data.mesh);
341 EXPECT_EQ(context.test_data.object->data, other_mesh);
345TEST(lib_remap, never_null_usage_storage_requested_on_remap)
350 EXPECT_NE(context.test_data.object,
nullptr);
351 EXPECT_EQ(context.test_data.object->data, context.test_data.mesh);
357 remapper.
add(&context.test_data.mesh->id, &other_mesh->
id);
359 context.test_data.bmain,
362 EXPECT_EQ(context.test_data.object->data, other_mesh);
void CTX_data_main_set(bContext *C, Main *bmain)
void CTX_free(bContext *C)
void CTX_data_scene_set(bContext *C, Scene *scene)
void BKE_id_free(Main *bmain, void *idv)
void * BKE_id_new_nomain(short type, const char *name)
void BKE_libblock_remap_multiple_locked(Main *bmain, blender::bke::id::IDRemapper &mappings, const int remap_flags)
@ ID_REMAP_SKIP_NEVER_NULL_USAGE
@ ID_REMAP_FORCE_NEVER_NULL_USAGE
@ ID_REMAP_STORE_NEVER_NULL_USAGE
void void BKE_libblock_remap(Main *bmain, void *old_idv, void *new_idv, int remap_flags) ATTR_NONNULL(1
Main * BKE_main_new(void)
void BKE_main_free(Main *bmain)
Mesh * BKE_mesh_add(Main *bmain, const char *name)
General operations, lookup, etc. for blender objects.
Object * BKE_object_add_only_object(Main *bmain, int type, const char *name) ATTR_RETURNS_NONNULL
Scene * BKE_scene_add(Main *bmain, const char *name)
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
Object is a sort of wrapper for general info.
void ED_node_composit_default(const bContext *C, Scene *scene)
GHOST_TSuccess GHOST_DisposeSystemPaths()
Read Guarded memory(de)allocation.
bool contains(const Key &key) const
void add(ID *old_id, ID *new_id)
const Set< ID * > & never_null_users() const
bNodeTree * compositor_nodetree
TEST(action_groups, ReconstructGroupsWithReordering)