Add CMake files for the unit tests

- Building unit tests is optional, disabled by default to prevent
  the library clients from pulling the dependency on boost
- Add the unit tests to the Github Actions.
- Use boost::filesystem to manipulate paths for better portability
This commit is contained in:
Pierre Dejoue
2020-07-14 18:16:18 +02:00
parent a269fb4743
commit 7125fdb13b
6 changed files with 61 additions and 7 deletions

View File

@@ -1,5 +1,9 @@
#ifndef WIN32
#define BOOST_TEST_DYN_LINK
#endif
#define BOOST_TEST_MODULE Poly2triTest
#include <boost/filesystem/path.hpp>
#include <boost/test/unit_test.hpp>
#include <poly2tri/poly2tri.h>
#include <fstream>
@@ -64,9 +68,13 @@ BOOST_AUTO_TEST_CASE(TestbedFilesTest)
// Load pointset from file
// Parse and tokenize data file
std::string line;
const std::string src(__FILE__); // ../unittest/main.cpp
auto folder = src.substr(0, src.find_last_of('/')) + "/../testbed/data/";
std::ifstream myfile(folder + filename);
#ifndef P2T_BASE_DIR
const auto basedir = boost::filesystem::path(__FILE__).remove_filename().parent_path();
#else
const auto basedir = boost::filesystem::path(P2T_BASE_DIR);
#endif
const auto datafile = basedir / boost::filesystem::path("testbed/data") / boost::filesystem::path(filename);
std::ifstream myfile(datafile.string());
BOOST_REQUIRE(myfile.is_open());
while (!myfile.eof()) {
getline(myfile, line);