[Bf-blender-cvs] [fb7c003e992] strand_editmode: Simple CSV mesh loading for tests.

Lukas Tönne noreply at git.blender.org
Mon Aug 28 09:22:30 CEST 2017


Commit: fb7c003e9927c44cb8f05376555fd65cae86d379
Author: Lukas Tönne
Date:   Mon Aug 28 08:21:57 2017 +0100
Branches: strand_editmode
https://developer.blender.org/rBfb7c003e9927c44cb8f05376555fd65cae86d379

Simple CSV mesh loading for tests.

File paths are crude and preliminary.

===================================================================

M	tests/gtests/blenkernel/BKE_mesh_sample_test.cc
M	tests/gtests/blenkernel/BKE_mesh_test_util.cc
M	tests/gtests/blenkernel/BKE_mesh_test_util.h

===================================================================

diff --git a/tests/gtests/blenkernel/BKE_mesh_sample_test.cc b/tests/gtests/blenkernel/BKE_mesh_sample_test.cc
index 4efde074523..34c0b82342f 100644
--- a/tests/gtests/blenkernel/BKE_mesh_sample_test.cc
+++ b/tests/gtests/blenkernel/BKE_mesh_sample_test.cc
@@ -12,13 +12,17 @@ extern "C" {
 #include "MEM_guardedalloc.h"
 
 #include "BLI_math.h"
+#include "BLI_path_util.h"
 #include "BLI_rand.h"
 
 #include "DNA_mesh_types.h"
 #include "DNA_meshdata_types.h"
 
+#include "BKE_appdir.h"
 #include "BKE_cdderivedmesh.h"
 #include "BKE_DerivedMesh.h"
+#include "BKE_global.h"
+#include "BKE_main.h"
 #include "BKE_mesh.h"
 #include "BKE_mesh_sample.h"
 }
@@ -47,6 +51,7 @@ public:
 	void load_mesh(const float (*verts)[3], int numverts,
 	               const int (*edges)[2], int numedges,
 	               const int *faces, const int *face_lengths, int numfaces);
+	void load_mesh(const char *filename);
 	void unload_mesh();
 	
 	void generate_samples_simple(struct MeshSampleGenerator *gen);
@@ -86,6 +91,19 @@ void MeshSampleTest::load_mesh(const float (*verts)[3], int numverts,
 	m_dm = CDDM_from_mesh(m_mesh);
 }
 
+void MeshSampleTest::load_mesh(const char *filename)
+{
+	const char *folder = BKE_appdir_folder_id(BLENDER_DATAFILES, "tests");
+	char path[FILE_MAX];
+
+	BLI_make_file_string(G.main->name, path, folder, filename);
+
+	if (path[0]) {
+		m_mesh = BKE_mesh_test_from_csv(path);
+		m_dm = CDDM_from_mesh(m_mesh);
+	}
+}
+
 void MeshSampleTest::unload_mesh()
 {
 	if (m_dm) {
@@ -101,9 +119,12 @@ void MeshSampleTest::unload_mesh()
 
 void MeshSampleTest::SetUp()
 {
-	int numverts = ARRAY_SIZE(verts);
-	int numfaces = ARRAY_SIZE(face_lengths);
-	load_mesh(verts, numverts, NULL, 0, faces, face_lengths, numfaces);
+	load_mesh("suzanne.csv");
+	if (!m_dm) {
+		int numverts = ARRAY_SIZE(verts);
+		int numfaces = ARRAY_SIZE(face_lengths);
+		load_mesh(verts, numverts, NULL, 0, faces, face_lengths, numfaces);
+	}
 	
 	m_samples = (MeshSample *)MEM_mallocN(sizeof(MeshSample) * m_numsamples, "mesh samples");
 }
diff --git a/tests/gtests/blenkernel/BKE_mesh_test_util.cc b/tests/gtests/blenkernel/BKE_mesh_test_util.cc
index f72ee7c74d0..6dbed2c4533 100644
--- a/tests/gtests/blenkernel/BKE_mesh_test_util.cc
+++ b/tests/gtests/blenkernel/BKE_mesh_test_util.cc
@@ -1,5 +1,6 @@
 /* Apache License, Version 2.0 */
 
+#include <fstream>
 #include <iostream>
 #include <iomanip>
 
@@ -212,6 +213,48 @@ Mesh* BKE_mesh_test_from_data(
 	return me;
 }
 
+Mesh* BKE_mesh_test_from_csv(const char *filename)
+{
+	std::ifstream ifs (filename, std::ifstream::in);
+	
+	char delim;
+	
+	int numverts, numloops, numfaces;
+	float (*verts)[3] = NULL;
+	int *loops = NULL;
+	int *face_lengths = NULL;
+	
+	ifs >> numverts;
+	ifs >> delim;
+	verts = (float (*)[3])MEM_mallocN(sizeof(float[3]) * numverts, "verts");
+	for (int i = 0; i < numverts; ++i) {
+		ifs >> verts[i][0];
+		ifs >> delim;
+		ifs >> verts[i][1];
+		ifs >> delim;
+		ifs >> verts[i][2];
+		ifs >> delim;
+	}
+	
+	ifs >> numloops;
+	ifs >> delim;
+	loops = (int *)MEM_mallocN(sizeof(int) * numloops, "loops");
+	for (int i = 0; i < numloops; ++i) {
+		ifs >> loops[i];
+		ifs >> delim;
+	}
+	
+	ifs >> numfaces;
+	ifs >> delim;
+	face_lengths = (int *)MEM_mallocN(sizeof(int) * numfaces, "face_lengths");
+	for (int i = 0; i < numfaces; ++i) {
+		ifs >> face_lengths[i];
+		ifs >> delim;
+	}
+	
+	return BKE_mesh_test_from_data(verts, numverts, NULL, 0, loops, face_lengths, numfaces);
+}
+
 void BKE_mesh_test_dump_verts(Mesh *me, std::ostream &str)
 {
 	int numverts = me->totvert;
diff --git a/tests/gtests/blenkernel/BKE_mesh_test_util.h b/tests/gtests/blenkernel/BKE_mesh_test_util.h
index e0c5c0d38ff..6ab5f9b1236 100644
--- a/tests/gtests/blenkernel/BKE_mesh_test_util.h
+++ b/tests/gtests/blenkernel/BKE_mesh_test_util.h
@@ -9,6 +9,8 @@ struct Mesh* BKE_mesh_test_from_data(
         const int (*edges)[2], int numedges,
         const int *loops, const int *face_lengths, int numfaces);
 
+struct Mesh* BKE_mesh_test_from_csv(const char *filename);
+
 void BKE_mesh_test_dump_verts(struct Mesh *me, std::ostream &str);
 void BKE_mesh_test_dump_edges(struct Mesh *me, std::ostream &str);
 void BKE_mesh_test_dump_faces(struct Mesh *me, std::ostream &str);



More information about the Bf-blender-cvs mailing list