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

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorHoward Trickey <howard.trickey@gmail.com>2014-06-19 19:49:09 +0400
committerHoward Trickey <howard.trickey@gmail.com>2014-06-19 19:53:55 +0400
commiteaac6cbcd9428533273091710759106131f92340 (patch)
tree0f1fb45c5ac236c9fa57c01f3db50b635c7d007e /tests
parent179e7eaf394481c10b66b4db762e8189aa5a0a2a (diff)
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).
Diffstat (limited to 'tests')
-rw-r--r--tests/gtests/CMakeLists.txt1
-rw-r--r--tests/gtests/bmesh/CMakeLists.txt43
-rw-r--r--tests/gtests/bmesh/bmesh_core_test.cc36
3 files changed, 80 insertions, 0 deletions
diff --git a/tests/gtests/CMakeLists.txt b/tests/gtests/CMakeLists.txt
index 317f030a658..a3860ce3e67 100644
--- a/tests/gtests/CMakeLists.txt
+++ b/tests/gtests/CMakeLists.txt
@@ -10,5 +10,6 @@ if(WITH_GTESTS)
add_subdirectory(testing)
add_subdirectory(blenlib)
add_subdirectory(guardedalloc)
+ add_subdirectory(bmesh)
endif()
diff --git a/tests/gtests/bmesh/CMakeLists.txt b/tests/gtests/bmesh/CMakeLists.txt
new file mode 100644
index 00000000000..aaee73d159d
--- /dev/null
+++ b/tests/gtests/bmesh/CMakeLists.txt
@@ -0,0 +1,43 @@
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# The Original Code is Copyright (C) 2014, Blender Foundation
+# All rights reserved.
+#
+# Contributor(s): Howard Trickey
+#
+# ***** END GPL LICENSE BLOCK *****
+
+set(INC
+ .
+ ../
+ ../../../source/blender/blenlib
+ ../../../source/blender/makesdna
+ ../../../source/blender/bmesh
+ ../../../intern/guardedalloc
+)
+
+include_directories(${INC})
+
+setup_libdirs()
+get_property(BLENDER_SORTED_LIBS GLOBAL PROPERTY BLENDER_SORTED_LIBS_PROP)
+
+# Current BLENDER_SORTED_LIBS works with starting list of symbols in creator, but not
+# for this test. Doubling the list does let all the symbols be resolved, but link time is a bit painful.
+set(BLENDER_SORTED_LIBS ${BLENDER_SORTED_LIBS} ${BLENDER_SORTED_LIBS})
+
+BLENDER_SRC_GTEST(bmesh_core "bmesh_core_test.cc;$<TARGET_OBJECTS:buildinfoobj>" "${BLENDER_SORTED_LIBS}")
+setup_liblinks(bmesh_core_test)
diff --git a/tests/gtests/bmesh/bmesh_core_test.cc b/tests/gtests/bmesh/bmesh_core_test.cc
new file mode 100644
index 00000000000..9c389a802de
--- /dev/null
+++ b/tests/gtests/bmesh/bmesh_core_test.cc
@@ -0,0 +1,36 @@
+#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));
+}