/** * \copyright * Copyright (c) 2012-2021, OpenGeoSys Community (http://www.opengeosys.org) * Distributed under a Modified BSD License. * See accompanying file LICENSE.txt or * http://www.opengeosys.org/project/license */ #include #include #include #include #include #include "MeshLib/MeshEditing/moveMeshNodes.h" #include "MeshLib/Node.h" TEST(MeshLib, moveMeshNodes) { /* initialize random seed: */ srand(static_cast(time(nullptr))); std::size_t const size(16384); std::vector nodes; std::vector nodes_copy; nodes.resize(size); nodes_copy.resize(size); /* put nodes with random coords into vectors */ for (std::size_t k(0); k < size; k++) { nodes[k] = new MeshLib::Node(rand(), rand(), rand()); nodes_copy[k] = new MeshLib::Node(*nodes[k]); } /* create random displacement */ MeshLib::Node displacement(rand(), rand(), rand()); /* move the mesh node */ MeshLib::moveMeshNodes(nodes.begin(), nodes.end(), displacement); /* reverse the direction of displacement */ displacement[0] *= -1.0; displacement[1] *= -1.0; displacement[2] *= -1.0; /* move the mesh node back */ MeshLib::moveMeshNodes(nodes.begin(), nodes.end(), displacement); /* check the result */ double const eps(std::numeric_limits::epsilon()); for (std::size_t k(0); k < size; k++) { EXPECT_NEAR((*nodes_copy[0])[0], (*nodes[0])[0], eps); EXPECT_NEAR((*nodes_copy[0])[1], (*nodes[0])[1], eps); EXPECT_NEAR((*nodes_copy[0])[2], (*nodes[0])[2], eps); } for (auto n : nodes) { delete n; } for (auto n : nodes_copy) { delete n; } }