Welcome to mirror list, hosted at ThFree Co, Russian Federation.

bmesh_core_test.cc « tests « bmesh « blender « source - git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 8770e16ac2b6faf33de0682d0f6f53fa2336f125 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "testing/testing.h"

#include "BLI_math.h"
#include "BLI_utildefines.h"
#include "bmesh.h"

TEST(bmesh_core, BMVertCreate)
{
  BMesh *bm;
  BMVert *bv1, *bv2, *bv3;
  const float co1[3] = {1.0f, 2.0f, 0.0f};

  BMeshCreateParams bm_params = {0};

  bm_params.use_toolflags = true;

  bm = BM_mesh_create(&bm_mesh_allocsize_default, &bm_params);
  EXPECT_EQ(bm->totvert, 0);
  /* make a custom layer so we can see if it is copied properly */
  BM_data_layer_add(bm, &bm->vdata, CD_PROP_FLOAT);
  bv1 = BM_vert_create(bm, co1, nullptr, BM_CREATE_NOP);
  ASSERT_TRUE(bv1 != nullptr);
  EXPECT_EQ(bv1->co[0], 1.0f);
  EXPECT_EQ(bv1->co[1], 2.0f);
  EXPECT_EQ(bv1->co[2], 0.0f);
  EXPECT_TRUE(is_zero_v3(bv1->no));
  EXPECT_EQ(bv1->head.htype, (char)BM_VERT);
  EXPECT_EQ(bv1->head.hflag, 0);
  EXPECT_EQ(bv1->head.api_flag, 0);
  bv2 = BM_vert_create(bm, nullptr, nullptr, BM_CREATE_NOP);
  ASSERT_TRUE(bv2 != nullptr);
  EXPECT_TRUE(is_zero_v3(bv2->co));
  /* create with example should copy custom data but not select flag */
  BM_vert_select_set(bm, bv2, true);
  BM_elem_float_data_set(&bm->vdata, bv2, CD_PROP_FLOAT, 1.5f);
  bv3 = BM_vert_create(bm, co1, bv2, BM_CREATE_NOP);
  ASSERT_TRUE(bv3 != nullptr);
  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_mesh_elem_count(bm, BM_VERT), 3);
  BM_mesh_free(bm);
}