[Bf-blender-cvs] [90ea4d03edc] soc-2021-adaptive-cloth: adaptive_cloth: tests: MeshIO: write DNA Mesh loose edges

ishbosamiya noreply at git.blender.org
Mon Jul 5 17:33:39 CEST 2021


Commit: 90ea4d03edc50739e7c2aa8d45bf4ad05ed530a3
Author: ishbosamiya
Date:   Fri Jul 2 23:23:43 2021 +0530
Branches: soc-2021-adaptive-cloth
https://developer.blender.org/rB90ea4d03edc50739e7c2aa8d45bf4ad05ed530a3

adaptive_cloth: tests: MeshIO: write DNA Mesh loose edges

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

M	source/blender/blenkernel/tests/BKE_cloth_remesh_test.cc

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

diff --git a/source/blender/blenkernel/tests/BKE_cloth_remesh_test.cc b/source/blender/blenkernel/tests/BKE_cloth_remesh_test.cc
index 74f71ccfe12..fa551c1f2fa 100644
--- a/source/blender/blenkernel/tests/BKE_cloth_remesh_test.cc
+++ b/source/blender/blenkernel/tests/BKE_cloth_remesh_test.cc
@@ -690,6 +690,118 @@ TEST(cloth_remesh, MeshIO_WriteDNAMesh)
   BKE_mesh_eval_delete(mesh);
 }
 
+TEST(cloth_remesh, MeshIO_WriteDNAMesh_LooseEdges)
+{
+  MeshIO reader;
+  std::istringstream stream_in(plane_extra_loose_edges);
+  auto res = reader.read(std::move(stream_in), MeshIO::IOTYPE_OBJ);
+  EXPECT_TRUE(res);
+
+  auto *mesh = reader.write();
+  EXPECT_NE(mesh, nullptr);
+
+  EXPECT_NE(mesh->mvert, nullptr);
+  EXPECT_NE(mesh->medge, nullptr);
+  EXPECT_NE(mesh->mpoly, nullptr);
+  EXPECT_NE(mesh->mloop, nullptr);
+  EXPECT_NE(mesh->mloopuv, nullptr);
+
+  auto format_string_mvert = [](const MVert &mvert) {
+    std::ostringstream stream;
+    stream << "[mvert: ("
+           << "co: " << stringify_v3(mvert.co) << ")]";
+    return stream.str();
+  };
+  auto format_string_mloopuv = [](const MLoopUV &mloopuv) {
+    std::ostringstream stream;
+    stream << "[mloopuv: ("
+           << "uv: " << stringify_v2(mloopuv.uv) << ")]";
+    return stream.str();
+  };
+  auto format_string_medge = [](const MEdge &medge) {
+    std::ostringstream stream;
+    stream << "[medge: ("
+           << "v1: " << medge.v1 << ", v2: " << medge.v2
+           << ", loose: " << ((medge.flag & ME_LOOSEEDGE) != 0) << ")]";
+    return stream.str();
+  };
+  auto format_string_mpoly = [](const MPoly &mpoly) {
+    std::ostringstream stream;
+    stream << "[mpoly: ("
+           << "loopstart: " << mpoly.loopstart << ", totloop: " << mpoly.totloop << ")]";
+    return stream.str();
+  };
+  auto format_string_mloop = [](const MLoop &mloop) {
+    std::ostringstream stream;
+    stream << "[mloop: ("
+           << "v: " << mloop.v << ", e: " << mloop.e << ")]";
+    return stream.str();
+  };
+
+  std::string expected =
+      "[mvert: (co: (-1, 0, 1))]\n"
+      "[mvert: (co: (1, 0, 1))]\n"
+      "[mvert: (co: (-1, 0, -1))]\n"
+      "[mvert: (co: (1, 0, -1))]\n"
+      "[mvert: (co: (-1, 0, -2))]\n"
+      "[mvert: (co: (1, 0, -2))]\n"
+      "[mvert: (co: (2, 0, 1))]\n"
+      "[mvert: (co: (2, 0, -1))]\n"
+      "[mvert: (co: (-1, 0, 2))]\n"
+      "[mvert: (co: (1, 0, 2))]\n"
+      "[mvert: (co: (-2, 0, 1))]\n"
+      "[mvert: (co: (-2, 0, -1))]\n"
+      "[mvert: (co: (3, 0, 1))]\n"
+      "[mvert: (co: (3, 0, -1))]\n"
+      "[mloopuv: (uv: (0, 0))]\n"
+      "[mloopuv: (uv: (1, 0))]\n"
+      "[mloopuv: (uv: (1, 1))]\n"
+      "[mloopuv: (uv: (0, 1))]\n"
+      "[mpoly: (loopstart: 0, totloop: 4)]\n"
+      "[mloop: (v: 0, e: 0)]\n"
+      "[mloop: (v: 1, e: 2)]\n"
+      "[mloop: (v: 3, e: 12)]\n"
+      "[mloop: (v: 2, e: 1)]\n"
+      "[medge: (v1: 0, v2: 1, loose: 0)]\n"
+      "[medge: (v1: 0, v2: 2, loose: 0)]\n"
+      "[medge: (v1: 1, v2: 3, loose: 0)]\n"
+      "[medge: (v1: 4, v2: 2, loose: 1)]\n"
+      "[medge: (v1: 5, v2: 4, loose: 1)]\n"
+      "[medge: (v1: 1, v2: 6, loose: 1)]\n"
+      "[medge: (v1: 6, v2: 7, loose: 1)]\n"
+      "[medge: (v1: 0, v2: 8, loose: 1)]\n"
+      "[medge: (v1: 8, v2: 9, loose: 1)]\n"
+      "[medge: (v1: 10, v2: 0, loose: 1)]\n"
+      "[medge: (v1: 11, v2: 10, loose: 1)]\n"
+      "[medge: (v1: 13, v2: 12, loose: 1)]\n"
+      "[medge: (v1: 2, v2: 3, loose: 0)]\n"
+      "[medge: (v1: 2, v2: 11, loose: 1)]\n"
+      "[medge: (v1: 3, v2: 5, loose: 1)]\n"
+      "[medge: (v1: 9, v2: 1, loose: 1)]\n"
+      "[medge: (v1: 7, v2: 3, loose: 1)]\n";
+
+  std::ostringstream sout;
+  for (auto i = 0; i < mesh->totvert; i++) {
+    sout << format_string_mvert(mesh->mvert[i]) << std::endl;
+  }
+  for (auto i = 0; i < mesh->totloop; i++) {
+    sout << format_string_mloopuv(mesh->mloopuv[i]) << std::endl;
+  }
+  for (auto i = 0; i < mesh->totpoly; i++) {
+    sout << format_string_mpoly(mesh->mpoly[i]) << std::endl;
+  }
+  for (auto i = 0; i < mesh->totloop; i++) {
+    sout << format_string_mloop(mesh->mloop[i]) << std::endl;
+  }
+  for (auto i = 0; i < mesh->totedge; i++) {
+    sout << format_string_medge(mesh->medge[i]) << std::endl;
+  }
+
+  EXPECT_EQ(sout.str(), expected);
+
+  BKE_mesh_eval_delete(mesh);
+}
+
 TEST(cloth_remesh, Mesh_Read)
 {
   MeshIO reader;



More information about the Bf-blender-cvs mailing list