set(PMLTEST_TARGET_NAME library${TARGET_NAME_SEPARATOR}pmltest)

set(SRCS pmltest.cpp)
include_directories(${CAMITK_INCLUDE_DIR}/libraries)
link_directories(${CAMITK_LINK_DIRECTORIES})
add_executable(${PMLTEST_TARGET_NAME} ${SRCS})
target_link_libraries(${PMLTEST_TARGET_NAME} ${PML_DEPENDENCIES}) # both pml and pmlschema are needed
add_dependencies(${PMLTEST_TARGET_NAME} ${PML_DEPENDENCY}) # as pml depends on pmlschema, only pml needed here

# XSD Dependencies
find_package(XSD REQUIRED)
include_directories(${XSD_INCLUDE_DIR})

# in debug mode, add postfix
if (MSVC)
    set_target_properties(${PMLTEST_TARGET_NAME} PROPERTIES DEBUG_POSTFIX ${CAMITK_DEBUG_POSTFIX})
endif()

#----------
# Testing
#----------
set(PMLTEST_BASENAME "pml-${PMLTEST_TARGET_NAME}")
# TODO build one pml file with every tests in it, use it and check that inputFilename-output-pmltest.pml is identical to inputFilename.pml
camitk_init_test(${PMLTEST_TARGET_NAME})
# should pass because lmltest run with no arguments shows usage and exit success
camitk_add_test(PROJECT_NAME ${PMLTEST_BASENAME} TEST_SUFFIX "-")

# should pass because invoking lmltest with a faulty arguments results in printing
# an "Argument error" message (and exit failure)
camitk_add_test(EXECUTABLE_ARGS "-error" 
                PASS_REGULAR_EXPRESSION "Argument errors: "
                PROJECT_NAME ${PMLTEST_BASENAME} TEST_SUFFIX "-")

# should pass because reading a file and writing it back should not modify it (input == output)
if(NOT WIN32)#this test fails on windows7 VM due to missing tweek for -debug
camitk_add_test(EXECUTABLE_ARGS "-i ${CMAKE_CURRENT_SOURCE_DIR}/cube1.pml"
                PASS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cube1.pml 
                PROJECT_NAME ${PMLTEST_BASENAME} TEST_SUFFIX "-")
                
camitk_add_test(EXECUTABLE_ARGS "-i ${CMAKE_CURRENT_SOURCE_DIR}/cube2.pml"
                PASS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cube2.pml 
                PROJECT_NAME ${PMLTEST_BASENAME} TEST_SUFFIX "-")

camitk_add_test(EXECUTABLE_ARGS "-i ${CMAKE_CURRENT_SOURCE_DIR}/cube3.pml"
                PASS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cube3.pml 
                PROJECT_NAME ${PMLTEST_BASENAME} TEST_SUFFIX "-")

camitk_add_test(EXECUTABLE_ARGS "-i ${CMAKE_CURRENT_SOURCE_DIR}/cube4.pml"
                PASS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cube4.pml 
                PROJECT_NAME ${PMLTEST_BASENAME} TEST_SUFFIX "-")
 
camitk_add_test(EXECUTABLE_ARGS "-i ${CMAKE_CURRENT_SOURCE_DIR}/customProperty-example.pml"
                PASS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/customProperty-example.pml 
                PROJECT_NAME ${PMLTEST_BASENAME} TEST_SUFFIX "-")
                
camitk_add_test(EXECUTABLE_ARGS "-i ${CMAKE_CURRENT_SOURCE_DIR}/diaph.pml"
                PASS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/diaph.pml 
                PROJECT_NAME ${PMLTEST_BASENAME} TEST_SUFFIX "-")
                
camitk_add_test(EXECUTABLE_ARGS "-i ${CMAKE_CURRENT_SOURCE_DIR}/human-trunk.pml"
                PASS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/human-trunk.pml 
                PROJECT_NAME ${PMLTEST_BASENAME} TEST_SUFFIX "-")
                
camitk_add_test(EXECUTABLE_ARGS "-i ${CMAKE_CURRENT_SOURCE_DIR}/icosahedron.pml"
                PASS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/icosahedron.pml 
                PROJECT_NAME ${PMLTEST_BASENAME} TEST_SUFFIX "-")
                                
camitk_add_test(EXECUTABLE_ARGS "-i ${CMAKE_CURRENT_SOURCE_DIR}/visage.pml"
                PASS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/visage.pml 
                PROJECT_NAME ${PMLTEST_BASENAME} TEST_SUFFIX "-")

endif()
