4#include "testing/testing.h"
50 if (this->bmain ==
nullptr) {
55 if (this->C ==
nullptr) {
63 if (this->C !=
nullptr) {
69 if (this->bmain !=
nullptr) {
71 this->bmain =
nullptr;
94 this->
object->data = this->
mesh;
113 this->compositor_nodetree = scene->nodetree;
122template<
typename TestData>
class Context {
159 EXPECT_NE(context.test_data.scene,
nullptr);
160 EXPECT_NE(context.test_data.object,
nullptr);
161 EXPECT_NE(context.test_data.target,
nullptr);
162 EXPECT_NE(context.test_data.mesh,
nullptr);
175 if (*(cb_data->id_pointer)) {
176 (*(cb_data->id_pointer))->us = 42;
181 context.test_data.bmain, &context.test_data.scene->id, set_count,
nullptr,
IDWALK_READONLY);
182 EXPECT_EQ(context.test_data.scene->id.us, 42);
183 EXPECT_EQ(context.test_data.object->id.us, 42);
184 EXPECT_EQ(context.test_data.target->id.us, 42);
185 EXPECT_EQ(context.test_data.mesh->id.us, 0);
190 if (*(cb_data->id_pointer) == &test_data->
mesh->
id) {
191 *(cb_data->id_pointer) =
nullptr;
196 &context.test_data.object->id,
200 EXPECT_EQ(context.test_data.object->data,
nullptr);
204 context.test_data.object->data = context.test_data.mesh;
206 &context.test_data.scene->id,
214TEST(lib_query, libquery_recursive)
218 EXPECT_NE(context.test_data.scene,
nullptr);
219 EXPECT_NE(context.test_data.object,
nullptr);
220 EXPECT_NE(context.test_data.target,
nullptr);
221 EXPECT_NE(context.test_data.mesh,
nullptr);
234 if (*(cb_data->id_pointer)) {
235 (*(cb_data->id_pointer))->us = 42;
240 context.test_data.bmain, &context.test_data.scene->id, set_count,
nullptr,
IDWALK_RECURSE);
254 if (*(cb_data->id_pointer) && (cb_data->cb_flag &
IDWALK_CB_USER) != 0) {
255 (*(cb_data->id_pointer))->us++;
260 &context.test_data.scene->id,
265 EXPECT_EQ(context.test_data.scene->id.us, 1);
266 EXPECT_EQ(context.test_data.object->id.us, 1);
269 EXPECT_EQ(context.test_data.target->id.us, 2);
270 EXPECT_EQ(context.test_data.mesh->id.us, 1);
273TEST(lib_query, libquery_subdata)
277 EXPECT_NE(context.test_data.scene,
nullptr);
278 EXPECT_NE(context.test_data.object,
nullptr);
279 EXPECT_NE(context.test_data.target,
nullptr);
280 EXPECT_NE(context.test_data.mesh,
nullptr);
291 if (*(cb_data->id_pointer)) {
292 (*(cb_data->id_pointer))->us = 42;
301 &context.test_data.scene->id,
302 &context.test_data.scene->nodetree->id,
308 EXPECT_EQ(context.test_data.scene->id.us, 0);
309 EXPECT_EQ(context.test_data.object->id.us, 0);
311 EXPECT_EQ(context.test_data.target->id.us, 42);
312 EXPECT_EQ(context.test_data.mesh->id.us, 0);
bool BKE_collection_object_add(Main *bmain, Collection *collection, Object *ob)
void CTX_data_main_set(bContext *C, Main *bmain)
void CTX_free(bContext *C)
void CTX_data_scene_set(bContext *C, Scene *scene)
bool IDP_AddToGroup(IDProperty *group, IDProperty *prop) ATTR_NONNULL()
void BKE_library_foreach_subdata_id(Main *bmain, ID *owner_id, ID *self_id, blender::FunctionRef< void(LibraryForeachIDData *data)> subdata_foreach_id, blender::FunctionRef< LibraryIDLinkCallback > callback, void *user_data, const int flag)
void BKE_library_foreach_ID_link(Main *bmain, ID *id, blender::FunctionRef< LibraryIDLinkCallback > callback, void *user_data, int flag)
#define FOREACH_MAIN_ID_END
Main * BKE_main_new(void)
void BKE_main_free(Main *bmain)
#define FOREACH_MAIN_ID_BEGIN(_bmain, _id)
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.
bNodeTree * compositor_nodetree
std::unique_ptr< IDProperty, IDPropertyDeleter > create(StringRefNull prop_name, int32_t value, eIDPropertyFlag flags={})
Allocate a new IDProperty of type IDP_INT, set its name and value.
std::unique_ptr< IDProperty, IDPropertyDeleter > create_group(StringRefNull prop_name, eIDPropertyFlag flags={})
Allocate a new IDProperty of type IDP_GROUP.
TEST(action_groups, ReconstructGroupsWithReordering)
void node_node_foreach_id(bNode *node, LibraryForeachIDData *data)
static void node_foreach_id(ID *id, LibraryForeachIDData *data)
struct Collection * master_collection