#
#
# Compiling/running tests

if (use_context)
  add_definitions(-DUSE_CBOR_CONTEXT)
endif()

set ( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${dist_dir}/test )

function (create_test name)
  add_executable ( ${name}_test ${name}_test.c )
  target_link_libraries ( ${name}_test PRIVATE cn-cbor )
  target_include_directories ( ${name}_test PRIVATE ../include )
  add_test ( NAME ${name} COMMAND ${name}_test )
endfunction()

create_test ( cbor )
include ( CTest )

add_executable (cn-test test.c )
target_include_directories ( cn-test PRIVATE ../include )
target_link_libraries ( cn-test PRIVATE cn-cbor )

configure_file(cases.cbor cases.cbor COPYONLY)
configure_file(expected.out expected.out COPYONLY)

add_custom_target(difftest
  COMMAND env MallocStackLogging=true ./cn-test >new.out
  COMMAND diff new.out expected.out
  DEPENDS cn-test
  WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
  COMMENT "generate differences between actual and expected output")
