bmesh_core_test.cc 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include "testing/testing.h"
  2. #include "BLI_utildefines.h"
  3. #include "bmesh.h"
  4. #include "BLI_math.h"
  5. TEST(bmesh_core, BMVertCreate)
  6. {
  7. BMesh *bm;
  8. BMVert *bv1, *bv2, *bv3;
  9. const float co1[3] = {1.0f, 2.0f, 0.0f};
  10. BMeshCreateParams bm_params;
  11. bm_params.use_toolflags = true;
  12. bm = BM_mesh_create(&bm_mesh_allocsize_default, &bm_params);
  13. EXPECT_EQ(bm->totvert, 0);
  14. /* make a custom layer so we can see if it is copied properly */
  15. BM_data_layer_add(bm, &bm->vdata, CD_PROP_FLT);
  16. bv1 = BM_vert_create(bm, co1, NULL, BM_CREATE_NOP);
  17. ASSERT_TRUE(bv1 != NULL);
  18. EXPECT_EQ(bv1->co[0], 1.0f);
  19. EXPECT_EQ(bv1->co[1], 2.0f);
  20. EXPECT_EQ(bv1->co[2], 0.0f);
  21. EXPECT_TRUE(is_zero_v3(bv1->no));
  22. EXPECT_EQ(bv1->head.htype, (char)BM_VERT);
  23. EXPECT_EQ(bv1->head.hflag, 0);
  24. EXPECT_EQ(bv1->head.api_flag, 0);
  25. bv2 = BM_vert_create(bm, NULL, NULL, BM_CREATE_NOP);
  26. ASSERT_TRUE(bv2 != NULL);
  27. EXPECT_TRUE(is_zero_v3(bv2->co));
  28. /* create with example should copy custom data but not select flag */
  29. BM_vert_select_set(bm, bv2, true);
  30. BM_elem_float_data_set(&bm->vdata, bv2, CD_PROP_FLT, 1.5f);
  31. bv3 = BM_vert_create(bm, co1, bv2, BM_CREATE_NOP);
  32. ASSERT_TRUE(bv3 != NULL);
  33. EXPECT_FALSE(BM_elem_flag_test((BMElem *)bv3, BM_ELEM_SELECT));
  34. EXPECT_EQ(BM_elem_float_data_get(&bm->vdata, bv3, CD_PROP_FLT), 1.5f);
  35. EXPECT_EQ(BM_mesh_elem_count(bm, BM_VERT), 3);
  36. BM_mesh_free(bm);
  37. }