macro(mfront_unit_test file)
  set(_WILL_FAIL )
  set(_WARNING_ERROR )
  foreach(_ARG ${ARGN})
    if ( ${_ARG} MATCHES WILL_FAIL)
      set ( _WILL_FAIL ON)
    elseif ( ${_ARG} MATCHES WARNING_ERROR)
      set ( _WARNING_ERROR ON)
    else()
      message(FATAL_ERROR "mfront_unit_test: unsupported option '${_ARG}'")
    endif()
  endforeach(_ARG ${ARGN})
  set(_mfront_file   "${PROJECT_SOURCE_DIR}/mfront/tests/behaviours/unit-tests/${file}.mfront")
  set(_mfront_executable "$<TARGET_FILE:mfront>")
  set(_mfront_args)
  list(APPEND _mfront_args "--no-gui")
  list(APPEND _mfront_args "--search-path=${PROJECT_SOURCE_DIR}/mfront/tests/properties")
  list(APPEND _mfront_args "--search-path=${PROJECT_SOURCE_DIR}/mfront/tests/behaviours")
  list(APPEND _mfront_args "--search-path=${PROJECT_SOURCE_DIR}/mfront/tests/behaviours/unit-tests")
  if(_WARNING_ERROR)
    list(APPEND _mfront_args "-Werror")
  endif(_WARNING_ERROR)
  add_test(NAME mfront-unit-tests-${file}
    COMMAND ${_mfront_executable} ${_mfront_args} ${_mfront_file})
  if((CMAKE_HOST_WIN32) AND (NOT MSYS))
    set_property(TEST mfront-unit-tests-${file}
 	         APPEND PROPERTY ENVIRONMENT "PATH=$<TARGET_FILE_DIR:TFELMFront>\;$<TARGET_FILE_DIR:MFrontLogStream>\;$<TARGET_FILE_DIR:TFELMaterial>\;$<TARGET_FILE_DIR:TFELNUMODIS>\;$<TARGET_FILE_DIR:TFELMath>\;$<TARGET_FILE_DIR:TFELSystem>\;$<TARGET_FILE_DIR:TFELUtilities>\;$<TARGET_FILE_DIR:TFELGlossary>\;$<TARGET_FILE_DIR:TFELException>\;$<TARGET_FILE_DIR:TFELConfig>\;$<TARGET_FILE_DIR:TFELUnicodeSupport>\;$ENV{PATH}")
  endif((CMAKE_HOST_WIN32) AND (NOT MSYS))
  if(_WILL_FAIL)
    set_tests_properties(mfront-unit-tests-${file}
      PROPERTIES WILL_FAIL true)
  endif(_WILL_FAIL)
endmacro(mfront_unit_test file)

mfront_unit_test(ComputeThermalExpansion  WILL_FAIL)
mfront_unit_test(ComputeThermalExpansion2 WILL_FAIL)
mfront_unit_test(ComputeThermalExpansion3 WILL_FAIL)
mfront_unit_test(ComputeThermalExpansion4 WILL_FAIL)
mfront_unit_test(ComputeThermalExpansion5)
mfront_unit_test(ComputeThermalExpansion6 WILL_FAIL)
mfront_unit_test(ComputeStiffnessTensor   WILL_FAIL)
mfront_unit_test(ComputeStiffnessTensor2  WILL_FAIL)
mfront_unit_test(ComputeStiffnessTensor3  WILL_FAIL)
