Changeset View
Changeset View
Standalone View
Standalone View
source/blender/bmesh/tests/bmesh_core_test.cc
| Show All 32 Lines | TEST(bmesh_core, BMVertCreate) | ||||
| BM_elem_float_data_set(&bm->vdata, bv2, CD_PROP_FLOAT, 1.5f); | BM_elem_float_data_set(&bm->vdata, bv2, CD_PROP_FLOAT, 1.5f); | ||||
| bv3 = BM_vert_create(bm, co1, bv2, BM_CREATE_NOP); | bv3 = BM_vert_create(bm, co1, bv2, BM_CREATE_NOP); | ||||
| ASSERT_TRUE(bv3 != nullptr); | ASSERT_TRUE(bv3 != nullptr); | ||||
| EXPECT_FALSE(BM_elem_flag_test((BMElem *)bv3, BM_ELEM_SELECT)); | EXPECT_FALSE(BM_elem_flag_test((BMElem *)bv3, BM_ELEM_SELECT)); | ||||
| EXPECT_EQ(BM_elem_float_data_get(&bm->vdata, bv3, CD_PROP_FLOAT), 1.5f); | EXPECT_EQ(BM_elem_float_data_get(&bm->vdata, bv3, CD_PROP_FLOAT), 1.5f); | ||||
| EXPECT_EQ(BM_mesh_elem_count(bm, BM_VERT), 3); | EXPECT_EQ(BM_mesh_elem_count(bm, BM_VERT), 3); | ||||
| BM_mesh_free(bm); | BM_mesh_free(bm); | ||||
| } | } | ||||
| TEST(bmesh_core, BMEdgeCreate) | |||||
| { | |||||
| BMesh *bm; | |||||
| BMeshCreateParams bm_params; | |||||
| BMVert *bv1, *bv2, *bv3; | |||||
| BMEdge *be1, *be2, *be3; | |||||
| bm_params.use_toolflags = true; | |||||
| bm = BM_mesh_create(&bm_mesh_allocsize_default, &bm_params); | |||||
| BM_data_layer_add(bm, &bm->edata, CD_PROP_FLOAT); | |||||
| const float co1[3] = {1.0f, 2.0f, 0.0f}; | |||||
| bv1 = BM_vert_create(bm, co1, nullptr, BM_CREATE_NOP); | |||||
| const float co2[3] = {2.0f, 3.0f, 1.0f}; | |||||
| bv2 = BM_vert_create(bm, co2, nullptr, BM_CREATE_NOP); | |||||
| bv3 = BM_vert_create(bm, nullptr, nullptr, BM_CREATE_NOP); | |||||
| be1 = BM_edge_create(bm, bv1, bv2, nullptr, BM_CREATE_NO_DOUBLE); | |||||
| ASSERT_TRUE(be1 != nullptr); | |||||
| EXPECT_TRUE(be1->v1 != be1->v2); | |||||
| EXPECT_TRUE(&be1->v1_disk_link != &be1->v2_disk_link); | |||||
| EXPECT_TRUE(BM_vert_in_edge(be1, bv1)); | |||||
| EXPECT_TRUE(BM_vert_in_edge(be1, bv2)); | |||||
| EXPECT_EQ(be1->head.htype, (char)BM_EDGE); | |||||
| EXPECT_EQ(be1->head.hflag, (char)(BM_ELEM_SMOOTH | BM_ELEM_DRAW)); | |||||
| EXPECT_EQ(be1->head.api_flag, 0); | |||||
| be2 = BM_edge_create(bm, bv1, bv3, nullptr, BM_CREATE_NO_DOUBLE); | |||||
| ASSERT_TRUE(be2 != nullptr); | |||||
| EXPECT_EQ(be2->v1_disk_link.next, be1); | |||||
| BM_edge_select_set(bm, be1, true); | |||||
| BM_elem_float_data_set(&bm->edata, be1, CD_PROP_FLOAT, 1.5f); | |||||
| be3 = BM_edge_create(bm, bv2, bv3, be1, BM_CREATE_NO_DOUBLE); | |||||
| ASSERT_TRUE(be3 != nullptr); | |||||
| EXPECT_EQ(BM_elem_float_data_get(&bm->edata, be3, CD_PROP_FLOAT), 1.5f); | |||||
| EXPECT_EQ(bm->totedge, 3); | |||||
| BM_mesh_free(bm); | |||||
| } | |||||