mirror of
https://github.com/jhasse/poly2tri.git
synced 2024-11-29 16:53:30 +01:00
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:
parent
a269fb4743
commit
7125fdb13b
8
.github/workflows/linux.yml
vendored
8
.github/workflows/linux.yml
vendored
@ -13,12 +13,13 @@ jobs:
|
|||||||
image: fedora:32
|
image: fedora:32
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: dnf install -yq cmake ninja-build gcc-c++ clang-tools-extra python3-PyYAML
|
run: dnf install -yq cmake ninja-build gcc-c++ clang-tools-extra python3-PyYAML boost-devel
|
||||||
|
|
||||||
- name: Build with GCC
|
- name: Build with GCC
|
||||||
run: |
|
run: |
|
||||||
cmake -Bbuild -GNinja
|
cmake -Bbuild -GNinja -DP2T_BUILD_TESTS=ON
|
||||||
cmake --build build
|
cmake --build build
|
||||||
|
|
||||||
- name: Build with Clang
|
- name: Build with Clang
|
||||||
@ -28,3 +29,6 @@ jobs:
|
|||||||
|
|
||||||
- name: Lint with clang-tidy
|
- name: Lint with clang-tidy
|
||||||
run: python3 /usr/share/clang/run-clang-tidy.py -header-filter=poly2tri -p=build-clang
|
run: python3 /usr/share/clang/run-clang-tidy.py -header-filter=poly2tri -p=build-clang
|
||||||
|
|
||||||
|
- name: Unit tests
|
||||||
|
run: cd build && ctest --output-on-failure
|
||||||
|
@ -1,8 +1,15 @@
|
|||||||
cmake_minimum_required(VERSION 3.6)
|
cmake_minimum_required(VERSION 3.12)
|
||||||
|
|
||||||
project(poly2tri LANGUAGES CXX)
|
project(poly2tri LANGUAGES CXX)
|
||||||
set(CMAKE_CXX_STANDARD 14)
|
set(CMAKE_CXX_STANDARD 14)
|
||||||
|
|
||||||
|
option(P2T_BUILD_TESTS "Build tests" OFF)
|
||||||
|
|
||||||
file(GLOB SOURCES poly2tri/common/*.cc poly2tri/sweep/*.cc)
|
file(GLOB SOURCES poly2tri/common/*.cc poly2tri/sweep/*.cc)
|
||||||
add_library(poly2tri ${SOURCES})
|
add_library(poly2tri ${SOURCES})
|
||||||
target_include_directories(poly2tri INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
|
target_include_directories(poly2tri INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
|
||||||
|
if(P2T_BUILD_TESTS)
|
||||||
|
enable_testing()
|
||||||
|
add_subdirectory(unittest)
|
||||||
|
endif()
|
||||||
|
@ -10,7 +10,7 @@ lib = static_library('poly2tri', sources : [
|
|||||||
])
|
])
|
||||||
|
|
||||||
thread_dep = dependency('threads')
|
thread_dep = dependency('threads')
|
||||||
boost_test_dep = dependency('boost', modules : [ 'unit_test_framework' ], required : false)
|
boost_test_dep = dependency('boost', modules : [ 'filesystem', 'unit_test_framework' ], required : false)
|
||||||
if boost_test_dep.found()
|
if boost_test_dep.found()
|
||||||
test('Unit Test', executable('unittest', [
|
test('Unit Test', executable('unittest', [
|
||||||
'unittest/main.cpp',
|
'unittest/main.cpp',
|
||||||
|
32
unittest/CMakeLists.txt
Normal file
32
unittest/CMakeLists.txt
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# Dependencies
|
||||||
|
if (WIN32)
|
||||||
|
set(Boost_USE_STATIC_LIBS ON)
|
||||||
|
endif()
|
||||||
|
find_package(Boost 1.69 REQUIRED COMPONENTS
|
||||||
|
filesystem
|
||||||
|
unit_test_framework
|
||||||
|
)
|
||||||
|
|
||||||
|
# Build Unit Tests
|
||||||
|
add_executable(test_poly2tri
|
||||||
|
main.cpp
|
||||||
|
TriangleTest.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
target_include_directories(test_poly2tri
|
||||||
|
PRIVATE
|
||||||
|
${Boost_INCLUDE_DIRS}
|
||||||
|
)
|
||||||
|
|
||||||
|
target_compile_definitions(test_poly2tri
|
||||||
|
PRIVATE
|
||||||
|
P2T_BASE_DIR="${PROJECT_SOURCE_DIR}"
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(test_poly2tri
|
||||||
|
PRIVATE
|
||||||
|
poly2tri
|
||||||
|
${Boost_LIBRARIES}
|
||||||
|
)
|
||||||
|
|
||||||
|
add_test(NAME poly2tri COMMAND test_poly2tri)
|
@ -1,3 +1,6 @@
|
|||||||
|
#ifndef WIN32
|
||||||
|
#define BOOST_TEST_DYN_LINK
|
||||||
|
#endif
|
||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
#include <poly2tri/common/shapes.h>
|
#include <poly2tri/common/shapes.h>
|
||||||
|
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
|
#ifndef WIN32
|
||||||
#define BOOST_TEST_DYN_LINK
|
#define BOOST_TEST_DYN_LINK
|
||||||
|
#endif
|
||||||
#define BOOST_TEST_MODULE Poly2triTest
|
#define BOOST_TEST_MODULE Poly2triTest
|
||||||
|
|
||||||
|
#include <boost/filesystem/path.hpp>
|
||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
#include <poly2tri/poly2tri.h>
|
#include <poly2tri/poly2tri.h>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
@ -64,9 +68,13 @@ BOOST_AUTO_TEST_CASE(TestbedFilesTest)
|
|||||||
// Load pointset from file
|
// Load pointset from file
|
||||||
// Parse and tokenize data file
|
// Parse and tokenize data file
|
||||||
std::string line;
|
std::string line;
|
||||||
const std::string src(__FILE__); // ../unittest/main.cpp
|
#ifndef P2T_BASE_DIR
|
||||||
auto folder = src.substr(0, src.find_last_of('/')) + "/../testbed/data/";
|
const auto basedir = boost::filesystem::path(__FILE__).remove_filename().parent_path();
|
||||||
std::ifstream myfile(folder + filename);
|
#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());
|
BOOST_REQUIRE(myfile.is_open());
|
||||||
while (!myfile.eof()) {
|
while (!myfile.eof()) {
|
||||||
getline(myfile, line);
|
getline(myfile, line);
|
||||||
|
Loading…
Reference in New Issue
Block a user