cmake_minimum_required(VERSION 3.5)

project(shapetor
	VERSION 0.0.0
	DESCRIPTION
	"Tool for manipulating shape objects"
	LANGUAGES CXX
)

find_package(Boost COMPONENTS program_options)

add_executable(
	shapetor
	./shapetor.cpp
	./shapetor-options.hpp
	./shapetor-options.cpp
)
target_include_directories(shapetor PRIVATE . ${Boost_INCLUDE_DIRS})
target_link_libraries(
	shapetor
	PRIVATE project_warnings
		${Boost_LIBRARIES}
		stdc++fs
		cdt2d
)
target_compile_features(shapetor PRIVATE cxx_std_17)

# tests
add_test(NAME shapetor-help COMMAND ./shapetor --help)
add_test(NAME shapetor-version	COMMAND ./shapetor --version)
add_test(NAME shapetor-no-command COMMAND ./shapetor)

set(DATA_PATH "${CMAKE_SOURCE_DIR}/data")
set(	
	POLYGONS
	"${DATA_PATH}/polygons/square-with-a-diamond-hole.polygon"
	"${DATA_PATH}/polygons/reflex-edges-and-colinear.polygon"
	"${DATA_PATH}/polygons/plane.polygon"
	"${DATA_PATH}/polygons/leaf.polygon"
)

# representations generation from polygons
foreach(POLYGON ${POLYGONS})
	get_filename_component(BASENAME ${POLYGON} NAME)
	string(REGEX REPLACE "\.polygon$" "" NO_EXT ${BASENAME})

	set(BINARY_REP "${NO_EXT}-binary.png")
	add_test(
		NAME "shapetor-${NO_EXT}-binary"
		COMMAND
			./shapetor
			convert
			--force
			--to=binary
			${POLYGON}
			${BINARY_REP}
	)

	set(CDT_INFO from-binary-cdt010-k01)
	set(CDT_REP "${NO_EXT}-${CDT_INFO}.png")
	add_test(
		NAME "shapetor-${NO_EXT}-${CDT_INFO}.png"
		COMMAND
			./shapetor
			convert
			--force
			--from=binary
			--to=cdt2d
			--delta=10
			-k 1
			${BINARY_REP}
			${CDT_REP}
	)

	set(CDT_INFO from-binary-cdt010-k02)
	set(CDT_REP "${NO_EXT}-${CDT_INFO}.png")
	add_test(
		NAME "shapetor-${NO_EXT}-${CDT_INFO}.png"
		COMMAND
			./shapetor
			convert
			--force
			--from=binary
			--to=cdt2d
			--delta=10
			-k 2
			${BINARY_REP}
			${CDT_REP}
	)

	set(CDT_INFO from-binary-cdt100-k02)
	set(CDT_REP "${NO_EXT}-${CDT_INFO}.png")
	add_test(
		NAME "shapetor-${NO_EXT}-${CDT_INFO}.png"
		COMMAND
			./shapetor
			convert
			--force
			--from=binary
			--to=cdt2d
			--delta=100
			-k 2
			${BINARY_REP}
			${CDT_REP}
	)

	set(CDT_INFO from-binary-cdt010-k03)
	set(CDT_REP "${NO_EXT}-${CDT_INFO}.png")
	add_test(
		NAME "shapetor-${NO_EXT}-${CDT_INFO}.png"
		COMMAND
			./shapetor
			convert
			--force
			--from=binary
			--to=cdt2d
			--delta=10
			-k 3
			${BINARY_REP}
			${CDT_REP}
	)

endforeach(POLYGON)

set_tests_properties(shapetor-no-command PROPERTIES WILL_FAIL TRUE)
