This repository has been archived on 2023-10-09. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
blender-archive/tests/gtests/bmesh/bmesh_core_test.cc
Howard Trickey eaac6cbcd9 Add a bmesh_core_test, a start at testing bmesh functionality.
Needed to make the blender link libraries a global property
now that tests are parallel to source directory.
Current sort order for blender link libraries doesn't work
for tests that start with few defined symbols. Doubling the
lib list works, but a TODO to find a better way (probably
using CMake's own mechanism for tracking dependencies).
2014-06-19 11:53:55 -04:00

37 lines
1.2 KiB
C++

#include "testing/testing.h"
#include "BLI_utildefines.h"
#include "bmesh.h"
#include "BLI_math.h"
TEST(bmesh_core, BMVertCreate) {
BMesh *bm;
BMVert *bv1, *bv2, *bv3;
const float co1[3] = {1.0f, 2.0f, 0.0f};
bm = BM_mesh_create(&bm_mesh_allocsize_default);
EXPECT_EQ(0, bm->totvert);
/* make a custom layer so we can see if it is copied properly */
BM_data_layer_add(bm, &bm->vdata, CD_PROP_FLT);
bv1 = BM_vert_create(bm, co1, NULL, BM_CREATE_NOP);
ASSERT_TRUE(bv1 != NULL);
EXPECT_EQ(1.0f, bv1->co[0]);
EXPECT_EQ(2.0f, bv1->co[1]);
EXPECT_EQ(0.0f, bv1->co[2]);
EXPECT_TRUE(is_zero_v3(bv1->no));
EXPECT_EQ((char)BM_VERT, bv1->head.htype);
EXPECT_EQ(0, bv1->head.hflag);
EXPECT_EQ(0, bv1->head.api_flag);
bv2 = BM_vert_create(bm, NULL, NULL, BM_CREATE_NOP);
ASSERT_TRUE(bv2 != NULL);
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_FLT, 1.5f);
bv3 = BM_vert_create(bm, co1, bv2, BM_CREATE_NOP);
ASSERT_TRUE(bv3 != NULL);
EXPECT_FALSE(BM_elem_flag_test((BMElem *)bv3, BM_ELEM_SELECT));
EXPECT_EQ(1.5f, BM_elem_float_data_get(&bm->vdata, bv3, CD_PROP_FLT));
EXPECT_EQ(3, BM_mesh_elem_count(bm, BM_VERT));
}