Throw in Triangle::NeighborAcross in case of null pointer

Add an example quad for which the exception is throwni in the tests
This commit is contained in:
Pierre Dejoue
2020-05-21 16:14:10 +02:00
parent 06b0f14b29
commit 2c6bec64c0
3 changed files with 30 additions and 3 deletions

View File

@@ -5,6 +5,7 @@
#include <fstream>
#include <iostream>
#include <iterator>
#include <stdexcept>
BOOST_AUTO_TEST_CASE(BasicTest)
{
@@ -40,6 +41,22 @@ BOOST_AUTO_TEST_CASE(QuadTest)
}
}
BOOST_AUTO_TEST_CASE(QuadTestThrow)
{
// Very narrow quad that demonstrates a failure case during triangulation
std::vector<p2t::Point*> polyline {
new p2t::Point(0.0, 0.0),
new p2t::Point(1.0e-05, 0.0),
new p2t::Point(1.1e-04, 3.0e-07),
new p2t::Point(1.0e-04, 3.0e-07)
};
p2t::CDT cdt{ polyline };
BOOST_CHECK_THROW(cdt.Triangulate(), std::runtime_error);
for (const auto p : polyline) {
delete p;
}
}
BOOST_AUTO_TEST_CASE(TestbedFilesTest)
{
for (const auto& filename : { "custom.dat", "diamond.dat", "star.dat", "test.dat" }) {